diff --git a/README.md b/README.md index 382f75b..763612e 100644 --- a/README.md +++ b/README.md @@ -49,6 +49,159 @@ npx hardhat deploy --network localhost Hardhat re-uses old deployments, to force re-deploy add the `--reset` flag above + +# Warp Instructions + +Clone the warp transpiler repository +``` +git clone git@github.com:NethermindEth/warp.git +cd warp +``` + +## Launch the test network + +Check if this is the right docker file contents (not commited to develop on warp yet) + +``` +version: '3.8' + +services: + warp: + image: nethermind/warp:v2.5.1 + links: + - devnet + volumes: + - .:/dapp + environment: + - STARKNET_NETWORK=alpha-goerli + - STARKNET_WALLET=starkware.starknet.wallets.open_zeppelin.OpenZeppelinAccount + - STARKNET_GATEWAY_URL=http://devnet:5050 + - STARKNET_FEEDER_GATEWAY_URL=http://devnet:5050 + entrypoint: tail -F anything + + devnet: + image: shardlabs/starknet-devnet:0.4.4-seed0 + ports: + - '5050:5050' +``` + +Bring up docker containers + +``` +docker-compose up +``` + +## Bash into docker +Find the container id and bash into the warp container. + +```shell +➜ warp git:(develop) ✗ docker ps -a +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +9f156f579a4e nethermind/warp:v2.5.1 "tail -F anything" 24 hours ago Up 24 seconds warp2-warp-1 +69c639ee81e8 shardlabs/starknet-devnet:0.4.4-seed0 "starknet-devnet --h…" 24 hours ago Up 24 seconds 0.0.0.0:5050->5050/tcp, :::5050->5050/tcp warp2-devnet-1 +➜ warp2 git:(develop) ✗ docker exec -it 9f156f579a4e /bin/bash +``` + +All interactions here on are carried out in the docker environment. + +### Create an account + +You need to create an account and fund it and deploy it before being able to deploy contracts/test. + +``` +starknet new_account --feeder_gateway_url http://devnet:5050 --gateway_url http://devnet:5050 +``` + +Add some tokens to your address. +``` +curl http://devnet:5050/mint -H "Content-Type: application/json" -d '{"amount": 1000000000000000000, "address": ""}' +``` + +Deploy the account + +``` +starknet deploy_account --feeder_gateway_url http://devnet:5050 --gateway_url http://devnet:5050 +``` + +If you get a below error + +``` +Error: +BadRequest: HTTP error ocurred. Status: 500. +Text: {"code":"StarknetErrorCode.UNINITIALIZED_CONTRACT","message":"Requested contract +address 0x7b66ab9b86126568a44856c1a548977b11ad67f18c760b02d83e9ed14bca134 is not deployed."} +``` + +This could happen if your account was not funded. Try re-funding and re-deploying but this needs +a force flag. + +``` +starknet deploy_account --feeder_gateway_url http://devnet:5050 --gateway_url http://devnet:5050 --force +``` + + +## Transpiling/Compiling/Deploying + +## Transpiling contracts + +Copy the `contracts/` directory from `evm-placeholder-verification` to `exampleContracts/` in warp. Ex + + + +``` +warp transpile exampleContracts/ERC20.sol +``` + +Transpilation outputs to `warp_output/exampleContracts/ERC20.sol/` or similar directories based on +your contract name. + +## Compile + +``` +root@9f156f579a4e:/dapp# warp compile warp_output/exampleContracts/ERC20.sol/WARP.cairo +Running starknet compile with cairoPath /usr/src/warp-stable +starknet-compile output written to warp_output/exampleContracts/ERC20.sol/WARP_compiled.json +``` +Compilation outputs a json file + +To transpile the base verifier , copy the `contracts/` directory +from `evm-placeholder-verification` to `exampleContracts/` in warp. + +### Deploy + +Deployment on testnet is done via the following two steps + +1. Create a class hash +``` + starknet declare --contract WARP_compiled.json --feeder_gateway_url http://devnet:5050 --gateway_url http://devnet:5050 +``` + +2. Deploy +``` +starknet deploy --class_hash 0x5c341f52e9284d3a3925440ce43d1a825962d26e82731997cd3b3aedec81b3f --gateway_url http://devnet:5050 --feeder_gateway_url http://devnet:5050 +``` + +### Invoking/Calling contracts + +Invoking contracts involves state changes (working assumption) + +``` +starknet invoke --address 0x077487db16639d5c4a0c66f66ccda78a54ebaed04d9dd4b4f4d87d0adfd49d5b \ +--abi warp_output/exampleContracts/TestWarp.sol/TestWarp_abi.json \ +--function fmul_51a017f7 --inputs 10 0 10 0 10 0 --feeder_gateway_url http://devnet:5050 --gateway_url http://devnet:5050 +``` + + +Calling contracts does not involve state changes(working assumption) +``` +starknet call --address 0x01f54865c30ee9b8f7f0b841b45990772ef04ca479592aa7073b3dd518cf2754 --abi \ +warp_output/exampleContracts/TestWarp.sol/TestWarp_abi.json \ +--function fmul_51a017f7 --inputs 10 0 10 0 3 0 --feeder_gateway_url http://devnet:5050 --gateway_url http://devnet:5050 +``` + + + + ## Community Issue reports are preferred to be done with Github Issues in here: https://github.com/NilFoundation/evm-placeholder-verification/issues. diff --git a/contracts/algebra/bn254.sol b/contracts/algebra/bn254.sol index dca7dee..83934e5 100644 --- a/contracts/algebra/bn254.sol +++ b/contracts/algebra/bn254.sol @@ -25,139 +25,4 @@ import {types} from "../types.sol"; library bn254_crypto { uint256 constant p_mod = 21888242871839275222246405745257275088696311157297823662689037894645226208583; uint256 constant r_mod = 21888242871839275222246405745257275088548364400416034343698204186575808495617; - - // Perform a modular exponentiation. This method is ideal for small exponents (~64 bits or less), as - // it is cheaper than using the pow precompile - function pow_small(uint256 base, uint256 exponent, uint256 modulus) internal pure returns (uint256) { - uint256 result = 1; - uint256 input = base; - uint256 count = 1; - - assembly { - let endpoint := add(exponent, 0x01) - for {} lt(count, endpoint) {count := add(count, count)} - { - if and(exponent, count) { - result := mulmod(result, input, modulus) - } - input := mulmod(input, input, modulus) - } - } - - return result; - } - - function invert(uint256 fr) internal view returns (uint256) { - uint256 output; - bool success; - uint256 p = r_mod; - assembly { - let mPtr := mload(0x40) - mstore(mPtr, 0x20) - mstore(add(mPtr, 0x20), 0x20) - mstore(add(mPtr, 0x40), 0x20) - mstore(add(mPtr, 0x60), fr) - mstore(add(mPtr, 0x80), sub(p, 2)) - mstore(add(mPtr, 0xa0), p) - success := staticcall(gas(), 0x05, mPtr, 0xc0, 0x00, 0x20) - output := mload(0x00) - } - require(success, "pow precompile call failed!"); - return output; - } - - function new_g1(uint256 x, uint256 y) internal pure returns (types.g1_point memory) { - uint256 xValue; - uint256 yValue; - assembly { - xValue := mod(x, r_mod) - yValue := mod(y, r_mod) - } - return types.g1_point(xValue, yValue); - } - - function new_g2(uint256 x0, uint256 x1, uint256 y0, uint256 y1) internal pure returns (types.g2_point memory) { - return types.g2_point(x0, x1, y0, y1); - } - - function P1() internal pure returns (types.g1_point memory) { - return types.g1_point(1, 2); - } - - function P2() internal pure returns (types.g2_point memory) { - return types.g2_point({ - x0 : 0x198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c2, - x1 : 0x1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed, - y0 : 0x090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b, - y1 : 0x12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa - }); - } - - - /// Evaluate the following pairing product: - /// e(a1, a2).e(-b1, b2) == 1 - function pairingProd2( - types.g1_point memory a1, - types.g2_point memory a2, - types.g1_point memory b1, - types.g2_point memory b2 - ) internal view returns (bool) { - validateG1Point(a1); - validateG1Point(b1); - bool success; - uint256 out; - assembly { - let mPtr := mload(0x40) - mstore(mPtr, mload(a1)) - mstore(add(mPtr, 0x20), mload(add(a1, 0x20))) - mstore(add(mPtr, 0x40), mload(a2)) - mstore(add(mPtr, 0x60), mload(add(a2, 0x20))) - mstore(add(mPtr, 0x80), mload(add(a2, 0x40))) - mstore(add(mPtr, 0xa0), mload(add(a2, 0x60))) - - mstore(add(mPtr, 0xc0), mload(b1)) - mstore(add(mPtr, 0xe0), mload(add(b1, 0x20))) - mstore(add(mPtr, 0x100), mload(b2)) - mstore(add(mPtr, 0x120), mload(add(b2, 0x20))) - mstore(add(mPtr, 0x140), mload(add(b2, 0x40))) - mstore(add(mPtr, 0x160), mload(add(b2, 0x60))) - success := staticcall( - gas(), - 8, - mPtr, - 0x180, - 0x00, - 0x20 - ) - out := mload(0x00) - } - require(success, "Pairing check failed!"); - return (out != 0); - } - - /** - * validate the following: - * x != 0 - * y != 0 - * x < p - * y < p - * y^2 = x^3 + 3 mod p - */ - function validateG1Point(types.g1_point memory point) internal pure { - bool is_well_formed; - uint256 p = p_mod; - assembly { - let x := mload(point) - let y := mload(add(point, 0x20)) - - is_well_formed := and( - and( - and(lt(x, p), lt(y, p)), - not(or(iszero(x), iszero(y))) - ), - eq(mulmod(y, y, p), addmod(mulmod(x, mulmod(x, x, p), p), 3, p)) - ) - } - require(is_well_formed, "Bn254: G1 point not on curve, or is malformed"); - } } \ No newline at end of file diff --git a/contracts/algebra/field.sol b/contracts/algebra/field.sol index cf0bc63..7ec8467 100644 --- a/contracts/algebra/field.sol +++ b/contracts/algebra/field.sol @@ -23,22 +23,6 @@ pragma solidity >=0.8.4; * @dev Provides some basic methods to compute bilinear pairings, construct group elements and misc numerical methods */ library field { - // Perform a modular exponentiation. This method is ideal for small exponents (~64 bits or less), as - // it is cheaper than using the pow precompile - function pow_small(uint256 base, uint256 exponent, uint256 modulus) - internal pure returns (uint256 result) { - result = 1; - assembly { - for {let count := 1} - lt(count, add(exponent, 0x01)) - {count := shl(1, count)} { - if and(exponent, count) { - result := mulmod(result, base, modulus) - } - base := mulmod(base, base, modulus) - } - } - } /// @dev Modular inverse of a (mod p) using euclid. /// 'a' and 'p' must be co-prime. @@ -66,106 +50,108 @@ library field { function fadd(uint256 a, uint256 b, uint256 modulus) internal pure returns (uint256 result) { - assembly { - result := addmod(a, b, modulus) - } + result = addmod(a, b, modulus); +// assembly { +// result := addmod(a, b, modulus) +// } } + function fsub(uint256 a, uint256 b, uint256 modulus) internal pure returns (uint256 result) { - assembly { - result := addmod(a, sub(modulus, b), modulus) - } + result =addmod(a , (modulus - b), modulus); +// assembly { +// result := addmod(a, sub(modulus, b), modulus) +// } } function fmul(uint256 a, uint256 b, uint256 modulus) internal pure returns (uint256 result) { - assembly { - result := mulmod(a, b, modulus) - } + result = mulmod(a, b, modulus); +// assembly { +// result := mulmod(a, b, modulus) +// } } function fdiv(uint256 a, uint256 b, uint256 modulus) internal pure returns (uint256 result) { uint256 b_inv = invmod(b, modulus); - assembly { - result := mulmod(a, b_inv, modulus) - } + result =mulmod(a, b_inv, modulus); +// assembly { +// result := mulmod(a, b_inv, modulus) +// } } // See https://ethereum.stackexchange.com/questions/8086/logarithm-math-operation-in-solidity function log2(uint256 x) internal pure returns (uint256 y){ - assembly { - let arg := x - x := sub(x, 1) - x := or(x, div(x, 0x02)) - x := or(x, div(x, 0x04)) - x := or(x, div(x, 0x10)) - x := or(x, div(x, 0x100)) - x := or(x, div(x, 0x10000)) - x := or(x, div(x, 0x100000000)) - x := or(x, div(x, 0x10000000000000000)) - x := or(x, div(x, 0x100000000000000000000000000000000)) - x := add(x, 1) - let m := mload(0x40) - mstore(m, 0xf8f9cbfae6cc78fbefe7cdc3a1793dfcf4f0e8bbd8cec470b6a28a7a5a3e1efd) - mstore(add(m, 0x20), 0xf5ecf1b3e9debc68e1d9cfabc5997135bfb7a7a3938b7b606b5b4b3f2f1f0ffe) - mstore(add(m, 0x40), 0xf6e4ed9ff2d6b458eadcdf97bd91692de2d4da8fd2d0ac50c6ae9a8272523616) - mstore(add(m, 0x60), 0xc8c0b887b0a8a4489c948c7f847c6125746c645c544c444038302820181008ff) - mstore(add(m, 0x80), 0xf7cae577eec2a03cf3bad76fb589591debb2dd67e0aa9834bea6925f6a4a2e0e) - mstore(add(m, 0xa0), 0xe39ed557db96902cd38ed14fad815115c786af479b7e83247363534337271707) - mstore(add(m, 0xc0), 0xc976c13bb96e881cb166a933a55e490d9d56952b8d4e801485467d2362422606) - mstore(add(m, 0xe0), 0x753a6d1b65325d0c552a4d1345224105391a310b29122104190a110309020100) - mstore(0x40, add(m, 0x100)) - let magic := 0x818283848586878898a8b8c8d8e8f929395969799a9b9d9e9faaeb6bedeeff - let shift := 0x100000000000000000000000000000000000000000000000000000000000000 - let a := div(mul(x, magic), shift) - y := div(mload(add(m, sub(255, a))), shift) - y := add(y, mul(256, gt(arg, 0x8000000000000000000000000000000000000000000000000000000000000000))) - } + //TODO : Check for a way to do this in pure cairo instead of solidity asm +// assembly { +// let arg := x +// x := sub(x, 1) +// x := or(x, div(x, 0x02)) +// x := or(x, div(x, 0x04)) +// x := or(x, div(x, 0x10)) +// x := or(x, div(x, 0x100)) +// x := or(x, div(x, 0x10000)) +// x := or(x, div(x, 0x100000000)) +// x := or(x, div(x, 0x10000000000000000)) +// x := or(x, div(x, 0x100000000000000000000000000000000)) +// x := add(x, 1) +// let m := mload(0x40) +// mstore(m, 0xf8f9cbfae6cc78fbefe7cdc3a1793dfcf4f0e8bbd8cec470b6a28a7a5a3e1efd) +// mstore(add(m, 0x20), 0xf5ecf1b3e9debc68e1d9cfabc5997135bfb7a7a3938b7b606b5b4b3f2f1f0ffe) +// mstore(add(m, 0x40), 0xf6e4ed9ff2d6b458eadcdf97bd91692de2d4da8fd2d0ac50c6ae9a8272523616) +// mstore(add(m, 0x60), 0xc8c0b887b0a8a4489c948c7f847c6125746c645c544c444038302820181008ff) +// mstore(add(m, 0x80), 0xf7cae577eec2a03cf3bad76fb589591debb2dd67e0aa9834bea6925f6a4a2e0e) +// mstore(add(m, 0xa0), 0xe39ed557db96902cd38ed14fad815115c786af479b7e83247363534337271707) +// mstore(add(m, 0xc0), 0xc976c13bb96e881cb166a933a55e490d9d56952b8d4e801485467d2362422606) +// mstore(add(m, 0xe0), 0x753a6d1b65325d0c552a4d1345224105391a310b29122104190a110309020100) +// mstore(0x40, add(m, 0x100)) +// let magic := 0x818283848586878898a8b8c8d8e8f929395969799a9b9d9e9faaeb6bedeeff +// let shift := 0x100000000000000000000000000000000000000000000000000000000000000 +// let a := div(mul(x, magic), shift) +// y := div(mload(add(m, sub(255, a))), shift) +// y := add(y, mul(256, gt(arg, 0x8000000000000000000000000000000000000000000000000000000000000000))) +// } } function expmod_static(uint256 base, uint256 exponent, uint256 modulus) internal view returns (uint256 res) { - assembly { - let p := mload(0x40) - mstore(p, 0x20) // Length of Base. - mstore(add(p, 0x20), 0x20) // Length of Exponent. - mstore(add(p, 0x40), 0x20) // Length of Modulus. - mstore(add(p, 0x60), base) // Base. - mstore(add(p, 0x80), exponent) // Exponent. - mstore(add(p, 0xa0), modulus) // Modulus. - // Call modexp precompile. - if iszero(staticcall(gas(), 0x05, p, 0xc0, p, 0x20)) { - revert(0, 0) - } - res := mload(p) - } + //TODO check if you can do this in cairo +// assembly { +// let p := mload(0x40) +// mstore(p, 0x20) // Length of Base. +// mstore(add(p, 0x20), 0x20) // Length of Exponent. +// mstore(add(p, 0x40), 0x20) // Length of Modulus. +// mstore(add(p, 0x60), base) // Base. +// mstore(add(p, 0x80), exponent) // Exponent. +// mstore(add(p, 0xa0), modulus) // Modulus. +// // Call modexp precompile. +// if iszero(staticcall(gas(), 0x05, p, 0xc0, p, 0x20)) { +// revert(0, 0) +// } +// res := mload(p) +// } } function inverse_static(uint256 val, uint256 modulus) internal view returns (uint256 res) { // return expmod_static(val, modulus - 2, modulus); // code below similar to this call - assembly { - let p := mload(0x40) - mstore(p, 0x20) // Length of Base. - mstore(add(p, 0x20), 0x20) // Length of Exponent. - mstore(add(p, 0x40), 0x20) // Length of Modulus. - mstore(add(p, 0x60), val) // Base. - mstore(add(p, 0x80), sub(modulus, 0x02)) // Exponent. - mstore(add(p, 0xa0), modulus) // Modulus. - // Call modexp precompile. - if iszero(staticcall(gas(), 0x05, p, 0xc0, p, 0x20)) { - revert(0, 0) - } - res := mload(p) - } - } - - function double(uint256 val, uint256 modulus) internal pure returns (uint256 result) { - assembly { - result := mulmod(2, val, modulus) - } + //TODO : Check cairo implementation +// assembly { +// let p := mload(0x40) +// mstore(p, 0x20) // Length of Base. +// mstore(add(p, 0x20), 0x20) // Length of Exponent. +// mstore(add(p, 0x40), 0x20) // Length of Modulus. +// mstore(add(p, 0x60), val) // Base. +// mstore(add(p, 0x80), sub(modulus, 0x02)) // Exponent. +// mstore(add(p, 0xa0), modulus) // Modulus. +// // Call modexp precompile. +// if iszero(staticcall(gas(), 0x05, p, 0xc0, p, 0x20)) { +// revert(0, 0) +// } +// res := mload(p) +// } } } diff --git a/contracts/algebra/polynomial.sol b/contracts/algebra/polynomial.sol index 9ec4f45..ad06adc 100644 --- a/contracts/algebra/polynomial.sol +++ b/contracts/algebra/polynomial.sol @@ -23,6 +23,7 @@ import "./field.sol"; import "../basic_marshalling.sol"; + /** * @title Turbo Plonk polynomial evaluation * @dev Implementation of Turbo Plonk's polynomial evaluation algorithms @@ -35,7 +36,7 @@ library polynomial { function multiply_poly_on_coeff(uint256[] memory coeffs, uint256 mul, uint256 modulus) internal pure{ for(uint256 i = 0; i < coeffs.length; i++){ - coeffs[i] = mulmod(coeffs[i], mul, modulus); + coeffs[i] = mulmod(coeffs[i], mul, modulus); } } @@ -50,292 +51,20 @@ library polynomial { function evaluate(uint256[] memory coeffs, uint256 point, uint256 modulus) internal pure returns (uint256) { uint256 result; - assembly { - let cur_coefs := add(coeffs, mul(mload(coeffs), 0x20)) - for { } gt(cur_coefs, coeffs) {} { - result := addmod(mulmod(result, point, modulus), - mload(cur_coefs), // (i - 1) * 32 - modulus) - cur_coefs := sub(cur_coefs, 0x20) - } - } - return result; - } - - function evaluate_by_ptr(bytes calldata blob, uint256 offset, uint256 len, uint256 point, uint256 modulus) - internal pure returns (uint256) { - uint256 result; - for (uint256 i = len; i > 0;) { - assembly { - result := addmod(mulmod(result, point, modulus), - calldataload(add(add(blob.offset, offset), shl(0x05, sub(i, 0x01)))), // (i - 1) * 32 - modulus) - } - unchecked{ i--; } + for (uint i=coeffs.length -1; i>=0 ; i--){ + uint256 mul_m = mulmod(result,point,modulus); + result = addmod(mul_m,coeffs[i],modulus); } // assembly { -// let i := sub(add(blob.offset, add(offset, mul(len, 0x20))), 0x20) -// let coeff := sub(add(blob.offset, offset), 0x20) -// for { } gt(coefsPtr, coeff) {} { -// result := addmod(mulmod(result, point, modulus), calldataload(coefsPtr), modulus) -// coefsPtr := sub(coefsPtr, 0x20) +// let cur_coefs := add(coeffs, mul(mload(coeffs), 0x20) +// ) +// for { } gt(cur_coefs, coeffs) {} { +// result := addmod(mulmod(result, point, modulus), +// mload(cur_coefs), // (i - 1) * 32 +// modulus) +// cur_coefs := sub(cur_coefs, 0x20) // } // } return result; } - - function add_poly(uint256[] memory a, uint256[] memory b, uint256 modulus) - internal pure returns (uint256[] memory result) { - if (a.length < b.length) { - result = new uint256[](b.length); - assembly { - let i := 0 - for {} lt(i, mul(mload(a), 0x20)) { - i := add(i, 0x20) - } { - mstore( - add(add(result, 0x20), i), - addmod(mload(add(add(a, 0x20), i)), mload(add(add(b, 0x20), i)), modulus) - ) - } - for {} lt(i, mul(mload(b), 0x20)) { - i := add(i, 0x20) - } { - mstore( - add(add(result, 0x20), i), - mload(add(b, add(0x20, i))) - ) - } - } - } else { - result = new uint256[](a.length); - assembly { - let i := 0 - for {} lt(i, mul(mload(b), 0x20)) { - i := add(i, 0x20) - } { - mstore( - add(add(result, 0x20), i), - addmod(mload(add(add(a, 0x20), i)), mload(add(add(b, 0x20), i)), modulus) - ) - } - for {} lt(i, mul(mload(a), 0x20)) { - i := add(i, 0x20) - } { - mstore( - add(add(result, 0x20), i), - mload(add(a, add(0x20, i))) - ) - } - } - } - } - - function mul_poly(uint256[] memory a, uint256[] memory b, uint256 modulus) - internal pure returns (uint256[] memory result) { - result = new uint256[](a.length + b.length - 1); - for (uint256 i = 0; i < b.length;) { - for (uint256 j = 0; j < a.length;) { - assembly { - mstore(add(add(result, 0x20), mul(add(j, i), 0x20)), - addmod(mload(add(add(result, 0x20), mul(add(j, i), 0x20))), - mulmod(mload(add(add(a, 0x20), mul(j, 0x20))), - mload(add(add(b, 0x20), mul(i, 0x20))), modulus), - modulus) - ) - } - unchecked{ j++; } - } - unchecked{ i++; } - } - return result; - } - - function lagrange_interpolation( - uint256[] memory xs, - uint256[] memory fxs, - uint256 modulus - ) internal pure returns (uint256[] memory result) { - require(xs.length == fxs.length); - uint256 len = fxs.length; - for (uint256 i = 0; i < len;) { - uint256[] memory thisPoly = new uint256[](1); - thisPoly[0] = 1; - for (uint256 j = 0; j < len;) { - if (i == j) { - continue; - } - uint256 denominator = field.fsub(xs[i], xs[j], modulus); - uint256[] memory thisTerm = new uint256[](2); - thisTerm[0] = field.fdiv(modulus - xs[j], denominator, modulus); - thisTerm[1] = field.fdiv(uint256(1), denominator, modulus); - thisPoly = mul_poly(thisPoly, thisTerm, modulus); - unchecked{ j++; } - } - if (fxs.length + 1 >= i) { - uint256[] memory multiple = new uint256[](1); - multiple[0] = fxs[i]; - thisPoly = mul_poly(thisPoly, multiple, modulus); - } - result = add_poly(result, thisPoly, modulus); - unchecked { i++; } - } - } - - function interpolate_evaluate_by_2_points_neg_x(uint256 x, uint256 dblXInv, uint256 fX, uint256 fMinusX, - uint256 evalPoint, uint256 modulus - ) internal pure returns (uint256 result) { - assembly { - result := addmod( - mulmod( - mulmod( - addmod(fX, sub(modulus, fMinusX), modulus), - dblXInv, - modulus - ), - addmod(evalPoint, sub(modulus, x), modulus), - modulus - ), - fX, - modulus - ) - } - } - - function interpolate_evaluate_by_2_points(uint256[] memory x, uint256[] memory fx, uint256 eval_point, uint256 modulus) - internal view returns (uint256 result) { - require(x.length == 2, "x length is not equal to 2"); - require(fx.length == 2, "fx length is not equal to 2"); - uint256 x2_minus_x1_inv = field.inverse_static((x[1] + (modulus - x[0])) % modulus, modulus); - assembly { - let y2_minus_y1 := addmod( - mload(add(fx, 0x40)), - sub(modulus, mload(add(fx, 0x20))), - modulus - ) - let x3_minus_x1 := addmod( - eval_point, - sub(modulus, mload(add(x, 0x20))), - modulus - ) - result := addmod( - mulmod( - mulmod(y2_minus_y1, x2_minus_x1_inv, modulus), - x3_minus_x1, - modulus - ), - mload(add(fx, 0x20)), - modulus - ) - } - } - - function interpolate_evaluate(uint256[] memory x, uint256[] memory fx, uint256 eval_point, uint256 modulus) - internal view returns (uint256) { - if (x.length == 1 && fx.length == 1) { - return fx[0]; - } - if (x.length == 2) { - return interpolate_evaluate_by_2_points(x, fx, eval_point, modulus); - } - require(false, "unsupported number of points for interpolation"); - return 0; - } - - function interpolate_by_2_points(uint256[] memory x, uint256[] memory fx, uint256 modulus) - internal view returns (uint256[] memory result) { - require(x.length == 2, "x length is not equal to 2"); - require(fx.length == 2, "fx length is not equal to 2"); - uint256 x2_minus_x1_inv = field.inverse_static((x[1] + (modulus - x[0])) % modulus, modulus); - result = new uint256[](2); - assembly { - let y2_minus_y1 := addmod(mload(add(fx, 0x40)), sub(modulus, mload(add(fx, 0x20))), modulus) - let a := mulmod(y2_minus_y1, x2_minus_x1_inv, modulus) - let a_mul_x1_neg := sub(modulus, mulmod(a, mload(add(x, 0x20)), modulus)) - let b := addmod(mload(add(fx, 0x20)), a_mul_x1_neg, modulus) - mstore(add(result, 0x20), b) - mstore(add(result, 0x40), a) - } - } - - function interpolate(uint256[] memory x, uint256[] memory fx, uint256 modulus) - internal view returns (uint256[] memory result) { - if (x.length == 1 && fx.length == 1) { - result = new uint256[](1); - result[0] = fx[0]; - return result; - } else if (x.length == 2) { - result = interpolate_by_2_points(x, fx, modulus); - return result; - } else { - require(false, "unsupported number of points for interpolation"); - } - } - - function interpolate_by_2_points(bytes calldata blob, uint256[] memory x, uint256 fx_offset, uint256 modulus) - internal view returns (uint256[] memory result) { - require(x.length == 2, "x length is not equal to 2"); - require(basic_marshalling.get_length(blob, fx_offset) == 2, "fx length is not equal to 2"); - uint256 x2_minus_x1_inv = field.inverse_static((x[1] + (modulus - x[0])) % modulus, modulus); - result = new uint256[](2); - - assembly { - let y2_minus_y1 := addmod( - calldataload( - add(blob.offset, add(add(fx_offset, LENGTH_OCTETS), 0x20)) - ), - sub( - modulus, - calldataload( - add(blob.offset, add(fx_offset, LENGTH_OCTETS)) - ) - ), - modulus - ) - let a := mulmod(y2_minus_y1, x2_minus_x1_inv, modulus) - let a_mul_x1_neg := sub( - modulus, - mulmod(a, mload(add(x, 0x20)), modulus) - ) - let b := addmod( - calldataload(add(blob.offset, add(fx_offset, LENGTH_OCTETS))), - a_mul_x1_neg, - modulus - ) - mstore(add(result, 0x20), b) - mstore(add(result, 0x40), a) - } - } - - function interpolate(bytes calldata blob, uint256[] memory x, uint256 fx_offset, uint256 modulus) - internal view returns (uint256[] memory result) { - if (x.length == 1 && basic_marshalling.get_length(blob, fx_offset) == 1) { - result = new uint256[](1); - result[0] = basic_marshalling.get_i_uint256_from_vector(blob, fx_offset, 0); - return result; - } else if (x.length == 2) { - result = interpolate_by_2_points(blob, x, fx_offset, modulus); - return result; - } else if (x.length == 3) { - uint256 y0 = field.fdiv(basic_marshalling.get_i_uint256_from_vector(blob, fx_offset, 0), field.fmul(field.fsub(x[0], x[1],modulus), field.fsub(x[0], x[2],modulus), modulus), modulus); - uint256 y1 = field.fdiv(basic_marshalling.get_i_uint256_from_vector(blob, fx_offset, 1), field.fmul(field.fsub(x[1], x[0],modulus), field.fsub(x[1], x[2],modulus), modulus), modulus); - uint256 y2 = field.fdiv(basic_marshalling.get_i_uint256_from_vector(blob, fx_offset, 2), field.fmul(field.fsub(x[2], x[0],modulus), field.fsub(x[2], x[1],modulus), modulus), modulus); - - result = new uint256[](3); - assembly { - let x1 := mulmod(y0, mulmod(mload(add(x, 0x40)), mload(add(x, 0x60)), modulus), modulus) - let x2 := mulmod(y1, mulmod(mload(add(x, 0x20)), mload(add(x, 0x60)), modulus), modulus) - let x3 := mulmod(y2, mulmod(mload(add(x, 0x20)), mload(add(x, 0x40)), modulus), modulus) - mstore(add(result, 0x20), addmod(addmod(x1, x2, modulus), x3, modulus)) - - x1 := mulmod(y0, sub(modulus, addmod(mload(add(x, 0x40)), mload(add(x, 0x60)), modulus)), modulus) - x2 := mulmod(y1, sub(modulus, addmod(mload(add(x, 0x20)), mload(add(x, 0x60)), modulus)), modulus) - x3 := mulmod(y2, sub(modulus, addmod(mload(add(x, 0x20)), mload(add(x, 0x40)), modulus)), modulus) - mstore(add(result, 0x40), addmod(addmod(x1, x2, modulus), x3, modulus)) - mstore(add(result, 0x60), addmod(addmod(y0, y1, modulus), y2, modulus)) - } - return result; - } - require(false, "unsupported number of points for interpolation"); - } } diff --git a/contracts/basic_marshalling.sol b/contracts/basic_marshalling.sol index d5c6475..f764725 100644 --- a/contracts/basic_marshalling.sol +++ b/contracts/basic_marshalling.sol @@ -19,6 +19,7 @@ pragma solidity >=0.8.4; library basic_marshalling { + uint256 constant WORD_SIZE = 4; uint256 constant LENGTH_OCTETS = 8; // 256 - 8 * LENGTH_OCTETS uint256 constant LENGTH_RESTORING_SHIFT = 0xc0; @@ -33,31 +34,6 @@ library basic_marshalling { unchecked { result_offset = offset + LENGTH_OCTETS_ADD_32; } } - function get_octet_vector_32_be(bytes calldata blob, uint256 offset) - internal pure returns (bytes32 result) { - assembly { - result := mload(add(add(blob.offset, offset), LENGTH_OCTETS)) - } - } - - // TODO: general case - function skip_vector_of_octet_vectors_32_be(bytes calldata blob, uint256 offset) - internal pure returns (uint256 result_offset) { - unchecked { result_offset = offset + LENGTH_OCTETS; } - assembly { - result_offset := add( - result_offset, - mul( - LENGTH_OCTETS_ADD_32, - shr( - LENGTH_RESTORING_SHIFT, - calldataload(add(blob.offset, offset)) - ) - ) - ) - } - } - function skip_uint256_be(uint256 offset) internal pure returns (uint256 result_offset) { unchecked { result_offset = offset + 32; } @@ -65,60 +41,48 @@ library basic_marshalling { function skip_vector_of_uint256_be(bytes calldata blob, uint256 offset) internal pure returns (uint256 result_offset) { - assembly { - result_offset := add( - add( - offset, - mul( - 0x20, - shr( - LENGTH_RESTORING_SHIFT, - calldataload(add(blob.offset, offset)) - ) - ) - ), - LENGTH_OCTETS - ) - } + + uint256 offset_by = offset/8; + uint256 offset_shr_mul = (WORD_SIZE * 8) * + uint256(getBytes32(blob,offset_by)) >> LENGTH_RESTORING_SHIFT; + + result_offset = offset_shr_mul + offset; // Returning still in bits. + +// assembly { +// result_offset := add( +// add( +// offset, +// mul( +// 0x20, +// shr( +// LENGTH_RESTORING_SHIFT, +// calldataload(add(blob.offset, offset)) +// ) +// ) +// ), +// LENGTH_OCTETS +// ) +// } } function skip_vector_of_vectors_of_uint256_be(bytes calldata blob, uint256 offset) internal pure returns (uint256 result_offset) { unchecked { result_offset = offset + LENGTH_OCTETS; } uint256 n; - assembly { - n := shr( - LENGTH_RESTORING_SHIFT, - calldataload(add(blob.offset, offset)) - ) - } + uint256 offset_by = offset/8; + n = uint256(getBytes32(blob,offset)) >> LENGTH_RESTORING_SHIFT; +// assembly { +// n := shr( +// LENGTH_RESTORING_SHIFT, +// calldataload(add(blob.offset, offset)) +// ) +// } for (uint256 i = 0; i < n;) { result_offset = skip_vector_of_uint256_be(blob, result_offset); unchecked{ i++; } } } - function skip_v_of_vectors_of_vectors_of_uint256_be(bytes calldata blob, uint256 offset) - internal pure returns (uint256 result_offset) { - uint256 n = get_length(blob, offset); - result_offset = skip_length(offset); - for (uint256 i = 0; i < n;) { - result_offset = skip_vector_of_vectors_of_uint256_be(blob, result_offset); - unchecked{ i++; } - } - } - - function skip_vv_of_vectors_of_vectors_of_uint256_be(bytes calldata blob, uint256 offset) - internal pure returns (uint256 result_offset) { - uint256 n = get_length(blob, offset); - result_offset = skip_length(offset); - for (uint256 i = 0; i < n;) { - result_offset = skip_v_of_vectors_of_vectors_of_uint256_be(blob, result_offset); - unchecked{ i++; } - } - } - - function skip_length(uint256 offset) internal pure returns (uint256 result_offset) { unchecked { result_offset = offset + LENGTH_OCTETS; } @@ -126,49 +90,35 @@ library basic_marshalling { function get_length(bytes calldata blob, uint256 offset) internal pure returns (uint256 result_length){ - assembly { - result_length := shr(LENGTH_RESTORING_SHIFT, calldataload(add(blob.offset, offset))) - } + uint256 offset_by = offset/8; + result_length = uint256(getBytes32(blob,offset_by)) >> LENGTH_RESTORING_SHIFT; +// assembly { +// result_length := shr(LENGTH_RESTORING_SHIFT, calldataload(add(blob.offset, offset))) +// } } function get_skip_length(bytes calldata blob, uint256 offset) internal pure returns (uint256 result_length, uint256 result_offset){ - assembly { - result_length := shr(LENGTH_RESTORING_SHIFT, calldataload(add(blob.offset, offset))) - } + uint256 offset_by = offset/8; + result_length = uint256(getBytes32(blob,offset_by)) >> LENGTH_RESTORING_SHIFT; + +// assembly { +// result_length := shr(LENGTH_RESTORING_SHIFT, calldataload(add(blob.offset, offset))) +// } unchecked { result_offset = offset + LENGTH_OCTETS; } } function get_i_uint256_from_vector(bytes calldata blob, uint256 offset, uint256 i) internal pure returns (uint256 result) { - assembly { - result := calldataload(add(blob.offset, add(add(offset, LENGTH_OCTETS), mul(i, 0x20)))) - } - } + uint256 mul_by = (i * 0x20)/8; + uint256 offset_plus_len_octets_by = (offset + LENGTH_OCTETS)/8; + uint256 offset_st_by = offset_plus_len_octets_by + mul_by; - function get_i_bytes32_from_vector(bytes calldata blob, uint256 offset, uint256 i) - internal pure returns (bytes32 result) { - assembly { - result := calldataload( - add(blob.offset, add(add(offset, LENGTH_OCTETS), mul(i, 0x20))) - ) - } - } + result = uint256(getBytes32(blob,offset_st_by)); - function get_i_uint256_ptr_from_vector(bytes calldata blob, uint256 offset, uint256 i) - internal pure returns (uint256 result_ptr) { - assembly { - result_ptr := add(blob.offset, add(add(offset, LENGTH_OCTETS), mul(i, 0x20))) - } - } - - function get_i_j_uint256_from_vector_of_vectors_true(bytes calldata blob, uint256 offset, uint256 i, uint256 j) - internal pure returns (uint256 result) { - for (uint256 _i = 0; _i < i;) { - offset = skip_vector_of_uint256_be(blob, offset); - unchecked{ _i++; } - } - result = get_i_uint256_from_vector(blob, offset, j); +// assembly { +// result := calldataload(add(blob.offset, add(add(offset, LENGTH_OCTETS), mul(i, 0x20)))) +// } } function get_i_j_uint256_from_vector_of_vectors(bytes calldata blob, uint256 offset, uint256 i, uint256 j) @@ -181,21 +131,14 @@ library basic_marshalling { result = get_i_uint256_from_vector(blob, offset, j); } - function get_i_j_uint256_ptr_from_vector_of_vectors(bytes calldata blob, uint256 offset, uint256 i, uint256 j) - internal pure returns (uint256 result_ptr) { - offset = skip_length(offset); - for (uint256 _i = 0; _i < i;) { - offset = skip_vector_of_uint256_be(blob, offset); - unchecked{ _i++; } - } - result_ptr = get_i_uint256_ptr_from_vector(blob, offset, j); - } function get_uint256_be(bytes calldata blob, uint256 offset) internal pure returns (uint256 result) { - assembly { - result := calldataload(add(blob.offset, offset)) - } + uint256 offset_by = offset/8; + result = uint256(getBytes32(blob,offset_by)); +// assembly { +// result := calldataload(add(blob.offset, offset)) +// } } //================================================================================================================ @@ -208,25 +151,6 @@ library basic_marshalling { require(result_offset <= blob.length); } - // TODO: general case - function skip_vector_of_octet_vectors_32_be_check(bytes calldata blob, uint256 offset) - internal pure returns (uint256 result_offset) { - unchecked { result_offset = offset + LENGTH_OCTETS; } - require(result_offset <= blob.length); - assembly { - result_offset := add( - result_offset, - mul( - LENGTH_OCTETS_ADD_32, - shr( - LENGTH_RESTORING_SHIFT, - calldataload(add(blob.offset, offset)) - ) - ) - ) - } - require(result_offset <= blob.length); - } function skip_uint256_be_check(bytes calldata blob, uint256 offset) internal pure returns (uint256 result_offset) { @@ -236,21 +160,26 @@ library basic_marshalling { function skip_vector_of_uint256_be_check(bytes calldata blob, uint256 offset) internal pure returns (uint256 result_offset) { - assembly { - result_offset := add( - add( - offset, - mul( - 0x20, - shr( - LENGTH_RESTORING_SHIFT, - calldataload(add(blob.offset, offset)) - ) - ) - ), - LENGTH_OCTETS - ) - } + + uint256 offset_by = offset/8; + uint256 offset_shr_mul = 0x20 * uint256(getBytes32(blob,offset_by)) >> LENGTH_RESTORING_SHIFT; + result_offset = offset + offset_shr_mul + LENGTH_OCTETS; + +// assembly { +// result_offset := add( +// add( +// offset, +// mul( +// 0x20, +// shr( +// LENGTH_RESTORING_SHIFT, +// calldataload(add(blob.offset, offset)) +// ) +// ) +// ), +// LENGTH_OCTETS +// ) +// } require(result_offset <= blob.length); } @@ -259,12 +188,15 @@ library basic_marshalling { unchecked { result_offset = offset + LENGTH_OCTETS; } require(result_offset <= blob.length); uint256 n; - assembly { - n := shr( - LENGTH_RESTORING_SHIFT, - calldataload(add(blob.offset, offset)) - ) - } + uint256 offset_by = offset/8; + n = uint256(getBytes32(blob,offset_by)) >> LENGTH_RESTORING_SHIFT; + +// assembly { +// n := shr( +// LENGTH_RESTORING_SHIFT, +// calldataload(add(blob.offset, offset)) +// ) +// } for (uint256 i = 0; i < n;) { result_offset = skip_vector_of_uint256_be_check(blob, result_offset); unchecked{ i++; } @@ -277,75 +209,25 @@ library basic_marshalling { require(result_offset < blob.length); } - function get_length_check(bytes calldata blob, uint256 offset) - internal pure returns (uint256 result_length){ - require(offset + LENGTH_OCTETS <= blob.length); - assembly { - result_length := shr( - LENGTH_RESTORING_SHIFT, - calldataload(add(blob.offset, offset)) - ) + function write_bytes(bytes memory sink , uint256 start_offset, bytes memory src) + internal pure { + for(uint256 idx=0 ; idx < src.length ; ++idx) { + sink[start_offset + idx] = src[idx]; } } - function get_skip_length_check(bytes calldata blob, uint256 offset) - internal pure returns (uint256 result_length, uint256 result_offset) { - unchecked { result_offset = offset + LENGTH_OCTETS; } - require(result_offset <= blob.length); - assembly { - result_length := shr( - LENGTH_RESTORING_SHIFT, - calldataload(add(blob.offset, offset)) - ) + function to_bytes(uint256 x) + internal pure returns (bytes memory c) { + bytes32 b = bytes32(x); + c = new bytes(32); + for (uint i=0; i < 32; i++) { + c[i] = b[i]; } } - function get_i_uint256_from_vector_check(bytes calldata blob, uint256 offset, uint256 i) - internal pure returns (uint256 result) { - require(offset + LENGTH_OCTETS + (i + 1) * 0x20 <= blob.length); - assembly { - result := calldataload( - add(blob.offset, add(add(offset, LENGTH_OCTETS), mul(i, 0x20))) - ) - } - } - - function get_i_uint256_ptr_from_vector_check(bytes calldata blob, uint256 offset, uint256 i) - internal pure returns (uint256 result_ptr) { - require(offset + LENGTH_OCTETS + (i + 1) * 0x20 <= blob.length); - assembly { - result_ptr := add( - blob.offset, - add(add(offset, LENGTH_OCTETS), mul(i, 0x20)) - ) - } - } - - function get_i_j_uint256_from_vector_of_vectors_check(bytes calldata blob, uint256 offset, uint256 i, uint256 j) - internal pure returns (uint256 result) { - offset = skip_length_check(blob, offset); - for (uint256 _i = 0; _i < i;) { - offset = skip_vector_of_uint256_be_check(blob, offset); - unchecked{ _i++; } - } - result = get_i_uint256_from_vector_check(blob, offset, j); - } - - function get_i_j_uint256_ptr_from_vector_of_vectors_check(bytes calldata blob, uint256 offset, uint256 i, uint256 j) - internal pure returns (uint256 result_ptr) { - offset = skip_length_check(blob, offset); - for (uint256 _i = 0; _i < i;) { - offset = skip_vector_of_uint256_be_check(blob, offset); - unchecked{ _i++; } - } - result_ptr = get_i_uint256_ptr_from_vector_check(blob, offset, j); - } - - function get_uint256_be_check(bytes calldata blob, uint256 offset) - internal pure returns (uint256 result){ - require(offset + 0x20 <= blob.length); - assembly { - result := calldataload(add(blob.offset, offset)) - } + function getBytes32(bytes calldata input, uint256 r1) pure public returns (bytes32) { + //return bytes32(input[r1 : r1 + 8]); + bytes32 dummy; + return dummy; } } diff --git a/contracts/commitments/batched_fri_verifier.sol b/contracts/commitments/batched_fri_verifier.sol index 6746038..1cc2528 100644 --- a/contracts/commitments/batched_fri_verifier.sol +++ b/contracts/commitments/batched_fri_verifier.sol @@ -39,6 +39,7 @@ library batched_fri_verifier { uint256 constant C2_OFFSET = 0xe0; // coefficient2_offset uint256 constant INTERPOLANT_OFFSET = 0x100; uint256 constant PREV_COEFFS_LEN_OFFSET = 0x120; + uint256 constant WORD_SIZE = 4; uint256 constant m = 2; @@ -268,6 +269,14 @@ library batched_fri_verifier { } } +// function getBytes32(bytes calldata input, uint256 r1) pure internal returns (bytes32) { +// //return bytes32(input[r1 : r1 + 8]); +// bytes32 dummy; +// return dummy; +// } + + + function prepare_initial_leaf_data( bytes calldata blob, uint256 offset, @@ -329,7 +338,8 @@ library batched_fri_verifier { unchecked{ i++; } } - uint256 first_offset = 0x20; + uint256 first_offset = 4; + uint256 y_offset; offset = merkle_verifier.skip_merkle_proof_be(blob, offset); @@ -345,31 +355,43 @@ library batched_fri_verifier { // push y if(fri_params.s_indices[local_vars.newind] == fri_params.tmp_arr[local_vars.y_ind]){ - assembly{ - mstore( - add(mload(local_vars),first_offset), - calldataload(add(blob.offset, y_offset)) - ) - mstore( - add(mload(local_vars),add(first_offset, 0x20)), - calldataload(add(blob.offset, add(y_offset, 0x20))) - ) - } + //TODO: Fix byte write +// bytes memory data_to_copy = getBytes32(blob,y_offset); +// basic_marshalling.write_bytes(local_vars.b , first_offset, data_to_copy); +// assembly{ +// mstore( +// add(mload(local_vars),first_offset), +// calldataload(add(blob.offset, y_offset)) +// ) + //TODO: Fix byte writes +// data_to_copy = blob[y_offset + WORD_SIZE : y_offset + WORD_SIZE + WORD_SIZE]; +// basic_marshalling.write_bytes(local_vars.b , first_offset + WORD_SIZE, data_to_copy); +// mstore( +// add(mload(local_vars),add(first_offset, 0x20)), +// calldataload(add(blob.offset, add(y_offset, 0x20))) +// ) +// } } else { - assembly{ - mstore( - add(mload(local_vars),first_offset), - calldataload(add(blob.offset, add(y_offset, 0x20))) - ) - mstore( - add(mload(local_vars),add(first_offset, 0x20)), - calldataload(add(blob.offset, y_offset)) - ) - } + //TODO: Fix byte writes +// bytes memory data_to_copy = blob[y_offset + WORD_SIZE : y_offset + WORD_SIZE + WORD_SIZE]; +// basic_marshalling.write_bytes(local_vars.b , first_offset, data_to_copy); +// assembly{ +// mstore( +// add(mload(local_vars),first_offset), +// calldataload(add(blob.offset, add(y_offset, 0x20))) +// ) + //TODO: Fix byte writes +// data_to_copy = blob[y_offset:y_offset + WORD_SIZE]; +// basic_marshalling.write_bytes(local_vars.b , first_offset + WORD_SIZE, data_to_copy); +// mstore( +// add(mload(local_vars),add(first_offset, 0x20)), +// calldataload(add(blob.offset, y_offset)) +// ) +// } } unchecked{ local_vars.y_ind++; - first_offset += 0x40; + first_offset += 8; } } unchecked{ offset += (1<<(fri_params.step_list[0]+5)); local_vars.p_ind++; } @@ -438,8 +460,8 @@ library batched_fri_verifier { unchecked{ i++; } } - uint256 y; - offset = 0x20; + bytes memory y; + offset = 4; for(local_vars.y_ind = 0; local_vars.y_ind < local_vars.indices_size;){ local_vars.newind = fri_params.correct_order_idx[local_vars.y_ind]; // Check leaf size @@ -447,35 +469,39 @@ library batched_fri_verifier { // push y if(fri_params.s_indices[local_vars.newind] == fri_params.tmp_arr[local_vars.y_ind]){ - y = local_vars.values[local_vars.newind<<1]; - assembly{ - mstore( - add(mload(local_vars), offset), y - ) - } - y = local_vars.values[(local_vars.newind<<1)+1]; - assembly{ - mstore( - add(mload(local_vars),add(offset, 0x20)), y - ) - } + y = basic_marshalling.to_bytes(local_vars.values[local_vars.newind<<1]); + basic_marshalling.write_bytes(local_vars.b,offset,y); +// assembly{ +// mstore( +// add(mload(local_vars), offset), y +// ) +// } + y = basic_marshalling.to_bytes(local_vars.values[(local_vars.newind<<1)+1]); + basic_marshalling.write_bytes(local_vars.b, offset + WORD_SIZE, y); +// assembly{ +// mstore( +// add(mload(local_vars),add(offset, 0x20)), y +// ) +// } } else { - y = local_vars.values[(local_vars.newind<<1)+1]; - assembly{ - mstore( - add(mload(local_vars), offset), y - ) - } - y = local_vars.values[local_vars.newind<<1]; - assembly{ - mstore( - add(mload(local_vars),add(offset, 0x20)), y - ) - } + y = basic_marshalling.to_bytes(local_vars.values[(local_vars.newind<<1)+1]); + basic_marshalling.write_bytes(local_vars.b, offset,y); +// assembly{ +// mstore( +// add(mload(local_vars), offset), y +// ) +// } + y = basic_marshalling.to_bytes(local_vars.values[local_vars.newind<<1]); + basic_marshalling.write_bytes(local_vars.b, offset + WORD_SIZE,y); +// assembly{ +// mstore( +// add(mload(local_vars),add(offset, 0x20)), y +// ) +// } } unchecked{ local_vars.y_ind++; - offset += 0x40; + offset += (WORD_SIZE * 2); } } } diff --git a/contracts/containers/merkle_verifier.sol b/contracts/containers/merkle_verifier.sol index 7fbdfe5..36882d7 100644 --- a/contracts/containers/merkle_verifier.sol +++ b/contracts/containers/merkle_verifier.sol @@ -20,7 +20,17 @@ pragma solidity >=0.8.4; import "../types.sol"; + library merkle_verifier { + + function getBytes32(bytes calldata input, uint256 r1) pure internal returns (bytes32) { + //return bytes32(input[r1 : r1 + 8]); + bytes32 dummy; + return dummy; + } + + + // Merkle proof has the following structure: // [0:8] - leaf index // [8:16] - root length (which is always 32 bytes in current implementation) @@ -37,199 +47,283 @@ library merkle_verifier { // [0:8] - co-path element position on the layer // [8:16] - co-path element hash value length (which is always 32 bytes in current implementation) // [16:48] - co-path element hash value - uint256 constant ROOT_OFFSET = 16; - uint256 constant DEPTH_OFFSET = 48; - uint256 constant LAYERS_OFFSET = 56; + uint256 constant WORD_SIZE = 32; //32 bytes,256 bits + uint256 constant ROOT_OFFSET = 2; //16/8; + uint256 constant DEPTH_OFFSET = 6; //48/8; + uint256 constant LAYERS_OFFSET = 7; //56/8; // only one co-element on each layer as arity is always 2 // 8 + (number of co-path elements on the layer) // 8 + (co-path element position on the layer) // 8 + (co-path element hash value length) // 32 (co-path element hash value) - uint256 constant LAYER_POSITION_OFFSET = 8; - uint256 constant LAYER_COPATH_HASH_OFFSET = 24; - uint256 constant LAYER_OCTETS = 56; + uint256 constant LAYER_POSITION_OFFSET = 1; //8/8; + uint256 constant LAYER_COPATH_HASH_OFFSET = 3; //24/8; + uint256 constant LAYER_OCTETS = 7; //56/8; + - uint256 constant LENGTH_OCTETS = 8; - // 256 - 8 * LENGTH_OCTETS uint256 constant LENGTH_RESTORING_SHIFT = 0xc0; + // TODO : Check if the offset input or output are they bits/bytes requiring conversion + // TODO : Check if all offset are byte aligned i.e multiples of 8. + // This has implications on all calling functions. function skip_merkle_proof_be(bytes calldata blob, uint256 offset) internal pure returns (uint256 result_offset) { + offset = offset/8; unchecked { result_offset = offset + LAYERS_OFFSET; } - assembly { - result_offset := add( - result_offset, - mul( - LAYER_OCTETS, - shr( - LENGTH_RESTORING_SHIFT, - calldataload( - add(blob.offset, add(offset, DEPTH_OFFSET)) - ) - ) - ) - ) - } + + uint256 read_offset_st = offset + DEPTH_OFFSET; + //bytes memory read_bytes = getBytes32(blob[read_offset_st:read_offset_st + WORD_SIZE]; + uint256 read_offset_uint = uint256(getBytes32(blob,read_offset_st)); + result_offset += ((read_offset_uint >> LENGTH_RESTORING_SHIFT) * LAYER_OCTETS ); + result_offset = result_offset * 8; +// assembly { +// result_offset := add( +// result_offset, +// mul( +// LAYER_OCTETS, +// shr( +// LENGTH_RESTORING_SHIFT, +// calldataload( +// add(blob.offset, add(offset, DEPTH_OFFSET)) +// ) +// ) +// ) +// ) +// } } function skip_merkle_proof_be_check(bytes calldata blob, uint256 offset) internal pure returns (uint256 result_offset) { unchecked { result_offset = offset + LAYERS_OFFSET; } require(result_offset < blob.length); - assembly { - result_offset := add( - result_offset, - mul( - LAYER_OCTETS, - shr( - LENGTH_RESTORING_SHIFT, - calldataload( - add(blob.offset, add(offset, DEPTH_OFFSET)) - ) - ) - ) - ) - } + offset = offset/8; + uint256 read_offset_st = offset + DEPTH_OFFSET; + + //bytes memory read_offset = blob[read_offset_st:read_offset_st + WORD_SIZE]; + uint256 read_offset_uint = uint256(getBytes32(blob,read_offset_st)); + result_offset += ((read_offset_uint >> LENGTH_RESTORING_SHIFT) * LAYER_OCTETS ); + result_offset = result_offset * 8; +// assembly { +// result_offset := add( +// result_offset, +// mul( +// LAYER_OCTETS, +// shr( +// LENGTH_RESTORING_SHIFT, +// calldataload( +// add(blob.offset, add(offset, DEPTH_OFFSET)) +// ) +// ) +// ) +// ) +// } require(result_offset <= blob.length, "skip_merkle_proof_be"); } + function getKeccak256LeafNodes(bytes32[2] memory leafNodes) internal pure returns (bytes32 result) { + result = keccak256(bytes.concat(leafNodes[0], leafNodes[1])); + } + function parse_verify_merkle_proof_not_pre_hash_be(bytes calldata blob, uint256 offset, bytes32 verified_data) internal pure returns (bool result) { // uint256 x = 0; // uint256 depth; - assembly { - let depth := shr(LENGTH_RESTORING_SHIFT, calldataload(add(blob.offset, add(offset, DEPTH_OFFSET)))) + uint256 depth_offset_bytes = (offset/8) + DEPTH_OFFSET; + uint256 depth = uint256(getBytes32(blob,depth_offset_bytes)) >> LENGTH_RESTORING_SHIFT ; - // save leaf hash data to required position - let pos := shr( - LENGTH_RESTORING_SHIFT, - calldataload( - add( - blob.offset, - add(add(offset, LAYERS_OFFSET), LAYER_POSITION_OFFSET) - ) - ) - ) -// x := add(x, pos) -// x := mul(x, 10) - switch pos - case 0 { - mstore(0x20, verified_data) - } - case 1 { - mstore(0x00, verified_data) - } + uint256 layer_pos_offset_bytes = (offset/8) + LAYERS_OFFSET + LAYER_POSITION_OFFSET; + uint256 pos = uint256(getBytes32(blob,layer_pos_offset_bytes)) >> LENGTH_RESTORING_SHIFT ; + bytes32[2] memory leafNodes; + if (pos == 0) { + leafNodes[1] = verified_data; + } else if (pos ==1){ + leafNodes[0] = verified_data; + } + + uint256 layer_offset = (offset/8) + LAYERS_OFFSET; + uint256 next_pos; + + for(uint256 cur_layer_idx=0; cur_layer_idx < depth -1 ; cur_layer_idx++ ){ + //uint256 layer_offset_st = layer_offset + LAYER_POSITION_OFFSET; + pos = uint256(getBytes32(blob,layer_offset + LAYER_POSITION_OFFSET)) >> LENGTH_RESTORING_SHIFT; + + uint256 next_pos_offset = layer_offset + LAYER_POSITION_OFFSET + LAYER_OCTETS; + next_pos = uint256(getBytes32(blob,next_pos_offset)) >> LENGTH_RESTORING_SHIFT; + + if (pos==0){ + uint256 start_offset = layer_offset + LAYER_COPATH_HASH_OFFSET; + leafNodes[0] = getBytes32(blob,start_offset); - let layer_offst := add(offset, LAYERS_OFFSET) - let next_pos - for { - let cur_layer_i := 0 - } lt(cur_layer_i, sub(depth, 1)) { - cur_layer_i := add(cur_layer_i, 1) - } { - pos := shr( - LENGTH_RESTORING_SHIFT, - calldataload( - add( - blob.offset, - add(layer_offst, LAYER_POSITION_OFFSET) - ) - ) - ) - next_pos := shr( - LENGTH_RESTORING_SHIFT, - calldataload( - add( - blob.offset, - add( - add(layer_offst, LAYER_POSITION_OFFSET), - LAYER_OCTETS - ) - ) - ) - ) -// x := add(x, pos) -// x := mul(x, 10) - switch pos - case 0 { - mstore( - 0x00, - calldataload( - add( - blob.offset, - add(layer_offst, LAYER_COPATH_HASH_OFFSET) - ) - ) - ) - switch next_pos - case 0 { - mstore(0x20, keccak256(0, 0x40)) - } - case 1 { - mstore(0, keccak256(0, 0x40)) - } + if(next_pos==0){ + leafNodes[1] = getKeccak256LeafNodes(leafNodes); + } else if (next_pos ==1){ + leafNodes[0] = getKeccak256LeafNodes(leafNodes); } - case 1 { - mstore( - 0x20, - calldataload( - add( - blob.offset, - add(layer_offst, LAYER_COPATH_HASH_OFFSET) - ) - ) - ) - switch next_pos - case 0 { - mstore(0x20, keccak256(0, 0x40)) - } - case 1 { - mstore(0, keccak256(0, 0x40)) - } + } else if (pos ==1) { + uint256 start_offset = layer_offset + LAYER_COPATH_HASH_OFFSET; + leafNodes[1] = getBytes32(blob,start_offset); + + if(next_pos==0){ + leafNodes[1] = getKeccak256LeafNodes(leafNodes); + } else if (next_pos ==1){ + leafNodes[0] = getKeccak256LeafNodes(leafNodes); } - layer_offst := add(layer_offst, LAYER_OCTETS) } + layer_offset = layer_offset + LAYER_OCTETS; + } + uint256 start_offset = layer_offset + LAYER_POSITION_OFFSET ; + pos = uint256(getBytes32(blob,start_offset)) >> LENGTH_RESTORING_SHIFT; - pos := shr( - LENGTH_RESTORING_SHIFT, - calldataload( - add(blob.offset, add(layer_offst, LAYER_POSITION_OFFSET)) - ) - ) -// x := add(x, pos) -// x := mul(x, 10) - switch pos - case 0 { - mstore( - 0x00, - calldataload( - add( - blob.offset, - add(layer_offst, LAYER_COPATH_HASH_OFFSET) - ) - ) - ) - verified_data := keccak256(0, 0x40) - } - case 1 { - mstore( - 0x20, - calldataload( - add( - blob.offset, - add(layer_offst, LAYER_COPATH_HASH_OFFSET) - ) - ) - ) - verified_data := keccak256(0, 0x40) - } + if (pos == 0){ + uint256 _offset = layer_offset + LAYER_COPATH_HASH_OFFSET; + leafNodes[0] = getBytes32(blob,_offset); + verified_data = getKeccak256LeafNodes(leafNodes); + + } else if (pos ==1){ + uint256 _offset = layer_offset + LAYER_COPATH_HASH_OFFSET; + leafNodes[1] = getBytes32(blob,_offset); + verified_data = getKeccak256LeafNodes(leafNodes); } bytes32 root; - assembly { - root := calldataload(add(blob.offset, add(offset, ROOT_OFFSET))) - } + uint256 _root_offset = (offset/8) + ROOT_OFFSET; + root = getBytes32(blob,_root_offset); result = (verified_data == root); + + + // assembly { + //let depth := shr(LENGTH_RESTORING_SHIFT, calldataload(add(blob.offset, add(offset, DEPTH_OFFSET)))) + + // save leaf hash data to required position +// let pos := shr( +// LENGTH_RESTORING_SHIFT, +// calldataload( +// add( +// blob.offset, +// add(add(offset, LAYERS_OFFSET), LAYER_POSITION_OFFSET) +// ) +// ) +// ) +// x := add(x, pos) +// x := mul(x, 10) +// switch pos +// case 0 { +// mstore(0x20, verified_data) +// } +// case 1 { +// mstore(0x00, verified_data) +// } + +// let layer_offst := add(offset, LAYERS_OFFSET) +// let next_pos +// for { +// let cur_layer_i := 0 +// } lt(cur_layer_i, sub(depth, 1)) { +// cur_layer_i := add(cur_layer_i, 1) +// } { +// pos := shr( +// LENGTH_RESTORING_SHIFT, +// calldataload( +// add( +// blob.offset, +// add(layer_offst, LAYER_POSITION_OFFSET) +// ) +// ) +// ) +// next_pos := shr( +// LENGTH_RESTORING_SHIFT, +// calldataload( +// add( +// blob.offset, +// add( +// add(layer_offst, LAYER_POSITION_OFFSET), +// LAYER_OCTETS +// ) +// ) +// ) +// ) +//// x := add(x, pos) +//// x := mul(x, 10) +// switch pos +// case 0 { +// mstore( +// 0x00, +// calldataload( +// add( +// blob.offset, +// add(layer_offst, LAYER_COPATH_HASH_OFFSET) +// ) +// ) +// ) +// switch next_pos +// case 0 { +// mstore(0x20, keccak256(0, 0x40)) +// } +// case 1 { +// mstore(0, keccak256(0, 0x40)) +// } +// } +// case 1 { +// mstore( +// 0x20, +// calldataload( +// add( +// blob.offset, +// add(layer_offst, LAYER_COPATH_HASH_OFFSET) +// ) +// ) +// ) +// switch next_pos +// case 0 { +// mstore(0x20, keccak256(0, 0x40)) +// } +// case 1 { +// mstore(0, keccak256(0, 0x40)) +// } +// } +// layer_offst := add(layer_offst, LAYER_OCTETS) +// } +// +// pos := shr( +// LENGTH_RESTORING_SHIFT, +// calldataload( +// add(blob.offset, add(layer_offst, LAYER_POSITION_OFFSET)) +// ) +// ) +//// x := add(x, pos) +//// x := mul(x, 10) +// switch pos +// case 0 { +// mstore( +// 0x00, +// calldataload( +// add( +// blob.offset, +// add(layer_offst, LAYER_COPATH_HASH_OFFSET) +// ) +// ) +// ) +// verified_data := keccak256(0, 0x40) +// } +// case 1 { +// mstore( +// 0x20, +// calldataload( +// add( +// blob.offset, +// add(layer_offst, LAYER_COPATH_HASH_OFFSET) +// ) +// ) +// ) +// verified_data := keccak256(0, 0x40) +// } +// } +// +// bytes32 root; +// assembly { +// root := calldataload(add(blob.offset, add(offset, ROOT_OFFSET))) +// } +// result = (verified_data == root); } // We store merkle root as an octet vector. At first length==0x20 is stored. @@ -237,26 +331,31 @@ library merkle_verifier { // TODO: this function should return bytes32 function get_merkle_root_from_blob(bytes calldata blob, uint256 merkle_root_offset) internal pure returns(uint256 root){ - assembly { - root := calldataload(add(blob.offset, add(merkle_root_offset, 0x8))) - } + uint256 merkle_proof_offset_bytes = (merkle_root_offset/8) + 1; + root = uint256(getBytes32(blob,merkle_proof_offset_bytes)); +// assembly { +// root := calldataload(add(blob.offset, add(merkle_root_offset, 0x8))) +// } } // TODO: This function should return bytes32 function get_merkle_root_from_proof(bytes calldata blob, uint256 merkle_proof_offset) internal pure returns(uint256 root){ - assembly { - root := calldataload(add(blob.offset, add(merkle_proof_offset, ROOT_OFFSET))) - } + uint256 merkle_proof_offset_bytes = (merkle_proof_offset/8) + ROOT_OFFSET; + root = uint256(getBytes32(blob,merkle_proof_offset_bytes)); +// assembly { +// root := calldataload(add(blob.offset, add(merkle_proof_offset, ROOT_OFFSET))) +// } } function parse_verify_merkle_proof_be(bytes calldata blob, uint256 offset, bytes32 verified_data) internal pure returns (bool result) { - assembly { - mstore(0, verified_data) - verified_data := keccak256(0, 0x20) - } - result = parse_verify_merkle_proof_not_pre_hash_be(blob, offset, verified_data); +// assembly { +// mstore(0, verified_data) +// verified_data := keccak256(0, 0x20) +// } + bytes memory verified_data_m = bytes.concat(verified_data); + result = parse_verify_merkle_proof_not_pre_hash_be(blob, offset, keccak256(verified_data_m)); } function parse_verify_merkle_proof_bytes_be(bytes calldata blob, uint256 offset, bytes memory verified_data) @@ -267,10 +366,11 @@ library merkle_verifier { function parse_verify_merkle_proof_bytes_be(bytes calldata blob, uint256 offset, bytes memory verified_data_bytes, uint256 verified_data_bytes_len) internal pure returns (bool result) { - bytes32 verified_data; - assembly { - verified_data := keccak256(add(verified_data_bytes, 0x20), verified_data_bytes_len) - } + uint256 addition_offset = uint256(bytes32(verified_data_bytes)) + 0x20; // TODO : Length in bits? + bytes32 verified_data = keccak256(abi.encodePacked(addition_offset,verified_data_bytes_len)); +// assembly { +// verified_data := keccak256(add(verified_data_bytes, 0x20), verified_data_bytes_len) +// } result = parse_verify_merkle_proof_not_pre_hash_be(blob, offset, verified_data); } } diff --git a/contracts/cryptography/transcript.sol b/contracts/cryptography/transcript.sol index 389fcfb..c091797 100644 --- a/contracts/cryptography/transcript.sol +++ b/contracts/cryptography/transcript.sol @@ -24,7 +24,18 @@ import "../types.sol"; * @title Transcript library * @dev Generates Plonk random challenges */ + + + library transcript { + uint256 constant WORD_SIZE = 4; + function getBytes32(bytes calldata input, uint256 r1) pure internal returns (bytes32) { + //return bytes32(input[r1 : r1 + 8]); + bytes32 dummy; + return dummy; + } + + function init_transcript(types.transcript_data memory self, bytes memory init_blob) internal pure { self.current_challenge = keccak256(init_blob); @@ -42,18 +53,6 @@ library transcript { ); } - function update_transcript_b32_by_offset(types.transcript_data memory self, bytes memory blob, uint256 offset) - internal pure { - require(offset < blob.length, "update_transcript_b32_by_offset: offset < blob.length"); - require(32 <= blob.length - offset, "update_transcript_b32_by_offset: 32 <= blob.length - offset"); - - bytes32 blob32; - assembly { - blob32 := mload(add(add(blob, 0x20), offset)) - } - update_transcript_b32(self, blob32); - } - function update_transcript_b32_by_offset_calldata(types.transcript_data memory self, bytes calldata blob, uint256 offset) internal pure { @@ -61,9 +60,11 @@ library transcript { require(32 <= blob.length - offset, "update_transcript_b32_by_offset: 32 <= blob.length - offset"); bytes32 blob32; - assembly { - blob32 := calldataload(add(blob.offset, offset)) - } + offset = (offset/8); + blob32 = getBytes32(blob,offset); +// assembly { +// blob32 := calldataload(add(blob.offset, offset)) +// } update_transcript_b32(self, blob32); } diff --git a/contracts/interfaces/gate_argument.sol b/contracts/interfaces/gate_argument.sol index 88630ef..d4cdf2b 100644 --- a/contracts/interfaces/gate_argument.sol +++ b/contracts/interfaces/gate_argument.sol @@ -19,11 +19,15 @@ pragma solidity >=0.8.4; import "../types.sol"; + interface IGateArgument { +// uint256 constant ROWS_ROTATION = 2; +// uint256 constant COLS_ROTATION = 3; + function evaluate_gates_be(bytes calldata blob, uint256 eval_proof_combined_value_offset, types.gate_argument_params memory gate_params, types.arithmetization_params memory ar_params, - int256[][] calldata columns_rotations + int256[2][3] calldata columns_rotations ) external pure returns (uint256 gates_evaluation); } \ No newline at end of file diff --git a/contracts/interfaces/verifier.sol b/contracts/interfaces/verifier.sol index 854bc50..c73c9a7 100644 --- a/contracts/interfaces/verifier.sol +++ b/contracts/interfaces/verifier.sol @@ -20,7 +20,7 @@ interface IVerifier { function verify( bytes calldata blob, uint256[] calldata init_params, - int256[][] calldata columns_rotations, + int256[2][3] calldata columns_rotations, address gate_argument ) external view returns (bool); } diff --git a/contracts/placeholder/permutation_argument.sol b/contracts/placeholder/permutation_argument.sol index b9cb6a1..1413337 100644 --- a/contracts/placeholder/permutation_argument.sol +++ b/contracts/placeholder/permutation_argument.sol @@ -59,67 +59,103 @@ library permutation_argument { uint256 constant IDX2_OFFSET = 0x380; uint256 constant STATUS_OFFSET = 0x3a0; + uint256 constant WORD_SIZE = 4; + + function getBytes32(bytes calldata input, uint256 r1) pure internal returns (bytes32) { + //return bytes32(input[r1 : r1 + 8]); + bytes32 dummy; + return dummy; + } + + function eval_permutations_at_challenge( types.fri_params_type memory fri_params, types.placeholder_state_type memory local_vars, uint256 column_polynomials_values_i ) internal pure { + uint256 modulus = fri_params.modulus; + uint256 gamma = local_vars.gamma; + + // beta * S_id[i].evaluate(challenge) + uint256 beta_eval = mulmod(local_vars.beta,local_vars.S_id_i,modulus); + + // beta * S_id[i].evaluate(challenge) + gamma + uint256 beta_eval_gamma = addmod(beta_eval,local_vars.gamma ,modulus); + + // column_polynomials_values[i] + beta * S_id[i].evaluate(challenge) + gamma + uint256 beta_eval_g_poly = addmod(column_polynomials_values_i,beta_eval_gamma,modulus); + + local_vars.g = mulmod(local_vars.g,beta_eval_g_poly,modulus); + + + + // beta * S_sigma[i].evaluate(challenge) + uint256 beta_eval_h = mulmod(local_vars.beta,local_vars.S_sigma_i,modulus); + + // beta * S_sigma[i].evaluate(challenge) + gamma + uint256 beta_eval_h_gamma = addmod(beta_eval_h,local_vars.gamma ,modulus); + + // column_polynomials_values[i] + beta * S_sigma[i].evaluate(challenge) + gamma + uint256 beta_eval_h_poly = addmod(column_polynomials_values_i,beta_eval_h_gamma,modulus); + + local_vars.h = mulmod(local_vars.h,beta_eval_h_poly , modulus); + assembly { - let modulus := mload(fri_params) - mstore( - add(local_vars, G_OFFSET), - mulmod( - mload(add(local_vars, G_OFFSET)), - // column_polynomials_values[i] + beta * S_id[i].evaluate(challenge) + gamma - addmod( - // column_polynomials_values[i] - column_polynomials_values_i, - // beta * S_id[i].evaluate(challenge) + gamma - addmod( - // beta * S_id[i].evaluate(challenge) - mulmod( - // beta - mload(add(local_vars, BETA_OFFSET)), - // S_id[i].evaluate(challenge) - mload(add(local_vars, S_ID_I_OFFSET)), - modulus - ), - // gamma - mload(add(local_vars, GAMMA_OFFSET)), - modulus - ), - modulus - ), - modulus - ) - ) - mstore( - add(local_vars, H_OFFSET), - mulmod( - mload(add(local_vars, H_OFFSET)), - // column_polynomials_values[i] + beta * S_sigma[i].evaluate(challenge) + gamma - addmod( - // column_polynomials_values[i] - column_polynomials_values_i, - // beta * S_sigma[i].evaluate(challenge) + gamma - addmod( - // beta * S_sigma[i].evaluate(challenge) - mulmod( - // beta - mload(add(local_vars, BETA_OFFSET)), - // S_sigma[i].evaluate(challenge) - mload(add(local_vars, S_SIGMA_I_OFFSET)), - modulus - ), - // gamma - mload(add(local_vars, GAMMA_OFFSET)), - modulus - ), - modulus - ), - modulus - ) - ) +// let modulus := mload(fri_params) +// mstore( +// add(local_vars, G_OFFSET), +// mulmod( +// mload(add(local_vars, G_OFFSET)), +// // column_polynomials_values[i] + beta * S_id[i].evaluate(challenge) + gamma +// addmod( +// // column_polynomials_values[i] +// column_polynomials_values_i, +// // beta * S_id[i].evaluate(challenge) + gamma +// addmod( +// // beta * S_id[i].evaluate(challenge) +// mulmod( +// // beta +// mload(add(local_vars, BETA_OFFSET)), +// // S_id[i].evaluate(challenge) +// mload(add(local_vars, S_ID_I_OFFSET)), +// modulus +// ), +// // gamma +// mload(add(local_vars, GAMMA_OFFSET)), +// modulus +// ), +// modulus +// ), +// modulus +// ) +// ) +// mstore( +// add(local_vars, H_OFFSET), +// mulmod( +// mload(add(local_vars, H_OFFSET)), +// // column_polynomials_values[i] + beta * S_sigma[i].evaluate(challenge) + gamma +// addmod( +// // column_polynomials_values[i] +// column_polynomials_values_i, +// // beta * S_sigma[i].evaluate(challenge) + gamma +// addmod( +// // beta * S_sigma[i].evaluate(challenge) +// mulmod( +// // beta +// mload(add(local_vars, BETA_OFFSET)), +// // S_sigma[i].evaluate(challenge) +// mload(add(local_vars, S_SIGMA_I_OFFSET)), +// modulus +// ), +// // gamma +// mload(add(local_vars, GAMMA_OFFSET)), +// modulus +// ), +// modulus +// ), +// modulus +// ) +// ) } } @@ -253,137 +289,193 @@ library permutation_argument { blob, proof_map.eval_proof_offset ); - assembly { - let modulus := mload(fri_params) - - // F[0] - mstore( - add(F, 0x20), - mulmod( - calldataload( - add( - blob.offset, - mload( - add( - proof_map, - EVAL_PROOF_LAGRANGE_0_OFFSET_OFFSET - ) - ) - ) - ), - addmod( - 1, - // one - perm_polynomial_value - sub( - modulus, - mload(add(local_vars, PERM_POLYNOMIAL_VALUE_OFFSET)) - ), - modulus - ), - modulus - ) - ) + + uint256 modulus = fri_params.modulus; + { + uint256 one_minus_perm_poly_v = addmod(1 , (modulus - local_vars.perm_polynomial_value), modulus); + + uint256 read_offset = proof_map.eval_proof_lagrange_0_offset; + uint256 blob_data = uint256(getBytes32(blob,read_offset)); + + F[0] = mulmod(blob_data,one_minus_perm_poly_v,modulus); } - assembly{ - let modulus := mload(fri_params) - // F[1] - mstore( - add(F, 0x40), - // (one - preprocessed_data.q_last.evaluate(challenge) - - // preprocessed_data.q_blind.evaluate(challenge)) * - // (perm_polynomial_shifted_value * h - perm_polynomial_value * g) - mulmod( - // one - preprocessed_data.q_last.evaluate(challenge) - - // preprocessed_data.q_blind.evaluate(challenge) - addmod( - 1, - // -preprocessed_data.q_last.evaluate(challenge) - preprocessed_data.q_blind.evaluate(challenge) - addmod( - // -preprocessed_data.q_last.evaluate(challenge) - sub( - modulus, - mload(add(local_vars, Q_LAST_EVAL_OFFSET)) - ), - // -preprocessed_data.q_blind.evaluate(challenge) - sub( - modulus, - mload(add(local_vars, Q_BLIND_EVAL_OFFSET)) - ), - modulus - ), - modulus - ), - // perm_polynomial_shifted_value * h - perm_polynomial_value * g - addmod( - // perm_polynomial_shifted_value * h - mulmod( - // perm_polynomial_shifted_value - mload( - add( - local_vars, - PERM_POLYNOMIAL_SHIFTED_VALUE_OFFSET - ) - ), - // h - mload(add(local_vars, H_OFFSET)), - modulus - ), - // - perm_polynomial_value * g - sub( - modulus, - mulmod( - // perm_polynomial_value - mload( - add( - local_vars, - PERM_POLYNOMIAL_VALUE_OFFSET - ) - ), - // g - mload(add(local_vars, G_OFFSET)), - modulus - ) - ), - modulus - ), - modulus - ) - ) + + // blob[proof_map.eval_proof_lagrange_0_offset: proof_map.eval_proof_lagrange_0_offset + WORD_SIZE] + + //proof_map.eval_proof_lagrange_0_offset + + +// assembly { + //let modulus := mload(fri_params) + +// // F[0] +// mstore( +// add(F, 0x20), +// mulmod( +// calldataload( +// add( +// blob.offset, +// mload( +// add( +// proof_map, +// EVAL_PROOF_LAGRANGE_0_OFFSET_OFFSET +// ) +// ) +// ) +// ), +// addmod( +// 1, +// // one - perm_polynomial_value +// sub( +// modulus, +// mload(add(local_vars, PERM_POLYNOMIAL_VALUE_OFFSET)) +// ), +// modulus +// ), +// modulus +// ) +// ) +// } + + // - perm_polynomial_value * g + { + uint256 perm_poly_val_g= modulus - mulmod(local_vars.perm_polynomial_value,local_vars.g, modulus); + // + // // perm_polynomial_shifted_value * h + uint256 perm_poly_val_h = mulmod(local_vars.perm_polynomial_shifted_value, local_vars.h, modulus); + // + // // perm_polynomial_shifted_value * h - perm_polynomial_value * g + uint256 poly_h_min_g = addmod(perm_poly_val_h,perm_poly_val_g, modulus); + // + // //-preprocessed_data.q_last.evaluate(challenge) - preprocessed_data.q_blind.evaluate(challenge) + uint256 mod_min_q_last_eval = modulus - local_vars.q_last_eval; + uint256 mod_min_q_blind_eval = modulus - local_vars.q_blind_eval; + uint256 pre_process_st_1 = addmod(mod_min_q_last_eval,mod_min_q_blind_eval,modulus); + + // + // -preprocessed_data.q_last.evaluate(challenge) - preprocessed_data.q_blind.evaluate(challenge) + uint256 pre_process_st_2 = addmod(1,pre_process_st_1,modulus ); + + + F[1] = mulmod(pre_process_st_2,poly_h_min_g , modulus); } - assembly{ - let modulus := mload(fri_params) - // F[2] - mstore( - add(F, 0x60), - // preprocessed_data.q_last.evaluate(challenge) * - // (perm_polynomial_value.squared() - perm_polynomial_value) - mulmod( - // preprocessed_data.q_last.evaluate(challenge) - mload(add(local_vars, Q_LAST_EVAL_OFFSET)), - // perm_polynomial_value.squared() - perm_polynomial_value - addmod( - // perm_polynomial_value.squared() - mulmod( - // perm_polynomial_value - mload( - add(local_vars, PERM_POLYNOMIAL_VALUE_OFFSET) - ), - // perm_polynomial_value - mload( - add(local_vars, PERM_POLYNOMIAL_VALUE_OFFSET) - ), - modulus - ), - // -perm_polynomial_value - sub( - modulus, - mload(add(local_vars, PERM_POLYNOMIAL_VALUE_OFFSET)) - ), - modulus - ), - modulus - ) - ) + + + + +// assembly{ +// //let modulus := mload(fri_params) +// // F[1] +// mstore( +// add(F, 0x40), +// // (one - preprocessed_data.q_last.evaluate(challenge) - +// // preprocessed_data.q_blind.evaluate(challenge)) * +// // (perm_polynomial_shifted_value * h - perm_polynomial_value * g) +// mulmod( +// // one - preprocessed_data.q_last.evaluate(challenge) - +// // preprocessed_data.q_blind.evaluate(challenge) +// addmod( +// 1, +// // -preprocessed_data.q_last.evaluate(challenge) - preprocessed_data.q_blind.evaluate(challenge) +// addmod( +// // -preprocessed_data.q_last.evaluate(challenge) +// sub( +// modulus, +// mload(add(local_vars, Q_LAST_EVAL_OFFSET)) +// ), +// // -preprocessed_data.q_blind.evaluate(challenge) +// sub( +// modulus, +// mload(add(local_vars, Q_BLIND_EVAL_OFFSET)) +// ), +// modulus +// ), +// modulus +// ), +// // perm_polynomial_shifted_value * h - perm_polynomial_value * g +// addmod( +// // perm_polynomial_shifted_value * h +// mulmod( +// // perm_polynomial_shifted_value +// mload( +// add( +// local_vars, +// PERM_POLYNOMIAL_SHIFTED_VALUE_OFFSET +// ) +// ), +// // h +// mload(add(local_vars, H_OFFSET)), +// modulus +// ), +// // - perm_polynomial_value * g +// sub( +// modulus, +// mulmod( +// // perm_polynomial_value +// mload( +// add( +// local_vars, +// PERM_POLYNOMIAL_VALUE_OFFSET +// ) +// ), +// // g +// mload(add(local_vars, G_OFFSET)), +// modulus +// ) +// ), +// modulus +// ), +// modulus +// ) +// ) +// } + { + //-perm_polynomial_value + uint256 min_per_poly_val = modulus - local_vars.perm_polynomial_value; + + // perm_polynomial_value.squared() + uint256 perm_poly_sq = mulmod(local_vars.perm_polynomial_value, local_vars.perm_polynomial_value,modulus); + + // + uint256 poly_sq_minus_min_poly_val = addmod(perm_poly_sq,min_per_poly_val,modulus); + + F[2] = mulmod(local_vars.q_last_eval,poly_sq_minus_min_poly_val, modulus); + } + +// assembly{ +// //let modulus := mload(fri_params) +// // F[2] +// mstore( +// add(F, 0x60), +// // preprocessed_data.q_last.evaluate(challenge) * +// // (perm_polynomial_value.squared() - perm_polynomial_value) +// mulmod( +// // preprocessed_data.q_last.evaluate(challenge) +// mload(add(local_vars, Q_LAST_EVAL_OFFSET)), +// // perm_polynomial_value.squared() - perm_polynomial_value +// addmod( +// // perm_polynomial_value.squared() +// mulmod( +// // perm_polynomial_value +// mload( +// add(local_vars, PERM_POLYNOMIAL_VALUE_OFFSET) +// ), +// // perm_polynomial_value +// mload( +// add(local_vars, PERM_POLYNOMIAL_VALUE_OFFSET) +// ), +// modulus +// ), +// // -perm_polynomial_value +// sub( +// modulus, +// mload(add(local_vars, PERM_POLYNOMIAL_VALUE_OFFSET)) +// ), +// modulus +// ), +// modulus +// ) +// ) +// } } } diff --git a/contracts/placeholder/placeholder_verifier.sol b/contracts/placeholder/placeholder_verifier.sol index 7010d82..c1cd2a5 100644 --- a/contracts/placeholder/placeholder_verifier.sol +++ b/contracts/placeholder/placeholder_verifier.sol @@ -116,16 +116,27 @@ library placeholder_verifier { // TODO check it!!!! // TODO: check properly if column_rotations will be not one of 0, +-1 // local_vars.evaluation_points[0][i][j] = local_vars.challenge * omega ^ column_rotations[i][j] - assembly{ - for{mstore(add(local_vars, E_OFFSET), mload(add(local_vars, CHALLENGE_OFFSET)))} gt(e,0) {e := shr(e, 1)} { - if not(eq(and(e,1), 0)){ - mstore(add(local_vars, E_OFFSET),mulmod(mload(add(local_vars, E_OFFSET)), omega, mload(fri_params))) - } - if not(eq(e, 1)){ - omega := mulmod(omega,omega, mload(fri_params)) - } + local_vars.e = local_vars.challenge ; + while(e > 0){ + if ((e & 1) != 0){ + local_vars.e = mulmod(local_vars.e, omega, fri_params.modulus); } + if (e !=1) { + omega = mulmod(omega,omega, fri_params.modulus); + } + e = e >> 1; } + +// assembly{ +// for{mstore(add(local_vars, E_OFFSET), mload(add(local_vars, CHALLENGE_OFFSET)))} gt(e,0) {e := shr(e, 1)} { +// if not(eq(and(e,1), 0)){ +// mstore(add(local_vars, E_OFFSET),mulmod(mload(add(local_vars, E_OFFSET)), omega, mload(fri_params))) +// } +// if not(eq(e, 1)){ +// omega := mulmod(omega,omega, mload(fri_params)) +// } +// } +// } local_vars.evaluation_points[0][i][j] = local_vars.e; } unchecked{j++;} @@ -175,16 +186,27 @@ library placeholder_verifier { // TODO check it!!!! // TODO: check properly if column_rotations will be not one of 0, +-1 // local_vars.evaluation_points[0][i][j] = local_vars.challenge * omega ^ column_rotations[i][j] - assembly{ - for{mstore(add(local_vars, E_OFFSET), mload(add(local_vars, CHALLENGE_OFFSET)))} gt(e,0) {e := shr(e, 1)} { - if not(eq(and(e,1), 0)){ - mstore(add(local_vars, E_OFFSET),mulmod(mload(add(local_vars, E_OFFSET)), omega, mload(fri_params))) - } - if not(eq(e, 1)){ - omega := mulmod(omega,omega, mload(fri_params)) - } + local_vars.e = local_vars.challenge; + while(e > 0) { + if (e & 1 !=0) { + local_vars.e = mulmod(local_vars.e, omega, fri_params.modulus); + } + if (e !=1){ + omega = mulmod(omega, omega, fri_params.modulus); } + e = e >> 1; } + +// assembly{ +// for{mstore(add(local_vars, E_OFFSET), mload(add(local_vars, CHALLENGE_OFFSET)))} gt(e,0) {e := shr(e, 1)} { +// if not(eq(and(e,1), 0)){ +// mstore(add(local_vars, E_OFFSET),mulmod(mload(add(local_vars, E_OFFSET)), omega, mload(fri_params))) +// } +// if not(eq(e, 1)){ +// omega := mulmod(omega,omega, mload(fri_params)) +// } +// } +// } local_vars.evaluation_points[0][eval_point_ind][j] = local_vars.e; } unchecked{j++;} @@ -239,68 +261,68 @@ library placeholder_verifier { for (uint256 i = 0; i < local_vars.len; i++) { local_vars.zero_index = batched_lpc_verifier.get_quotient_z_i_j_from_proof_be(blob, proof_map.eval_proof_combined_value_offset, i, 0); local_vars.e = field.expmod_static(local_vars.challenge, (fri_params.max_degree + 1) * i, fri_params.modulus); - //local_vars.zero_index = field.fmul(local_vars.zero_index, local_vars.e, fri_params.modulus); + local_vars.zero_index = field.fmul(local_vars.zero_index, local_vars.e, fri_params.modulus); //local_vars.T_consolidated = field.fadd(local_vars.T_consolidated, local_vars.zero_index, fri_params.modulus); - assembly { - mstore( - // local_vars.zero_index - add(local_vars, ZERO_INDEX_OFFSET), - // local_vars.zero_index * local_vars.e - mulmod( - // local_vars.zero_index - mload(add(local_vars, ZERO_INDEX_OFFSET)), - // local_vars.e - mload(add(local_vars, E_OFFSET)), - // modulus - mload(fri_params) - ) - ) - mstore( - // local_vars.T_consolidated - add(local_vars, T_CONSOLIDATED_OFFSET), - // local_vars.T_consolidated + local_vars.zero_index - addmod( - // local_vars.T_consolidated - mload(add(local_vars, T_CONSOLIDATED_OFFSET)), - // local_vars.zero_index - mload(add(local_vars, ZERO_INDEX_OFFSET)), - // modulus - mload(fri_params) - ) - ) - } +// assembly { +// mstore( +// // local_vars.zero_index +// add(local_vars, ZERO_INDEX_OFFSET), +// // local_vars.zero_index * local_vars.e +// mulmod( +// // local_vars.zero_index +// mload(add(local_vars, ZERO_INDEX_OFFSET)), +// // local_vars.e +// mload(add(local_vars, E_OFFSET)), +// // modulus +// mload(fri_params) +// ) +// ) +// mstore( +// // local_vars.T_consolidated +// add(local_vars, T_CONSOLIDATED_OFFSET), +// // local_vars.T_consolidated + local_vars.zero_index +// addmod( +// // local_vars.T_consolidated +// mload(add(local_vars, T_CONSOLIDATED_OFFSET)), +// // local_vars.zero_index +// mload(add(local_vars, ZERO_INDEX_OFFSET)), +// // modulus +// mload(fri_params) +// ) +// ) +// } } local_vars.Z_at_challenge = field.expmod_static(local_vars.challenge, common_data.rows_amount, fri_params.modulus); - //local_vars.Z_at_challenge = field.fsub(local_vars.Z_at_challenge, 1, fri_params.modulus); - //local_vars.Z_at_challenge = field.fmul(local_vars.Z_at_challenge, local_vars.T_consolidated, fri_params.modulus); - assembly { - mstore( - // local_vars.Z_at_challenge - add(local_vars, Z_AT_CHALLENGE_OFFSET), - // local_vars.Z_at_challenge - 1 - addmod( - // Z_at_challenge - mload(add(local_vars, Z_AT_CHALLENGE_OFFSET)), - // -1 - sub(mload(fri_params), 1), - // modulus - mload(fri_params) - ) - ) - mstore( - // local_vars.Z_at_challenge - add(local_vars, Z_AT_CHALLENGE_OFFSET), - // Z_at_challenge * T_consolidated - mulmod( - // Z_at_challenge - mload(add(local_vars, Z_AT_CHALLENGE_OFFSET)), - // T_consolidated - mload(add(local_vars, T_CONSOLIDATED_OFFSET)), - // modulus - mload(fri_params) - ) - ) - } + local_vars.Z_at_challenge = field.fsub(local_vars.Z_at_challenge, 1, fri_params.modulus); + local_vars.Z_at_challenge = field.fmul(local_vars.Z_at_challenge, local_vars.T_consolidated, fri_params.modulus); +// assembly { +// mstore( +// // local_vars.Z_at_challenge +// add(local_vars, Z_AT_CHALLENGE_OFFSET), +// // local_vars.Z_at_challenge - 1 +// addmod( +// // Z_at_challenge +// mload(add(local_vars, Z_AT_CHALLENGE_OFFSET)), +// // -1 +// sub(mload(fri_params), 1), +// // modulus +// mload(fri_params) +// ) +// ) +// mstore( +// // local_vars.Z_at_challenge +// add(local_vars, Z_AT_CHALLENGE_OFFSET), +// // Z_at_challenge * T_consolidated +// mulmod( +// // Z_at_challenge +// mload(add(local_vars, Z_AT_CHALLENGE_OFFSET)), +// // T_consolidated +// mload(add(local_vars, T_CONSOLIDATED_OFFSET)), +// // modulus +// mload(fri_params) +// ) +// ) +// } if (local_vars.F_consolidated != local_vars.Z_at_challenge) { return false; } diff --git a/contracts/test/algebra/polynomial.sol b/contracts/test/algebra/polynomial.sol index 7158f47..d74ef7e 100644 --- a/contracts/test/algebra/polynomial.sol +++ b/contracts/test/algebra/polynomial.sol @@ -22,292 +22,292 @@ import '../../algebra/polynomial.sol'; import '../../algebra/field.sol'; contract TestPolynomial { - function test_polynomial_evaluation_aDeg15_bDeg20() public { - uint256 modulus = 0x73EDA753299D7D483339D80809A1D80553BDA402FFFE5BFEFFFFFFFF00000001; - uint256 point = 29181788893541448323641420882899287003407869828616354768876013788195436701687; - - uint256 n = 15; - uint256 result_a = 6087121465387618081502340300909472999282953585598710376192835153632019218963; - uint256[] memory coeffs_a = new uint256[](n); - coeffs_a[0] = uint256(29135246070618182435293609602910730244152485013833232540636066773204938023159); - coeffs_a[1] = uint256(29820856615386048020899474739106429725468586761566726383110907732707585395070); - coeffs_a[2] = uint256(6141376241054991133837881641035114479005780891721069008822579092412859507557); - coeffs_a[3] = uint256(47270625497906931197284315799206789455947671593463023948351667562821603025083); - coeffs_a[4] = uint256(10633691948873803850726286752665763319581961325899381663045673217431133232403); - coeffs_a[5] = uint256(35743225196793230753456835611894982415465383573468547134137830527094423969441); - coeffs_a[6] = uint256(11095899091221158146050644472012634598480924259309916786485464525252977766796); - coeffs_a[7] = uint256(1244930440393965102009018087688999231120808680813430211825968401808057101372); - coeffs_a[8] = uint256(19724593166493288680364825904999197504015792427325952346255891976331396356228); - coeffs_a[9] = uint256(38408411425399439771837106418034053577006029347423723893429173534755556895199); - coeffs_a[10] = uint256(4658975721346512193393156525603803122039610642117531148526861112467156590357); - coeffs_a[11] = uint256(46805705709368799026384402881182356552335393525153073779339891998779006078469); - coeffs_a[12] = uint256(40270035943400403518245235869503406015606750823522126415839328954233300286377); - coeffs_a[13] = uint256(19242274791613852994062046708895011528612116405970139599063224375941096114882); - coeffs_a[14] = uint256(51210933877630050308911600222337475468419365406384948922830920749543447648049); - require(result_a == polynomial.evaluate(coeffs_a, point, modulus), "Polynomial a evaluation result is not correct"); - - n = 20; - uint256 result_b = 14517755454571204328742925318278771894557514434895094535074691459831465705004; - uint256[] memory coeffs_b = new uint256[](n); - coeffs_b[0] = uint256(9431499787488894661149008816741984285479906304659581068194228584271601821363); - coeffs_b[1] = uint256(19914219003517389622168654107101311151701175704807593473548482072156090428707); - coeffs_b[2] = uint256(44931596822430795150017214398013071750380091009533282849366498625029136164396); - coeffs_b[3] = uint256(24025425256734057189567832606585310567511743595144171994194923116970809772487); - coeffs_b[4] = uint256(21580461055586947713328941209662714297922130889885371283592837262521819198071); - coeffs_b[5] = uint256(37850576799824404121391297127212044293049670277401071583728033823195158878689); - coeffs_b[6] = uint256(3087253529827184297545196053661353398470378941807545958331198657843057961597); - coeffs_b[7] = uint256(26265505140581246167550926293805491802252716426496777850095465156467683277437); - coeffs_b[8] = uint256(41952830726100325426499267445447370217400512259695909516569834752872435245759); - coeffs_b[9] = uint256(19344921746059654747502601345586334685883792321190351694344175229501382633075); - coeffs_b[10] = uint256(2128622413577031182362945246286329298818092542124176825899180618346520675512); - coeffs_b[11] = uint256(29680749508369685446631344198736672733948619934942633042963621944920892630113); - coeffs_b[12] = uint256(27282144339657647103810869451633904237288248759014303365519546329219102502484); - coeffs_b[13] = uint256(30236225682862859673566240654273543041071742823407177394289544739341927828094); - coeffs_b[14] = uint256(23706810661846099889322143280186732700514810845757153927793176634091965006451); - coeffs_b[15] = uint256(23023364941012694988125507559293488787855453380210963964235667344442697080504); - coeffs_b[16] = uint256(3388153169693156343924982871345687843110174721345985010131272339295368590350); - coeffs_b[17] = uint256(21629737092293633841808483441609502152835687222025838343942592706898443398521); - coeffs_b[18] = uint256(35421751487726592093113600554305470436997497989275001484151724878012223715200); - coeffs_b[19] = uint256(51247318461592091828807885904778616016408560728322067993790715232596969553727); - require(result_b == polynomial.evaluate(coeffs_b, point, modulus), "Polynomial b evaluation result is not correct"); - } - - function test_polynomial_addition_aDeg15_bDeg20() public { - uint256 modulus = 0x73EDA753299D7D483339D80809A1D80553BDA402FFFE5BFEFFFFFFFF00000001; - uint256 point = 29181788893541448323641420882899287003407869828616354768876013788195436701687; - - uint256 n = 15; - uint256[] memory coeffs_a = new uint256[](n); - coeffs_a[0] = uint256(29135246070618182435293609602910730244152485013833232540636066773204938023159); - coeffs_a[1] = uint256(29820856615386048020899474739106429725468586761566726383110907732707585395070); - coeffs_a[2] = uint256(6141376241054991133837881641035114479005780891721069008822579092412859507557); - coeffs_a[3] = uint256(47270625497906931197284315799206789455947671593463023948351667562821603025083); - coeffs_a[4] = uint256(10633691948873803850726286752665763319581961325899381663045673217431133232403); - coeffs_a[5] = uint256(35743225196793230753456835611894982415465383573468547134137830527094423969441); - coeffs_a[6] = uint256(11095899091221158146050644472012634598480924259309916786485464525252977766796); - coeffs_a[7] = uint256(1244930440393965102009018087688999231120808680813430211825968401808057101372); - coeffs_a[8] = uint256(19724593166493288680364825904999197504015792427325952346255891976331396356228); - coeffs_a[9] = uint256(38408411425399439771837106418034053577006029347423723893429173534755556895199); - coeffs_a[10] = uint256(4658975721346512193393156525603803122039610642117531148526861112467156590357); - coeffs_a[11] = uint256(46805705709368799026384402881182356552335393525153073779339891998779006078469); - coeffs_a[12] = uint256(40270035943400403518245235869503406015606750823522126415839328954233300286377); - coeffs_a[13] = uint256(19242274791613852994062046708895011528612116405970139599063224375941096114882); - coeffs_a[14] = uint256(51210933877630050308911600222337475468419365406384948922830920749543447648049); - - n = 20; - uint256[] memory coeffs_b = new uint256[](n); - coeffs_b[0] = uint256(9431499787488894661149008816741984285479906304659581068194228584271601821363); - coeffs_b[1] = uint256(19914219003517389622168654107101311151701175704807593473548482072156090428707); - coeffs_b[2] = uint256(44931596822430795150017214398013071750380091009533282849366498625029136164396); - coeffs_b[3] = uint256(24025425256734057189567832606585310567511743595144171994194923116970809772487); - coeffs_b[4] = uint256(21580461055586947713328941209662714297922130889885371283592837262521819198071); - coeffs_b[5] = uint256(37850576799824404121391297127212044293049670277401071583728033823195158878689); - coeffs_b[6] = uint256(3087253529827184297545196053661353398470378941807545958331198657843057961597); - coeffs_b[7] = uint256(26265505140581246167550926293805491802252716426496777850095465156467683277437); - coeffs_b[8] = uint256(41952830726100325426499267445447370217400512259695909516569834752872435245759); - coeffs_b[9] = uint256(19344921746059654747502601345586334685883792321190351694344175229501382633075); - coeffs_b[10] = uint256(2128622413577031182362945246286329298818092542124176825899180618346520675512); - coeffs_b[11] = uint256(29680749508369685446631344198736672733948619934942633042963621944920892630113); - coeffs_b[12] = uint256(27282144339657647103810869451633904237288248759014303365519546329219102502484); - coeffs_b[13] = uint256(30236225682862859673566240654273543041071742823407177394289544739341927828094); - coeffs_b[14] = uint256(23706810661846099889322143280186732700514810845757153927793176634091965006451); - coeffs_b[15] = uint256(23023364941012694988125507559293488787855453380210963964235667344442697080504); - coeffs_b[16] = uint256(3388153169693156343924982871345687843110174721345985010131272339295368590350); - coeffs_b[17] = uint256(21629737092293633841808483441609502152835687222025838343942592706898443398521); - coeffs_b[18] = uint256(35421751487726592093113600554305470436997497989275001484151724878012223715200); - coeffs_b[19] = uint256(51247318461592091828807885904778616016408560728322067993790715232596969553727); - - n = 20; - uint256[] memory coeffs_sum = new uint256[](n); - coeffs_sum[0] = uint256(38566745858107077096442618419652714529632391318492813608830295357476539844522); - coeffs_sum[1] = uint256(49735075618903437643068128846207740877169762466374319856659389804863675823777); - coeffs_sum[2] = uint256(51072973063485786283855096039048186229385871901254351858189077717441995671953); - coeffs_sum[3] = uint256(18860175579514797907404407897606134185768862688079558119942931979853831613057); - coeffs_sum[4] = uint256(32214153004460751564055227962328477617504092215784752946638510479952952430474); - coeffs_sum[5] = uint256(21157926821491444395400392230921060870824501350341980895262205650351001663617); - coeffs_sum[6] = uint256(14183152621048342443595840525673987996951303201117462744816663183096035728393); - coeffs_sum[7] = uint256(27510435580975211269559944381494491033373525107310208061921433558275740378809); - coeffs_sum[8] = uint256(9241548717467423627416352842260601883725752186494224040222068029265250417474); - coeffs_sum[9] = uint256(5317457996332904039891967255434422425199269168086437765169690064318358343761); - coeffs_sum[10] = uint256(6787598134923543375756101771890132420857703184241707974426041730813677265869); - coeffs_sum[11] = uint256(24050580042612293993568006571733063448593460959568068999699855243761317524069); - coeffs_sum[12] = uint256(15116305107931860142608364812951344415204447082008791958755216583513821604348); - coeffs_sum[13] = uint256(49478500474476712667628287363168554569683859229377316993352769115283023942976); - coeffs_sum[14] = uint256(22481869364349959718786002994338242331243623751614465028020438683696831469987); - coeffs_sum[15] = uint256(23023364941012694988125507559293488787855453380210963964235667344442697080504); - coeffs_sum[16] = uint256(3388153169693156343924982871345687843110174721345985010131272339295368590350); - coeffs_sum[17] = uint256(21629737092293633841808483441609502152835687222025838343942592706898443398521); - coeffs_sum[18] = uint256(35421751487726592093113600554305470436997497989275001484151724878012223715200); - coeffs_sum[19] = uint256(51247318461592091828807885904778616016408560728322067993790715232596969553727); - uint256[] memory a_plus_b = polynomial.add_poly(coeffs_a, coeffs_b, modulus); - for (uint i = 0; i < 20; i++){ - require(coeffs_sum[i] == a_plus_b[i], "Polynomial addition result is not correct"); - } - } - - function test_polynomial_multiplication_aDeg15_bDeg20() public { - uint256 modulus = 0x73EDA753299D7D483339D80809A1D80553BDA402FFFE5BFEFFFFFFFF00000001; - uint256 point = 29181788893541448323641420882899287003407869828616354768876013788195436701687; - - uint256 n = 15; - uint256[] memory coeffs_a = new uint256[](n); - coeffs_a[0] = uint256(29135246070618182435293609602910730244152485013833232540636066773204938023159); - coeffs_a[1] = uint256(29820856615386048020899474739106429725468586761566726383110907732707585395070); - coeffs_a[2] = uint256(6141376241054991133837881641035114479005780891721069008822579092412859507557); - coeffs_a[3] = uint256(47270625497906931197284315799206789455947671593463023948351667562821603025083); - coeffs_a[4] = uint256(10633691948873803850726286752665763319581961325899381663045673217431133232403); - coeffs_a[5] = uint256(35743225196793230753456835611894982415465383573468547134137830527094423969441); - coeffs_a[6] = uint256(11095899091221158146050644472012634598480924259309916786485464525252977766796); - coeffs_a[7] = uint256(1244930440393965102009018087688999231120808680813430211825968401808057101372); - coeffs_a[8] = uint256(19724593166493288680364825904999197504015792427325952346255891976331396356228); - coeffs_a[9] = uint256(38408411425399439771837106418034053577006029347423723893429173534755556895199); - coeffs_a[10] = uint256(4658975721346512193393156525603803122039610642117531148526861112467156590357); - coeffs_a[11] = uint256(46805705709368799026384402881182356552335393525153073779339891998779006078469); - coeffs_a[12] = uint256(40270035943400403518245235869503406015606750823522126415839328954233300286377); - coeffs_a[13] = uint256(19242274791613852994062046708895011528612116405970139599063224375941096114882); - coeffs_a[14] = uint256(51210933877630050308911600222337475468419365406384948922830920749543447648049); - - n = 20; - uint256[] memory coeffs_b = new uint256[](n); - coeffs_b[0] = uint256(9431499787488894661149008816741984285479906304659581068194228584271601821363); - coeffs_b[1] = uint256(19914219003517389622168654107101311151701175704807593473548482072156090428707); - coeffs_b[2] = uint256(44931596822430795150017214398013071750380091009533282849366498625029136164396); - coeffs_b[3] = uint256(24025425256734057189567832606585310567511743595144171994194923116970809772487); - coeffs_b[4] = uint256(21580461055586947713328941209662714297922130889885371283592837262521819198071); - coeffs_b[5] = uint256(37850576799824404121391297127212044293049670277401071583728033823195158878689); - coeffs_b[6] = uint256(3087253529827184297545196053661353398470378941807545958331198657843057961597); - coeffs_b[7] = uint256(26265505140581246167550926293805491802252716426496777850095465156467683277437); - coeffs_b[8] = uint256(41952830726100325426499267445447370217400512259695909516569834752872435245759); - coeffs_b[9] = uint256(19344921746059654747502601345586334685883792321190351694344175229501382633075); - coeffs_b[10] = uint256(2128622413577031182362945246286329298818092542124176825899180618346520675512); - coeffs_b[11] = uint256(29680749508369685446631344198736672733948619934942633042963621944920892630113); - coeffs_b[12] = uint256(27282144339657647103810869451633904237288248759014303365519546329219102502484); - coeffs_b[13] = uint256(30236225682862859673566240654273543041071742823407177394289544739341927828094); - coeffs_b[14] = uint256(23706810661846099889322143280186732700514810845757153927793176634091965006451); - coeffs_b[15] = uint256(23023364941012694988125507559293488787855453380210963964235667344442697080504); - coeffs_b[16] = uint256(3388153169693156343924982871345687843110174721345985010131272339295368590350); - coeffs_b[17] = uint256(21629737092293633841808483441609502152835687222025838343942592706898443398521); - coeffs_b[18] = uint256(35421751487726592093113600554305470436997497989275001484151724878012223715200); - coeffs_b[19] = uint256(51247318461592091828807885904778616016408560728322067993790715232596969553727); - - n = 34; - uint256[] memory coeffs_mul = new uint256[](n); - coeffs_mul[0] = uint256(37533930090538066267753935842943846050427386076332358641707475707016789837623); - coeffs_mul[1] = uint256(47997474827940974867595560069133204316635668853975783411868144934517799630257); - coeffs_mul[2] = uint256(1917812253734727619624457293292225427086457420706032852831029532563865282263); - coeffs_mul[3] = uint256(26212801959926421615988853715178360840421405071839972090171187146524981004330); - coeffs_mul[4] = uint256(42567611215859419088272916052096938096536655060677217612978131471970454605676); - coeffs_mul[5] = uint256(46394993799345328054508154151695858994208216167095094174902253867775481522437); - coeffs_mul[6] = uint256(20519352080707837214954538284629627728984021605224427883938387166364805957269); - coeffs_mul[7] = uint256(19189103058201272993245747556450737602323173312259009573231273411011357800099); - coeffs_mul[8] = uint256(16878523013931917228427597782295814041409508480108497773995133557810034283738); - coeffs_mul[9] = uint256(1709361816004059697211981489021624911579363367733572865941328728404595335901); - coeffs_mul[10] = uint256(11828988500277342831184475690700416275492331300736257452219735846810944351189); - coeffs_mul[11] = uint256(16842991238789447636848428573227641209397136677079202513989821586777933501844); - coeffs_mul[12] = uint256(5597663563425847486922121582251579509247251544553749901136631061772928582808); - coeffs_mul[13] = uint256(482135445228095810093160974966147287054002765563993310093490692139438380230); - coeffs_mul[14] = uint256(13905824432491707648259679671870141581288318774565346608000283436127372773167); - coeffs_mul[15] = uint256(16375134676320305895561598576026728223379608577349881165131707309883844057320); - coeffs_mul[16] = uint256(16010522691100177409851687539918517262369933471234404997621537211286799494223); - coeffs_mul[17] = uint256(18768534206594136969805132767670747980850012772916557830976849704735293914090); - coeffs_mul[18] = uint256(36493313728249215648829445358814173989646918222346082496428578811018101060311); - coeffs_mul[19] = uint256(18221277377759474499596609674250961080328390419413932671923627922240111296267); - coeffs_mul[20] = uint256(46409467389750574827901667236327314065850684926758924235610513115492493559646); - coeffs_mul[21] = uint256(3510727876983825753667642268958058096744972320304970847457145695168428857381); - coeffs_mul[22] = uint256(36790342906406467650548089102243728453033073540782039995393979051286531653213); - coeffs_mul[23] = uint256(46999714242460141343130759379348944184527291182925550306059171664885708187069); - coeffs_mul[24] = uint256(29738427097740912988167149602928055573571475515804158893694081288134282772188); - coeffs_mul[25] = uint256(50965507495409388631385471767707484119447176729209188317844871017127104171944); - coeffs_mul[26] = uint256(19596119894133871222204617379077248827374731478563854737729705102559605309677); - coeffs_mul[27] = uint256(3403547379095613756589275649840742000643503883812744945548631032348072128174); - coeffs_mul[28] = uint256(34098577277941187270553358393270004633417305840052944729958733866934440431173); - coeffs_mul[29] = uint256(11768402651734326676950704977229314197630411314233784115317419118135498714266); - coeffs_mul[30] = uint256(8587506466225587701380478205188659349186716946495888874999468084821337869797); - coeffs_mul[31] = uint256(23095283302844004528854017195459146622662540890046538607288251350326507217544); - coeffs_mul[32] = uint256(45815246088579244773243928572080583080745677230128753810473105432520879086931); - coeffs_mul[33] = uint256(18846607898602946561630534830837489232188727774005472911573896473436323752210); - uint256[] memory a_mul_b = polynomial.mul_poly(coeffs_a, coeffs_b, modulus); - require(coeffs_mul.length == a_mul_b.length, "Polynomial multiplication result length is not correct"); - for (uint i = 0; i < 34; i++){ - require(coeffs_mul[i] == a_mul_b[i], "Polynomial multiplication result is not correct"); - } - } - - function test_lagrange_interpolation() public { - uint256 modulus = 0x73EDA753299D7D483339D80809A1D80553BDA402FFFE5BFEFFFFFFFF00000001; - uint256 n = 3; - uint256[] memory xs = new uint256[](n); - xs[0] = uint256(4183765791887380684480255226180760560865026071039013052010193328713615339463); - xs[1] = uint256(41539907117522402745491644732028924977664979905128012893033887353901692293856); - xs[2] = uint256(40744787028008542045211760826403355424425002249388314752473792073759989008118); - uint256[] memory fxs = new uint256[](n); - fxs[0] = uint256(31102318824077738286102042205447650848522120060321475185704476031394567067018); - fxs[1] = uint256(28448837760680269221266237156411444765443870003701617079904611621539413948874); - fxs[2] = uint256(21652586267347562689641261610058946541341503152256840037277559314528271150653); - uint256[] memory etalon_interpolated_poly = new uint256[](n); - etalon_interpolated_poly[0] = uint256(45863909754770953574941211132560772200443894513098009385289015884407326107132); - etalon_interpolated_poly[1] = uint256(306400884220968022577340188138333996135439223138113708607130720467290203462); - etalon_interpolated_poly[2] = uint256(40785886772544473963190998835184144050681147583222663910965803442251397137695); - uint256[] memory interpolated_poly = polynomial.lagrange_interpolation(xs, fxs, modulus); - require(etalon_interpolated_poly.length == interpolated_poly.length, "Lagrange interpolation result length is not correct"); - for (uint256 i = 0; i < interpolated_poly.length; i++) { - require(etalon_interpolated_poly[i] == interpolated_poly[i], "Lagrange interpolation result is not correct"); - } - } - - function test_lagrange_interpolation_by_2_points_neg_x() public { - uint256 modulus = 0x73EDA753299D7D483339D80809A1D80553BDA402FFFE5BFEFFFFFFFF00000001; - uint256 x = 44038862670345190294673664060592308181004034858773208775317302252436776935563; - uint256 dblXInv = field.inverse_static((2 * x) % modulus, modulus); - uint256 fx = 49493457902001516273705036835225226573976620701363464555283163139256350994103; - uint256 f_minus_x = 28976720826705814608978164416095000797859924214963526570316110117483425299187; - uint256 xInv = 47098724223474821775521332453585531707749745902334713572669745831884543336149; - uint256 point = 48153868050457893764636815688936466338946039141187270065866853882046790835184; - uint256 interpolate_p = 47167026852270603624692004883323338002565421423261929593965935305477245075449; - uint256 interpolate_p2 = 41898178529415016769936269258460710167440290345996221365328211911015908966385; - uint256 ans = polynomial.interpolate_evaluate_by_2_points_neg_x(x, dblXInv, fx, f_minus_x, point, modulus); - require(interpolate_p == ans, "Lagrange interpolation evaluation result is not correct"); - } - - function test_lagrange_interpolation_by_2_points1() public { - uint256 modulus = 0x73EDA753299D7D483339D80809A1D80553BDA402FFFE5BFEFFFFFFFF00000001; - uint256[] memory x = new uint256[](2); - x[0] = 44038862670345190294673664060592308181004034858773208775317302252436776935563; - x[1] = modulus - 44038862670345190294673664060592308181004034858773208775317302252436776935563; - uint256[] memory fx = new uint256[](2); - fx[0] = 49493457902001516273705036835225226573976620701363464555283163139256350994103; - fx[1] = 28976720826705814608978164416095000797859924214963526570316110117483425299187; - uint256 point = 48153868050457893764636815688936466338946039141187270065866853882046790835184; - uint256 interpolate_p = 47167026852270603624692004883323338002565421423261929593965935305477245075449; - uint256 ans = polynomial.interpolate_evaluate_by_2_points(x, fx, point, modulus); - require(interpolate_p == ans, "Lagrange interpolation evaluation result is not correct"); - } - - function test_lagrange_interpolation_by_2_points2() public { - uint256 modulus = 0x73EDA753299D7D483339D80809A1D80553BDA402FFFE5BFEFFFFFFFF00000001; - uint256[] memory x = new uint256[](2); - x[0] = 41647106870606161616591387966715847902573139189804717221698810708101242940521; - x[1] = 7618811309034160695676016680056885734768587155692572468640041509483598127985; - uint256[] memory fx = new uint256[](2); - fx[0] = 10830495527854936642823522147966338959848560248013811437627905910805426798945; - fx[1] = 42429922444448686604017683269922063440964335484964201106691762991369582981200; - uint256 point = 24868796103580083179645354023730047815734900319155333463213446778245767615297; - uint256 interpolate_p = 40762883383788727750124127024453804465754478296506721859951139537974273249132; - uint256 ans = polynomial.interpolate_evaluate_by_2_points(x, fx, point, modulus); - require(interpolate_p == ans, "Lagrange interpolation evaluation result is not correct"); - } - - function test_lagrange_interpolate_then_evaluate_by_2_points() public { - uint256 modulus = 0x73EDA753299D7D483339D80809A1D80553BDA402FFFE5BFEFFFFFFFF00000001; - uint256[] memory x = new uint256[](2); - x[0] = 41647106870606161616591387966715847902573139189804717221698810708101242940521; - x[1] = 7618811309034160695676016680056885734768587155692572468640041509483598127985; - uint256[] memory fx = new uint256[](2); - fx[0] = 10830495527854936642823522147966338959848560248013811437627905910805426798945; - fx[1] = 42429922444448686604017683269922063440964335484964201106691762991369582981200; - uint256 point = 24868796103580083179645354023730047815734900319155333463213446778245767615297; - uint256 interpolate_p = 40762883383788727750124127024453804465754478296506721859951139537974273249132; - uint256[] memory coeffs = polynomial.interpolate(x, fx, modulus); - require(interpolate_p == polynomial.evaluate(coeffs, point, modulus), "Evaluation of interpolated polynomial is not correct"); - } +// function test_polynomial_evaluation_aDeg15_bDeg20() public { +// uint256 modulus = 0x73EDA753299D7D483339D80809A1D80553BDA402FFFE5BFEFFFFFFFF00000001; +// uint256 point = 29181788893541448323641420882899287003407869828616354768876013788195436701687; +// +// uint256 n = 15; +// uint256 result_a = 6087121465387618081502340300909472999282953585598710376192835153632019218963; +// uint256[] memory coeffs_a = new uint256[](n); +// coeffs_a[0] = uint256(29135246070618182435293609602910730244152485013833232540636066773204938023159); +// coeffs_a[1] = uint256(29820856615386048020899474739106429725468586761566726383110907732707585395070); +// coeffs_a[2] = uint256(6141376241054991133837881641035114479005780891721069008822579092412859507557); +// coeffs_a[3] = uint256(47270625497906931197284315799206789455947671593463023948351667562821603025083); +// coeffs_a[4] = uint256(10633691948873803850726286752665763319581961325899381663045673217431133232403); +// coeffs_a[5] = uint256(35743225196793230753456835611894982415465383573468547134137830527094423969441); +// coeffs_a[6] = uint256(11095899091221158146050644472012634598480924259309916786485464525252977766796); +// coeffs_a[7] = uint256(1244930440393965102009018087688999231120808680813430211825968401808057101372); +// coeffs_a[8] = uint256(19724593166493288680364825904999197504015792427325952346255891976331396356228); +// coeffs_a[9] = uint256(38408411425399439771837106418034053577006029347423723893429173534755556895199); +// coeffs_a[10] = uint256(4658975721346512193393156525603803122039610642117531148526861112467156590357); +// coeffs_a[11] = uint256(46805705709368799026384402881182356552335393525153073779339891998779006078469); +// coeffs_a[12] = uint256(40270035943400403518245235869503406015606750823522126415839328954233300286377); +// coeffs_a[13] = uint256(19242274791613852994062046708895011528612116405970139599063224375941096114882); +// coeffs_a[14] = uint256(51210933877630050308911600222337475468419365406384948922830920749543447648049); +// require(result_a == polynomial.evaluate(coeffs_a, point, modulus), "Polynomial a evaluation result is not correct"); +// +// n = 20; +// uint256 result_b = 14517755454571204328742925318278771894557514434895094535074691459831465705004; +// uint256[] memory coeffs_b = new uint256[](n); +// coeffs_b[0] = uint256(9431499787488894661149008816741984285479906304659581068194228584271601821363); +// coeffs_b[1] = uint256(19914219003517389622168654107101311151701175704807593473548482072156090428707); +// coeffs_b[2] = uint256(44931596822430795150017214398013071750380091009533282849366498625029136164396); +// coeffs_b[3] = uint256(24025425256734057189567832606585310567511743595144171994194923116970809772487); +// coeffs_b[4] = uint256(21580461055586947713328941209662714297922130889885371283592837262521819198071); +// coeffs_b[5] = uint256(37850576799824404121391297127212044293049670277401071583728033823195158878689); +// coeffs_b[6] = uint256(3087253529827184297545196053661353398470378941807545958331198657843057961597); +// coeffs_b[7] = uint256(26265505140581246167550926293805491802252716426496777850095465156467683277437); +// coeffs_b[8] = uint256(41952830726100325426499267445447370217400512259695909516569834752872435245759); +// coeffs_b[9] = uint256(19344921746059654747502601345586334685883792321190351694344175229501382633075); +// coeffs_b[10] = uint256(2128622413577031182362945246286329298818092542124176825899180618346520675512); +// coeffs_b[11] = uint256(29680749508369685446631344198736672733948619934942633042963621944920892630113); +// coeffs_b[12] = uint256(27282144339657647103810869451633904237288248759014303365519546329219102502484); +// coeffs_b[13] = uint256(30236225682862859673566240654273543041071742823407177394289544739341927828094); +// coeffs_b[14] = uint256(23706810661846099889322143280186732700514810845757153927793176634091965006451); +// coeffs_b[15] = uint256(23023364941012694988125507559293488787855453380210963964235667344442697080504); +// coeffs_b[16] = uint256(3388153169693156343924982871345687843110174721345985010131272339295368590350); +// coeffs_b[17] = uint256(21629737092293633841808483441609502152835687222025838343942592706898443398521); +// coeffs_b[18] = uint256(35421751487726592093113600554305470436997497989275001484151724878012223715200); +// coeffs_b[19] = uint256(51247318461592091828807885904778616016408560728322067993790715232596969553727); +// require(result_b == polynomial.evaluate(coeffs_b, point, modulus), "Polynomial b evaluation result is not correct"); +// } +// +// function test_polynomial_addition_aDeg15_bDeg20() public { +// uint256 modulus = 0x73EDA753299D7D483339D80809A1D80553BDA402FFFE5BFEFFFFFFFF00000001; +// uint256 point = 29181788893541448323641420882899287003407869828616354768876013788195436701687; +// +// uint256 n = 15; +// uint256[] memory coeffs_a = new uint256[](n); +// coeffs_a[0] = uint256(29135246070618182435293609602910730244152485013833232540636066773204938023159); +// coeffs_a[1] = uint256(29820856615386048020899474739106429725468586761566726383110907732707585395070); +// coeffs_a[2] = uint256(6141376241054991133837881641035114479005780891721069008822579092412859507557); +// coeffs_a[3] = uint256(47270625497906931197284315799206789455947671593463023948351667562821603025083); +// coeffs_a[4] = uint256(10633691948873803850726286752665763319581961325899381663045673217431133232403); +// coeffs_a[5] = uint256(35743225196793230753456835611894982415465383573468547134137830527094423969441); +// coeffs_a[6] = uint256(11095899091221158146050644472012634598480924259309916786485464525252977766796); +// coeffs_a[7] = uint256(1244930440393965102009018087688999231120808680813430211825968401808057101372); +// coeffs_a[8] = uint256(19724593166493288680364825904999197504015792427325952346255891976331396356228); +// coeffs_a[9] = uint256(38408411425399439771837106418034053577006029347423723893429173534755556895199); +// coeffs_a[10] = uint256(4658975721346512193393156525603803122039610642117531148526861112467156590357); +// coeffs_a[11] = uint256(46805705709368799026384402881182356552335393525153073779339891998779006078469); +// coeffs_a[12] = uint256(40270035943400403518245235869503406015606750823522126415839328954233300286377); +// coeffs_a[13] = uint256(19242274791613852994062046708895011528612116405970139599063224375941096114882); +// coeffs_a[14] = uint256(51210933877630050308911600222337475468419365406384948922830920749543447648049); +// +// n = 20; +// uint256[] memory coeffs_b = new uint256[](n); +// coeffs_b[0] = uint256(9431499787488894661149008816741984285479906304659581068194228584271601821363); +// coeffs_b[1] = uint256(19914219003517389622168654107101311151701175704807593473548482072156090428707); +// coeffs_b[2] = uint256(44931596822430795150017214398013071750380091009533282849366498625029136164396); +// coeffs_b[3] = uint256(24025425256734057189567832606585310567511743595144171994194923116970809772487); +// coeffs_b[4] = uint256(21580461055586947713328941209662714297922130889885371283592837262521819198071); +// coeffs_b[5] = uint256(37850576799824404121391297127212044293049670277401071583728033823195158878689); +// coeffs_b[6] = uint256(3087253529827184297545196053661353398470378941807545958331198657843057961597); +// coeffs_b[7] = uint256(26265505140581246167550926293805491802252716426496777850095465156467683277437); +// coeffs_b[8] = uint256(41952830726100325426499267445447370217400512259695909516569834752872435245759); +// coeffs_b[9] = uint256(19344921746059654747502601345586334685883792321190351694344175229501382633075); +// coeffs_b[10] = uint256(2128622413577031182362945246286329298818092542124176825899180618346520675512); +// coeffs_b[11] = uint256(29680749508369685446631344198736672733948619934942633042963621944920892630113); +// coeffs_b[12] = uint256(27282144339657647103810869451633904237288248759014303365519546329219102502484); +// coeffs_b[13] = uint256(30236225682862859673566240654273543041071742823407177394289544739341927828094); +// coeffs_b[14] = uint256(23706810661846099889322143280186732700514810845757153927793176634091965006451); +// coeffs_b[15] = uint256(23023364941012694988125507559293488787855453380210963964235667344442697080504); +// coeffs_b[16] = uint256(3388153169693156343924982871345687843110174721345985010131272339295368590350); +// coeffs_b[17] = uint256(21629737092293633841808483441609502152835687222025838343942592706898443398521); +// coeffs_b[18] = uint256(35421751487726592093113600554305470436997497989275001484151724878012223715200); +// coeffs_b[19] = uint256(51247318461592091828807885904778616016408560728322067993790715232596969553727); +// +// n = 20; +// uint256[] memory coeffs_sum = new uint256[](n); +// coeffs_sum[0] = uint256(38566745858107077096442618419652714529632391318492813608830295357476539844522); +// coeffs_sum[1] = uint256(49735075618903437643068128846207740877169762466374319856659389804863675823777); +// coeffs_sum[2] = uint256(51072973063485786283855096039048186229385871901254351858189077717441995671953); +// coeffs_sum[3] = uint256(18860175579514797907404407897606134185768862688079558119942931979853831613057); +// coeffs_sum[4] = uint256(32214153004460751564055227962328477617504092215784752946638510479952952430474); +// coeffs_sum[5] = uint256(21157926821491444395400392230921060870824501350341980895262205650351001663617); +// coeffs_sum[6] = uint256(14183152621048342443595840525673987996951303201117462744816663183096035728393); +// coeffs_sum[7] = uint256(27510435580975211269559944381494491033373525107310208061921433558275740378809); +// coeffs_sum[8] = uint256(9241548717467423627416352842260601883725752186494224040222068029265250417474); +// coeffs_sum[9] = uint256(5317457996332904039891967255434422425199269168086437765169690064318358343761); +// coeffs_sum[10] = uint256(6787598134923543375756101771890132420857703184241707974426041730813677265869); +// coeffs_sum[11] = uint256(24050580042612293993568006571733063448593460959568068999699855243761317524069); +// coeffs_sum[12] = uint256(15116305107931860142608364812951344415204447082008791958755216583513821604348); +// coeffs_sum[13] = uint256(49478500474476712667628287363168554569683859229377316993352769115283023942976); +// coeffs_sum[14] = uint256(22481869364349959718786002994338242331243623751614465028020438683696831469987); +// coeffs_sum[15] = uint256(23023364941012694988125507559293488787855453380210963964235667344442697080504); +// coeffs_sum[16] = uint256(3388153169693156343924982871345687843110174721345985010131272339295368590350); +// coeffs_sum[17] = uint256(21629737092293633841808483441609502152835687222025838343942592706898443398521); +// coeffs_sum[18] = uint256(35421751487726592093113600554305470436997497989275001484151724878012223715200); +// coeffs_sum[19] = uint256(51247318461592091828807885904778616016408560728322067993790715232596969553727); +// uint256[] memory a_plus_b = polynomial.add_poly(coeffs_a, coeffs_b, modulus); +// for (uint i = 0; i < 20; i++){ +// require(coeffs_sum[i] == a_plus_b[i], "Polynomial addition result is not correct"); +// } +// } +// +// function test_polynomial_multiplication_aDeg15_bDeg20() public { +// uint256 modulus = 0x73EDA753299D7D483339D80809A1D80553BDA402FFFE5BFEFFFFFFFF00000001; +// uint256 point = 29181788893541448323641420882899287003407869828616354768876013788195436701687; +// +// uint256 n = 15; +// uint256[] memory coeffs_a = new uint256[](n); +// coeffs_a[0] = uint256(29135246070618182435293609602910730244152485013833232540636066773204938023159); +// coeffs_a[1] = uint256(29820856615386048020899474739106429725468586761566726383110907732707585395070); +// coeffs_a[2] = uint256(6141376241054991133837881641035114479005780891721069008822579092412859507557); +// coeffs_a[3] = uint256(47270625497906931197284315799206789455947671593463023948351667562821603025083); +// coeffs_a[4] = uint256(10633691948873803850726286752665763319581961325899381663045673217431133232403); +// coeffs_a[5] = uint256(35743225196793230753456835611894982415465383573468547134137830527094423969441); +// coeffs_a[6] = uint256(11095899091221158146050644472012634598480924259309916786485464525252977766796); +// coeffs_a[7] = uint256(1244930440393965102009018087688999231120808680813430211825968401808057101372); +// coeffs_a[8] = uint256(19724593166493288680364825904999197504015792427325952346255891976331396356228); +// coeffs_a[9] = uint256(38408411425399439771837106418034053577006029347423723893429173534755556895199); +// coeffs_a[10] = uint256(4658975721346512193393156525603803122039610642117531148526861112467156590357); +// coeffs_a[11] = uint256(46805705709368799026384402881182356552335393525153073779339891998779006078469); +// coeffs_a[12] = uint256(40270035943400403518245235869503406015606750823522126415839328954233300286377); +// coeffs_a[13] = uint256(19242274791613852994062046708895011528612116405970139599063224375941096114882); +// coeffs_a[14] = uint256(51210933877630050308911600222337475468419365406384948922830920749543447648049); +// +// n = 20; +// uint256[] memory coeffs_b = new uint256[](n); +// coeffs_b[0] = uint256(9431499787488894661149008816741984285479906304659581068194228584271601821363); +// coeffs_b[1] = uint256(19914219003517389622168654107101311151701175704807593473548482072156090428707); +// coeffs_b[2] = uint256(44931596822430795150017214398013071750380091009533282849366498625029136164396); +// coeffs_b[3] = uint256(24025425256734057189567832606585310567511743595144171994194923116970809772487); +// coeffs_b[4] = uint256(21580461055586947713328941209662714297922130889885371283592837262521819198071); +// coeffs_b[5] = uint256(37850576799824404121391297127212044293049670277401071583728033823195158878689); +// coeffs_b[6] = uint256(3087253529827184297545196053661353398470378941807545958331198657843057961597); +// coeffs_b[7] = uint256(26265505140581246167550926293805491802252716426496777850095465156467683277437); +// coeffs_b[8] = uint256(41952830726100325426499267445447370217400512259695909516569834752872435245759); +// coeffs_b[9] = uint256(19344921746059654747502601345586334685883792321190351694344175229501382633075); +// coeffs_b[10] = uint256(2128622413577031182362945246286329298818092542124176825899180618346520675512); +// coeffs_b[11] = uint256(29680749508369685446631344198736672733948619934942633042963621944920892630113); +// coeffs_b[12] = uint256(27282144339657647103810869451633904237288248759014303365519546329219102502484); +// coeffs_b[13] = uint256(30236225682862859673566240654273543041071742823407177394289544739341927828094); +// coeffs_b[14] = uint256(23706810661846099889322143280186732700514810845757153927793176634091965006451); +// coeffs_b[15] = uint256(23023364941012694988125507559293488787855453380210963964235667344442697080504); +// coeffs_b[16] = uint256(3388153169693156343924982871345687843110174721345985010131272339295368590350); +// coeffs_b[17] = uint256(21629737092293633841808483441609502152835687222025838343942592706898443398521); +// coeffs_b[18] = uint256(35421751487726592093113600554305470436997497989275001484151724878012223715200); +// coeffs_b[19] = uint256(51247318461592091828807885904778616016408560728322067993790715232596969553727); +// +// n = 34; +// uint256[] memory coeffs_mul = new uint256[](n); +// coeffs_mul[0] = uint256(37533930090538066267753935842943846050427386076332358641707475707016789837623); +// coeffs_mul[1] = uint256(47997474827940974867595560069133204316635668853975783411868144934517799630257); +// coeffs_mul[2] = uint256(1917812253734727619624457293292225427086457420706032852831029532563865282263); +// coeffs_mul[3] = uint256(26212801959926421615988853715178360840421405071839972090171187146524981004330); +// coeffs_mul[4] = uint256(42567611215859419088272916052096938096536655060677217612978131471970454605676); +// coeffs_mul[5] = uint256(46394993799345328054508154151695858994208216167095094174902253867775481522437); +// coeffs_mul[6] = uint256(20519352080707837214954538284629627728984021605224427883938387166364805957269); +// coeffs_mul[7] = uint256(19189103058201272993245747556450737602323173312259009573231273411011357800099); +// coeffs_mul[8] = uint256(16878523013931917228427597782295814041409508480108497773995133557810034283738); +// coeffs_mul[9] = uint256(1709361816004059697211981489021624911579363367733572865941328728404595335901); +// coeffs_mul[10] = uint256(11828988500277342831184475690700416275492331300736257452219735846810944351189); +// coeffs_mul[11] = uint256(16842991238789447636848428573227641209397136677079202513989821586777933501844); +// coeffs_mul[12] = uint256(5597663563425847486922121582251579509247251544553749901136631061772928582808); +// coeffs_mul[13] = uint256(482135445228095810093160974966147287054002765563993310093490692139438380230); +// coeffs_mul[14] = uint256(13905824432491707648259679671870141581288318774565346608000283436127372773167); +// coeffs_mul[15] = uint256(16375134676320305895561598576026728223379608577349881165131707309883844057320); +// coeffs_mul[16] = uint256(16010522691100177409851687539918517262369933471234404997621537211286799494223); +// coeffs_mul[17] = uint256(18768534206594136969805132767670747980850012772916557830976849704735293914090); +// coeffs_mul[18] = uint256(36493313728249215648829445358814173989646918222346082496428578811018101060311); +// coeffs_mul[19] = uint256(18221277377759474499596609674250961080328390419413932671923627922240111296267); +// coeffs_mul[20] = uint256(46409467389750574827901667236327314065850684926758924235610513115492493559646); +// coeffs_mul[21] = uint256(3510727876983825753667642268958058096744972320304970847457145695168428857381); +// coeffs_mul[22] = uint256(36790342906406467650548089102243728453033073540782039995393979051286531653213); +// coeffs_mul[23] = uint256(46999714242460141343130759379348944184527291182925550306059171664885708187069); +// coeffs_mul[24] = uint256(29738427097740912988167149602928055573571475515804158893694081288134282772188); +// coeffs_mul[25] = uint256(50965507495409388631385471767707484119447176729209188317844871017127104171944); +// coeffs_mul[26] = uint256(19596119894133871222204617379077248827374731478563854737729705102559605309677); +// coeffs_mul[27] = uint256(3403547379095613756589275649840742000643503883812744945548631032348072128174); +// coeffs_mul[28] = uint256(34098577277941187270553358393270004633417305840052944729958733866934440431173); +// coeffs_mul[29] = uint256(11768402651734326676950704977229314197630411314233784115317419118135498714266); +// coeffs_mul[30] = uint256(8587506466225587701380478205188659349186716946495888874999468084821337869797); +// coeffs_mul[31] = uint256(23095283302844004528854017195459146622662540890046538607288251350326507217544); +// coeffs_mul[32] = uint256(45815246088579244773243928572080583080745677230128753810473105432520879086931); +// coeffs_mul[33] = uint256(18846607898602946561630534830837489232188727774005472911573896473436323752210); +// uint256[] memory a_mul_b = polynomial.mul_poly(coeffs_a, coeffs_b, modulus); +// require(coeffs_mul.length == a_mul_b.length, "Polynomial multiplication result length is not correct"); +// for (uint i = 0; i < 34; i++){ +// require(coeffs_mul[i] == a_mul_b[i], "Polynomial multiplication result is not correct"); +// } +// } +// +// function test_lagrange_interpolation() public { +// uint256 modulus = 0x73EDA753299D7D483339D80809A1D80553BDA402FFFE5BFEFFFFFFFF00000001; +// uint256 n = 3; +// uint256[] memory xs = new uint256[](n); +// xs[0] = uint256(4183765791887380684480255226180760560865026071039013052010193328713615339463); +// xs[1] = uint256(41539907117522402745491644732028924977664979905128012893033887353901692293856); +// xs[2] = uint256(40744787028008542045211760826403355424425002249388314752473792073759989008118); +// uint256[] memory fxs = new uint256[](n); +// fxs[0] = uint256(31102318824077738286102042205447650848522120060321475185704476031394567067018); +// fxs[1] = uint256(28448837760680269221266237156411444765443870003701617079904611621539413948874); +// fxs[2] = uint256(21652586267347562689641261610058946541341503152256840037277559314528271150653); +// uint256[] memory etalon_interpolated_poly = new uint256[](n); +// etalon_interpolated_poly[0] = uint256(45863909754770953574941211132560772200443894513098009385289015884407326107132); +// etalon_interpolated_poly[1] = uint256(306400884220968022577340188138333996135439223138113708607130720467290203462); +// etalon_interpolated_poly[2] = uint256(40785886772544473963190998835184144050681147583222663910965803442251397137695); +// uint256[] memory interpolated_poly = polynomial.lagrange_interpolation(xs, fxs, modulus); +// require(etalon_interpolated_poly.length == interpolated_poly.length, "Lagrange interpolation result length is not correct"); +// for (uint256 i = 0; i < interpolated_poly.length; i++) { +// require(etalon_interpolated_poly[i] == interpolated_poly[i], "Lagrange interpolation result is not correct"); +// } +// } +// +// function test_lagrange_interpolation_by_2_points_neg_x() public { +// uint256 modulus = 0x73EDA753299D7D483339D80809A1D80553BDA402FFFE5BFEFFFFFFFF00000001; +// uint256 x = 44038862670345190294673664060592308181004034858773208775317302252436776935563; +// uint256 dblXInv = field.inverse_static((2 * x) % modulus, modulus); +// uint256 fx = 49493457902001516273705036835225226573976620701363464555283163139256350994103; +// uint256 f_minus_x = 28976720826705814608978164416095000797859924214963526570316110117483425299187; +// uint256 xInv = 47098724223474821775521332453585531707749745902334713572669745831884543336149; +// uint256 point = 48153868050457893764636815688936466338946039141187270065866853882046790835184; +// uint256 interpolate_p = 47167026852270603624692004883323338002565421423261929593965935305477245075449; +// uint256 interpolate_p2 = 41898178529415016769936269258460710167440290345996221365328211911015908966385; +// uint256 ans = polynomial.interpolate_evaluate_by_2_points_neg_x(x, dblXInv, fx, f_minus_x, point, modulus); +// require(interpolate_p == ans, "Lagrange interpolation evaluation result is not correct"); +// } +// +// function test_lagrange_interpolation_by_2_points1() public { +// uint256 modulus = 0x73EDA753299D7D483339D80809A1D80553BDA402FFFE5BFEFFFFFFFF00000001; +// uint256[] memory x = new uint256[](2); +// x[0] = 44038862670345190294673664060592308181004034858773208775317302252436776935563; +// x[1] = modulus - 44038862670345190294673664060592308181004034858773208775317302252436776935563; +// uint256[] memory fx = new uint256[](2); +// fx[0] = 49493457902001516273705036835225226573976620701363464555283163139256350994103; +// fx[1] = 28976720826705814608978164416095000797859924214963526570316110117483425299187; +// uint256 point = 48153868050457893764636815688936466338946039141187270065866853882046790835184; +// uint256 interpolate_p = 47167026852270603624692004883323338002565421423261929593965935305477245075449; +// uint256 ans = polynomial.interpolate_evaluate_by_2_points(x, fx, point, modulus); +// require(interpolate_p == ans, "Lagrange interpolation evaluation result is not correct"); +// } +// +// function test_lagrange_interpolation_by_2_points2() public { +// uint256 modulus = 0x73EDA753299D7D483339D80809A1D80553BDA402FFFE5BFEFFFFFFFF00000001; +// uint256[] memory x = new uint256[](2); +// x[0] = 41647106870606161616591387966715847902573139189804717221698810708101242940521; +// x[1] = 7618811309034160695676016680056885734768587155692572468640041509483598127985; +// uint256[] memory fx = new uint256[](2); +// fx[0] = 10830495527854936642823522147966338959848560248013811437627905910805426798945; +// fx[1] = 42429922444448686604017683269922063440964335484964201106691762991369582981200; +// uint256 point = 24868796103580083179645354023730047815734900319155333463213446778245767615297; +// uint256 interpolate_p = 40762883383788727750124127024453804465754478296506721859951139537974273249132; +// uint256 ans = polynomial.interpolate_evaluate_by_2_points(x, fx, point, modulus); +// require(interpolate_p == ans, "Lagrange interpolation evaluation result is not correct"); +// } +// +// function test_lagrange_interpolate_then_evaluate_by_2_points() public { +// uint256 modulus = 0x73EDA753299D7D483339D80809A1D80553BDA402FFFE5BFEFFFFFFFF00000001; +// uint256[] memory x = new uint256[](2); +// x[0] = 41647106870606161616591387966715847902573139189804717221698810708101242940521; +// x[1] = 7618811309034160695676016680056885734768587155692572468640041509483598127985; +// uint256[] memory fx = new uint256[](2); +// fx[0] = 10830495527854936642823522147966338959848560248013811437627905910805426798945; +// fx[1] = 42429922444448686604017683269922063440964335484964201106691762991369582981200; +// uint256 point = 24868796103580083179645354023730047815734900319155333463213446778245767615297; +// uint256 interpolate_p = 40762883383788727750124127024453804465754478296506721859951139537974273249132; +// uint256[] memory coeffs = polynomial.interpolate(x, fx, modulus); +// require(interpolate_p == polynomial.evaluate(coeffs, point, modulus), "Evaluation of interpolated polynomial is not correct"); +// } } diff --git a/contracts/types.sol b/contracts/types.sol index 380823a..f972900 100644 --- a/contracts/types.sol +++ b/contracts/types.sol @@ -38,6 +38,9 @@ library types { // TODO: add external_coset_generator() method to compute this uint256 constant coset_generator7 = 0x000000000000000000000000000000000000000000000000000000000000000c; + uint256 constant ROWS_ROTATION = 2; + uint256 constant COLS_ROTATION = 3; + struct g1_point { uint256 x; uint256 y; @@ -215,7 +218,7 @@ library types { //0x120 uint256 query_id; //0x140 - uint256[] alphas; + uint256[] alphas; uint256[] values; uint256[] tmp_values; uint256 coset_size; @@ -254,7 +257,7 @@ library types { uint256 rows_amount; // 0x20 uint256 omega; - int256[][] columns_rotations; + int256[ROWS_ROTATION][COLS_ROTATION] columns_rotations; } struct placeholder_state_type { diff --git a/contracts/verifier.sol b/contracts/verifier.sol index 46d65cb..e3d9cdc 100644 --- a/contracts/verifier.sol +++ b/contracts/verifier.sol @@ -28,6 +28,9 @@ import "./placeholder/placeholder_verifier.sol"; import "./interfaces/verifier.sol"; import "./interfaces/gate_argument.sol"; +uint256 constant ROWS_ROTATION = 2; +uint256 constant COLS_ROTATION = 3; + contract PlaceholderVerifier is IVerifier { struct verifier_state { uint256 proofs_num; @@ -45,7 +48,7 @@ contract PlaceholderVerifier is IVerifier { function init_vars( verifier_state memory vars, uint256[] memory init_params, - int256[][] memory columns_rotations + int256[2][3] memory columns_rotations ) internal pure { uint256 idx; uint256 max_coset; @@ -110,7 +113,7 @@ contract PlaceholderVerifier is IVerifier { function verify( bytes calldata blob, uint256[] calldata init_params, - int256[][] calldata columns_rotations, + int256[2][3] calldata columns_rotations, address gate_argument ) public view returns (bool result) { verifier_state memory vars; diff --git a/contracts/zkllvm/arithmetics_output/assignment.tbl b/contracts/zkllvm/arithmetics_output/assignment.tbl new file mode 100644 index 0000000..ad6f319 --- /dev/null +++ b/contracts/zkllvm/arithmetics_output/assignment.tbl @@ -0,0 +1,77 @@ +17 +32 + 5 16 11 176 80 2896 8386816 11 24288219136 1 0 5 1 9649340769776349618630915417390658987787685493980520238651558921454037246635 9649340769776349618630915417390658987787685493980520238651558921454037246660 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 11 5 16 16 2816 2896 2896 5 6 5 1 5 1 25 85968058271978839505040 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 16 80 176 2816 2896 8386816 24288219136 6 9649340769776349618630915417390658987787685493980520238651558921454037246635 5 1 25 2 9649340769776349618630915417390658987787685493980520238651558921454037246660 9649340769776349618630915417390658987787685493980520324619617193432876751700 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 24123351924440874046577288543476647469469213734951300596628897303624973025281 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 5 11 255 255 255 255 255 255 0 2 0 1 1 1 1 0 85968058271978839505040 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 1 0 0 0 1 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 1 1 1 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/contracts/zkllvm/arithmetics_output/circuit.crct b/contracts/zkllvm/arithmetics_output/circuit.crct new file mode 100644 index 0000000..8f8c7ff --- /dev/null +++ b/contracts/zkllvm/arithmetics_output/circuit.crct @@ -0,0 +1 @@ +0x00000000000000040000000000000000000000000000000100000000000000030000000000000000000000000000000000000000000000000000000000000001000000000000000100000000000000000000000001000000000000000000000000000000000000000000000000000000000000000001000000000000000100000000000000010000000001000000000000000000000000000000000000000000000000000000000000000001000000000000000100000000000000020000000001000000000000000000000000000000000200000000000000000000010102000000000000000002020000000100000000000000010000000000000001000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000002000000000000000000000000010000000000000000010000000001000000000000000000000000000000000000000000000000000000000000000001000000000000000100000000000000020000000001000000000000000000000000000000000101000000000000000000010200000000000000000000000200000000000000010000000000000003000000000000000000000000000000000000000000000000000000000000000100000000000000010000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000100000000000000010000000000000001000000000100000000000000000000000000000000000000000000000000000000000000000100000000000000010000000000000002000000000100000000000000000000000000000000020100000000000000000001010200000000000000000202000000010000000000000003000000000000000200000000000000020000000000000000000000000000000000000000000000000000000000000001000000000000000200000000000000010000000001000000000000000002000000000100000000000000000000000000000000000000000000000000000000000000000100000000000000010000000000000000000000000100000000000000000000000000000000010100000000000000000001020000000000000000000000020000000000000000000000000000000000000000000000000000000000000001000000000000000200000000000000010000000001000000000000000003000000000100000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000101000000000000000000010200000000000000000000001e00000000000000000000000000010000000000000000000000000000000000000000000100000000000000000000000000000000000100010000000000000002000000000000000000000000000000000001000000000000000000010000000100000000000000000000000000000001000000000000000000000001000100000000000000000000000200000000000000000001000000020000000000000000000200000000000000000000000000020000000200000000000000000000000000030000000000000000000100000003000000000000000000020000000000000000000000000002000000010000000000000000000000000004000000000000000000010000000400000000000000000002000000030000000000000000000200000004000000000000000000000000000500000000000000000001000000050000000000000000000200000004000000000000000000020000000500000000000000000000000000060000000000000000000100000006000000000000000000020000000400000000000000000000000000010001000000000000000000000007000000000000000000010000000700000000000000000000000000000001000000000000000200000006000000000000000000000000000800000000000000000001000000080000000000000000000200000007000000000000000000000000000c000100000000000000000000000900000000000000000001000000090000000000000000000000000000000100000000000000000000000a000100000000000000000000000a000000000000000000010000000a000000000000000000000000000d0001000000000000000200000009000000000000000000000000000b000000000000000000010000000b0000000000000000000000000000000100000000000000020000000a000000000000000000000000000c000000000000000000010000000c000000000000000000000000000d0001000000000000000200000008000000000000000000000000000d000000000000000000010000000d000000000000000000020000000b000000000000000000020000000d000000000000000000000000000e000000000000000000010000000e000000000000000000000000001000010000000000000000 \ No newline at end of file diff --git a/contracts/zkllvm/arithmetics_output/circuit_params.json b/contracts/zkllvm/arithmetics_output/circuit_params.json new file mode 100644 index 0000000..ec1a4a1 --- /dev/null +++ b/contracts/zkllvm/arithmetics_output/circuit_params.json @@ -0,0 +1,19 @@ +{ "_test_name":"Test name", + "arithmetization_params":[15,5,5,30], + "columns_rotations":[[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0]], + "modulus":28948022309329048855892746252171976963363056481941560715954676764349967630337, + "r":4, + "m":2, + "lambda":2, + "batches_num":4, + "step_list":[1,1,1,1], + "D_omegas":[ + 3612152772817685532768635636100598085437510685224817206515049967552954106764, + 14450201850503471296781915119640920297985789873634237091629829669980153907901, + 199455130043951077247265858823823987229570523056509026484192158816218200659, + 24760239192664116622385963963284001971067308018068707868888628426778644166363 + ], + "rows_amount":32, + "max_degree":31, + "omega":3612152772817685532768635636100598085437510685224817206515049967552954106764 +} diff --git a/contracts/zkllvm/arithmetics_output/gate_argument.bkp b/contracts/zkllvm/arithmetics_output/gate_argument.bkp new file mode 100644 index 0000000..09a9208 --- /dev/null +++ b/contracts/zkllvm/arithmetics_output/gate_argument.bkp @@ -0,0 +1,174 @@ + +// SPDX-License-Identifier: Apache-2.0. +//---------------------------------------------------------------------------// +// Copyright (c) 2022 Mikhail Komarov +// Copyright (c) 2022 Aleksei Moskvin +// Copyright (c) 2023 Elena Tatuzova +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//---------------------------------------------------------------------------// +pragma solidity >=0.8.4; + +import "../../../contracts/types.sol"; +import "../../../contracts/basic_marshalling.sol"; +import "../../../contracts/commitments/batched_lpc_verifier.sol"; +import "../../../contracts/interfaces/gate_argument.sol"; + +contract arithmetics_output_gate_argument_split_gen is IGateArgument{ + uint256 constant GATES_N = 4; + + struct local_vars_type{ + // 0x0 + uint256 constraint_eval; + // 0x20 + uint256 gate_eval; + // 0x40 + uint256 gates_evaluation; + // 0x60 + uint256 theta_acc; + + //0x80 + uint256[] witness_evaluations; + //a0 + uint256[] selector_evaluations; + + } + + uint256 constant MODULUS_OFFSET = 0x0; + uint256 constant THETA_OFFSET = 0x20; + + uint256 constant CONSTRAINT_EVAL_OFFSET = 0x00; + uint256 constant GATE_EVAL_OFFSET = 0x20; + uint256 constant GATES_EVALUATIONS_OFFSET = 0x40; + uint256 constant THETA_ACC_OFFSET = 0x60; + uint256 constant WITNESS_EVALUATIONS_OFFSET = 0x80; + uint256 constant SELECTOR_EVALUATIONS_OFFSET = 0xa0; + + + function evaluate_gates_be( + bytes calldata blob, + uint256 eval_proof_combined_value_offset, + types.gate_argument_params memory gate_params, + types.arithmetization_params memory ar_params, + int256[][] calldata columns_rotations + ) external pure returns (uint256 gates_evaluation) { + local_vars_type memory local_vars; + + + local_vars.witness_evaluations = new uint256[](ar_params.witness_columns); + for (uint256 i = 0; i < ar_params.witness_columns;) { + local_vars.witness_evaluations[i] = batched_lpc_verifier.get_variable_values_z_i_j_from_proof_be( + blob, eval_proof_combined_value_offset, i, 0 + ); + unchecked{i++;} + } + + local_vars.selector_evaluations = new uint256[](ar_params.selector_columns); + for (uint256 i = 0; i < ar_params.selector_columns;) { + local_vars.selector_evaluations[i] = batched_lpc_verifier.get_fixed_values_z_i_j_from_proof_be( + blob, eval_proof_combined_value_offset, ar_params.permutation_columns + ar_params.permutation_columns + ar_params.constant_columns + i, 0 + ); + unchecked{i++;} + } + + + local_vars.theta_acc = 1; + local_vars.gates_evaluation = 0; + + uint256 theta_acc = local_vars.theta_acc; + + uint256 terms; + assembly { + let modulus := mload(gate_params) + let theta := mload(add(gate_params, THETA_OFFSET)) + + + function get_witness_i(idx, ptr) -> result { + result := mload(add(add(mload(add(ptr, WITNESS_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))) + } + + function get_selector_i(idx, ptr) -> result { + result := mload(add(add(mload(add(ptr, SELECTOR_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))) + } + + //Gate0 + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i(0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=get_witness_i(1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000 + terms:=mulmod(terms, get_witness_i(2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(0,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + + //Gate1 + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i(0, local_vars) + terms:=mulmod(terms, get_witness_i(1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000 + terms:=mulmod(terms, get_witness_i(2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(1,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + + //Gate2 + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i(0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000 + terms:=mulmod(terms, get_witness_i(1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000 + terms:=mulmod(terms, get_witness_i(2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(2,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + + //Gate3 + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i(1, local_vars) + terms:=mulmod(terms, get_witness_i(2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000 + terms:=mulmod(terms, get_witness_i(0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i(1, local_vars) + terms:=mulmod(terms, get_witness_i(3, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(3,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + + + } + } +} diff --git a/contracts/zkllvm/arithmetics_output/gate_argument.bkp2 b/contracts/zkllvm/arithmetics_output/gate_argument.bkp2 new file mode 100644 index 0000000..dbcdee6 --- /dev/null +++ b/contracts/zkllvm/arithmetics_output/gate_argument.bkp2 @@ -0,0 +1,173 @@ + +// SPDX-License-Identifier: Apache-2.0. +//---------------------------------------------------------------------------// +// Copyright (c) 2022 Mikhail Komarov +// Copyright (c) 2022 Aleksei Moskvin +// Copyright (c) 2023 Elena Tatuzova +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//---------------------------------------------------------------------------// +pragma solidity >=0.8.4; + +import "../../../contracts/types.sol"; +import "../../../contracts/basic_marshalling.sol"; +import "../../../contracts/commitments/batched_lpc_verifier.sol"; +import "../../../contracts/interfaces/gate_argument.sol"; + +contract arithmetics_output_gate_argument_split_gen is IGateArgument{ + uint256 constant GATES_N = 4; + + struct local_vars_type{ + // 0x0 + uint256 constraint_eval; + // 0x20 + uint256 gate_eval; + // 0x40 + uint256 gates_evaluation; + // 0x60 + uint256 theta_acc; + + //0x80 + uint256[] witness_evaluations; + //a0 + uint256[] selector_evaluations; + + } + + uint256 constant MODULUS_OFFSET = 0x0; + uint256 constant THETA_OFFSET = 0x20; + + uint256 constant CONSTRAINT_EVAL_OFFSET = 0x00; + uint256 constant GATE_EVAL_OFFSET = 0x20; + uint256 constant GATES_EVALUATIONS_OFFSET = 0x40; + uint256 constant THETA_ACC_OFFSET = 0x60; + uint256 constant WITNESS_EVALUATIONS_OFFSET = 0x80; + uint256 constant SELECTOR_EVALUATIONS_OFFSET = 0xa0; + + + function get_witness_i(uint256 idx, local_vars_type memory local_var) pure internal returns (uint256 result) { + return local_var.witness_evaluations[idx]; + } + + function get_selector_i(uint256 idx, local_vars_type memory local_var) pure internal returns (uint256 result) { + return local_var.selector_evaluations[idx]; + } + + function evaluate_gates_be( + bytes calldata blob, + uint256 eval_proof_combined_value_offset, + types.gate_argument_params memory gate_params, + types.arithmetization_params memory ar_params, + int256[][] calldata columns_rotations + ) external pure returns (uint256 gates_evaluation) { + local_vars_type memory local_vars; + + + local_vars.witness_evaluations = new uint256[](ar_params.witness_columns); + for (uint256 i = 0; i < ar_params.witness_columns;) { + local_vars.witness_evaluations[i] = batched_lpc_verifier.get_variable_values_z_i_j_from_proof_be( + blob, eval_proof_combined_value_offset, i, 0 + ); + unchecked{i++;} + } + + local_vars.selector_evaluations = new uint256[](ar_params.selector_columns); + for (uint256 i = 0; i < ar_params.selector_columns;) { + local_vars.selector_evaluations[i] = batched_lpc_verifier.get_fixed_values_z_i_j_from_proof_be( + blob, eval_proof_combined_value_offset, ar_params.permutation_columns + ar_params.permutation_columns + ar_params.constant_columns + i, 0 + ); + unchecked{i++;} + } + + + local_vars.theta_acc = 1; + local_vars.gates_evaluation = 0; + + uint256 theta_acc = local_vars.theta_acc; + + uint256 terms; + uint256 modulus = gate_params.modulus; + uint256 theta = gate_params.theta; + + + //Gate0 + local_vars.gate_eval = 0; + local_vars.constraint_eval = 0; + terms=get_witness_i(0, local_vars); + local_vars.constraint_eval = addmod(local_vars.constraint_eval,terms,modulus); + terms=get_witness_i(1, local_vars); + local_vars.constraint_eval = addmod(local_vars.constraint_eval,terms,modulus); + terms=0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000; + terms=mulmod(terms, get_witness_i(2, local_vars), modulus); + local_vars.constraint_eval = addmod(local_vars.constraint_eval,terms,modulus); + local_vars.gate_eval = addmod(local_vars.gate_eval,mulmod(local_vars.constraint_eval,theta_acc,modulus),modulus); + theta_acc = mulmod(theta_acc, theta, modulus); + local_vars.gate_eval = mulmod(local_vars.gate_eval,get_selector_i(0,local_vars),modulus); + gates_evaluation = addmod(gates_evaluation,local_vars.gate_eval,modulus); + + //Gate1 + local_vars.gate_eval = 0; + local_vars.constraint_eval = 0; + terms=get_witness_i(0, local_vars); + terms=mulmod(terms, get_witness_i(1, local_vars), modulus); + local_vars.constraint_eval = addmod(local_vars.constraint_eval,terms,modulus); + terms=0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000; + terms=mulmod(terms, get_witness_i(2, local_vars), modulus); + local_vars.constraint_eval = addmod(local_vars.constraint_eval,terms,modulus); + local_vars.gate_eval = addmod(local_vars.gate_eval,mulmod(local_vars.constraint_eval,theta_acc,modulus),modulus); + theta_acc = mulmod(theta_acc, theta, modulus); + local_vars.gate_eval = mulmod(local_vars.gate_eval,get_selector_i(1,local_vars),modulus); + gates_evaluation = addmod(gates_evaluation,local_vars.gate_eval,modulus); + + //Gate2 + local_vars.gate_eval = 0; + local_vars.constraint_eval = 0; + terms=get_witness_i(0, local_vars); + local_vars.constraint_eval = addmod(local_vars.constraint_eval,terms,modulus); + terms=0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000; + terms=mulmod(terms, get_witness_i(1, local_vars), modulus); + local_vars.constraint_eval = addmod(local_vars.constraint_eval,terms,modulus); + terms=0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000; + terms=mulmod(terms, get_witness_i(2, local_vars), modulus); + local_vars.constraint_eval = addmod(local_vars.constraint_eval,terms,modulus); + local_vars.gate_eval = addmod(local_vars.gate_eval,mulmod(local_vars.constraint_eval,theta_acc,modulus),modulus); + theta_acc = mulmod(theta_acc, theta, modulus); + local_vars.gate_eval = mulmod(local_vars.gate_eval,get_selector_i(2,local_vars),modulus); + gates_evaluation = addmod(gates_evaluation,local_vars.gate_eval,modulus); + + //Gate3 + local_vars.gate_eval = 0; + local_vars.constraint_eval = 0; + terms=get_witness_i(1, local_vars); + terms=mulmod(terms, get_witness_i(2, local_vars), modulus); + local_vars.constraint_eval = addmod(local_vars.constraint_eval,terms,modulus); + terms=0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000; + terms=mulmod(terms, get_witness_i(0, local_vars), modulus); + local_vars.constraint_eval = addmod(local_vars.constraint_eval,terms,modulus); + local_vars.gate_eval = addmod(local_vars.gate_eval,mulmod(local_vars.constraint_eval,theta_acc,modulus),modulus); + theta_acc = mulmod(theta_acc, theta, modulus); + local_vars.constraint_eval = 0; + terms=get_witness_i(1, local_vars); + terms=mulmod(terms, get_witness_i(3, local_vars), modulus); + local_vars.constraint_eval = addmod(local_vars.constraint_eval,terms,modulus); + terms=0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000; + local_vars.constraint_eval = addmod(local_vars.constraint_eval,terms,modulus); + local_vars.gate_eval = addmod(local_vars.gate_eval,mulmod(local_vars.constraint_eval,theta_acc,modulus),modulus); + theta_acc = mulmod(theta_acc, theta, modulus); + local_vars.gate_eval = mulmod(local_vars.gate_eval,get_selector_i(3,local_vars),modulus); + gates_evaluation = addmod(gates_evaluation,local_vars.gate_eval,modulus); + + + + } +} diff --git a/contracts/zkllvm/arithmetics_output/gate_argument.sol b/contracts/zkllvm/arithmetics_output/gate_argument.sol new file mode 100644 index 0000000..5a0d30b --- /dev/null +++ b/contracts/zkllvm/arithmetics_output/gate_argument.sol @@ -0,0 +1,173 @@ + +// SPDX-License-Identifier: Apache-2.0. +//---------------------------------------------------------------------------// +// Copyright (c) 2022 Mikhail Komarov +// Copyright (c) 2022 Aleksei Moskvin +// Copyright (c) 2023 Elena Tatuzova +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//---------------------------------------------------------------------------// +pragma solidity >=0.8.4; + +import "../../../contracts/types.sol"; +import "../../../contracts/basic_marshalling.sol"; +import "../../../contracts/commitments/batched_lpc_verifier.sol"; +import "../../../contracts/interfaces/gate_argument.sol"; + +contract arithmetics_output_gate_argument_split_gen is IGateArgument{ + uint256 constant GATES_N = 4; + + struct local_vars_type{ + // 0x0 + uint256 constraint_eval; + // 0x20 + uint256 gate_eval; + // 0x40 + uint256 gates_evaluation; + // 0x60 + uint256 theta_acc; + + //0x80 + uint256[] witness_evaluations; + //a0 + uint256[] selector_evaluations; + + } + + uint256 constant MODULUS_OFFSET = 0x0; + uint256 constant THETA_OFFSET = 0x20; + + uint256 constant CONSTRAINT_EVAL_OFFSET = 0x00; + uint256 constant GATE_EVAL_OFFSET = 0x20; + uint256 constant GATES_EVALUATIONS_OFFSET = 0x40; + uint256 constant THETA_ACC_OFFSET = 0x60; + uint256 constant WITNESS_EVALUATIONS_OFFSET = 0x80; + uint256 constant SELECTOR_EVALUATIONS_OFFSET = 0xa0; + + + function get_witness_i(uint256 idx, local_vars_type memory local_var) pure internal returns (uint256 result) { + return local_var.witness_evaluations[idx]; + } + + function get_selector_i(uint256 idx, local_vars_type memory local_var) internal pure returns (uint256 result) { + return local_var.selector_evaluations[idx]; + } + + function evaluate_gates_be( + bytes calldata blob, + uint256 eval_proof_combined_value_offset, + types.gate_argument_params memory gate_params, + types.arithmetization_params memory ar_params, + int256[][] calldata columns_rotations + ) external pure returns (uint256 gates_evaluation) { + local_vars_type memory local_vars; + + + local_vars.witness_evaluations = new uint256[](ar_params.witness_columns); + for (uint256 i = 0; i < ar_params.witness_columns;) { + local_vars.witness_evaluations[i] = batched_lpc_verifier.get_variable_values_z_i_j_from_proof_be( + blob, eval_proof_combined_value_offset, i, 0 + ); + unchecked{i++;} + } + + local_vars.selector_evaluations = new uint256[](ar_params.selector_columns); + for (uint256 i = 0; i < ar_params.selector_columns;) { + local_vars.selector_evaluations[i] = batched_lpc_verifier.get_fixed_values_z_i_j_from_proof_be( + blob, eval_proof_combined_value_offset, ar_params.permutation_columns + ar_params.permutation_columns + ar_params.constant_columns + i, 0 + ); + unchecked{i++;} + } + + + local_vars.theta_acc = 1; + local_vars.gates_evaluation = 0; + + uint256 theta_acc = local_vars.theta_acc; + + uint256 terms; + uint256 modulus = gate_params.modulus; + uint256 theta = gate_params.theta; + + + //Gate0 + local_vars.gate_eval = 0; + local_vars.constraint_eval = 0; + terms=get_witness_i(0, local_vars); + local_vars.constraint_eval = addmod(local_vars.constraint_eval,terms,modulus); + terms=get_witness_i(1, local_vars); + local_vars.constraint_eval = addmod(local_vars.constraint_eval,terms,modulus); + terms=0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000; + terms=mulmod(terms, get_witness_i(2, local_vars), modulus); + local_vars.constraint_eval = addmod(local_vars.constraint_eval,terms,modulus); + local_vars.gate_eval = addmod(local_vars.gate_eval,mulmod(local_vars.constraint_eval,theta_acc,modulus),modulus); + theta_acc = mulmod(theta_acc, theta, modulus); + local_vars.gate_eval = mulmod(local_vars.gate_eval,get_selector_i(0,local_vars),modulus); + gates_evaluation = addmod(gates_evaluation,local_vars.gate_eval,modulus); + + //Gate1 + local_vars.gate_eval = 0; + local_vars.constraint_eval = 0; + terms=get_witness_i(0, local_vars); + terms=mulmod(terms, get_witness_i(1, local_vars), modulus); + local_vars.constraint_eval = addmod(local_vars.constraint_eval,terms,modulus); + terms=0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000; + terms=mulmod(terms, get_witness_i(2, local_vars), modulus); + local_vars.constraint_eval = addmod(local_vars.constraint_eval,terms,modulus); + local_vars.gate_eval = addmod(local_vars.gate_eval,mulmod(local_vars.constraint_eval,theta_acc,modulus),modulus); + theta_acc = mulmod(theta_acc, theta, modulus); + local_vars.gate_eval = mulmod(local_vars.gate_eval,get_selector_i(1,local_vars),modulus); + gates_evaluation = addmod(gates_evaluation,local_vars.gate_eval,modulus); + + //Gate2 + local_vars.gate_eval = 0; + local_vars.constraint_eval = 0; + terms=get_witness_i(0, local_vars); + local_vars.constraint_eval = addmod(local_vars.constraint_eval,terms,modulus); + terms=0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000; + terms=mulmod(terms, get_witness_i(1, local_vars), modulus); + local_vars.constraint_eval = addmod(local_vars.constraint_eval,terms,modulus); + terms=0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000; + terms=mulmod(terms, get_witness_i(2, local_vars), modulus); + local_vars.constraint_eval = addmod(local_vars.constraint_eval,terms,modulus); + local_vars.gate_eval = addmod(local_vars.gate_eval,mulmod(local_vars.constraint_eval,theta_acc,modulus),modulus); + theta_acc = mulmod(theta_acc, theta, modulus); + local_vars.gate_eval = mulmod(local_vars.gate_eval,get_selector_i(2,local_vars),modulus); + gates_evaluation = addmod(gates_evaluation,local_vars.gate_eval,modulus); + + //Gate3 + local_vars.gate_eval = 0; + local_vars.constraint_eval = 0; + terms=get_witness_i(1, local_vars); + terms=mulmod(terms, get_witness_i(2, local_vars), modulus); + local_vars.constraint_eval = addmod(local_vars.constraint_eval,terms,modulus); + terms=0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000; + terms=mulmod(terms, get_witness_i(0, local_vars), modulus); + local_vars.constraint_eval = addmod(local_vars.constraint_eval,terms,modulus); + local_vars.gate_eval = addmod(local_vars.gate_eval,mulmod(local_vars.constraint_eval,theta_acc,modulus),modulus); + theta_acc = mulmod(theta_acc, theta, modulus); + local_vars.constraint_eval = 0; + terms=get_witness_i(1, local_vars); + terms=mulmod(terms, get_witness_i(3, local_vars), modulus); + local_vars.constraint_eval = addmod(local_vars.constraint_eval,terms,modulus); + terms=0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000; + local_vars.constraint_eval = addmod(local_vars.constraint_eval,terms,modulus); + local_vars.gate_eval = addmod(local_vars.gate_eval,mulmod(local_vars.constraint_eval,theta_acc,modulus),modulus); + theta_acc = mulmod(theta_acc, theta, modulus); + local_vars.gate_eval = mulmod(local_vars.gate_eval,get_selector_i(3,local_vars),modulus); + gates_evaluation = addmod(gates_evaluation,local_vars.gate_eval,modulus); + + + + } +} diff --git a/contracts/zkllvm/arithmetics_output/gate_flat.sol b/contracts/zkllvm/arithmetics_output/gate_flat.sol new file mode 100644 index 0000000..235016a --- /dev/null +++ b/contracts/zkllvm/arithmetics_output/gate_flat.sol @@ -0,0 +1,2423 @@ +// Sources flattened with hardhat v2.17.0 https://hardhat.org + +// File contracts/algebra/field.sol + +// SPDX-License-Identifier: MIT OR Apache-2.0 +//---------------------------------------------------------------------------// +// Copyright (c) 2021 Mikhail Komarov +// Copyright (c) 2021 Ilias Khairullin +// Copyright (c) 2022 Aleksei Moskvin +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//---------------------------------------------------------------------------// +pragma solidity >=0.8.4; + + + function getBytes32(bytes calldata input, uint256 r1) pure returns (bytes32) { + //return bytes32(input[r1 : r1 + 8]); + bytes32 dummy; + return dummy; + } +/** + * @title Bn254 elliptic curve crypto + * @dev Provides some basic methods to compute bilinear pairings, construct group elements and misc numerical methods + */ +library field { + + /// @dev Modular inverse of a (mod p) using euclid. + /// 'a' and 'p' must be co-prime. + /// @param a The number. + /// @param p The mmodulus. + /// @return x such that ax = 1 (mod p) + function invmod(uint256 a, uint256 p) + internal pure returns (uint256) { + require(a != 0 && a != p && p != 0); + if (a > p) + a = a % p; + int256 t1; + int256 t2 = 1; + uint256 r1 = p; + uint256 r2 = a; + uint256 q; + while (r2 != 0) { + q = r1 / r2; + (t1, t2, r1, r2) = (t2, t1 - int256(q) * t2, r2, r1 - q * r2); + } + if (t1 < 0) + return (p - uint256(- t1)); + return uint256(t1); + } + + function fadd(uint256 a, uint256 b, uint256 modulus) + internal pure returns (uint256 result) { + result = addmod(a, b, modulus); +// assembly { +// result := addmod(a, b, modulus) +// } + } + + + function fsub(uint256 a, uint256 b, uint256 modulus) + internal pure returns (uint256 result) { + result =addmod(a , (modulus - b), modulus); +// assembly { +// result := addmod(a, sub(modulus, b), modulus) +// } + } + + function fmul(uint256 a, uint256 b, uint256 modulus) + internal pure returns (uint256 result) { + result = mulmod(a, b, modulus); +// assembly { +// result := mulmod(a, b, modulus) +// } + } + + function fdiv(uint256 a, uint256 b, uint256 modulus) + internal pure returns (uint256 result) { + uint256 b_inv = invmod(b, modulus); + result =mulmod(a, b_inv, modulus); +// assembly { +// result := mulmod(a, b_inv, modulus) +// } + } + + // See https://ethereum.stackexchange.com/questions/8086/logarithm-math-operation-in-solidity + function log2(uint256 x) + internal pure returns (uint256 y){ + //TODO : Check for a way to do this in pure cairo instead of solidity asm +// assembly { +// let arg := x +// x := sub(x, 1) +// x := or(x, div(x, 0x02)) +// x := or(x, div(x, 0x04)) +// x := or(x, div(x, 0x10)) +// x := or(x, div(x, 0x100)) +// x := or(x, div(x, 0x10000)) +// x := or(x, div(x, 0x100000000)) +// x := or(x, div(x, 0x10000000000000000)) +// x := or(x, div(x, 0x100000000000000000000000000000000)) +// x := add(x, 1) +// let m := mload(0x40) +// mstore(m, 0xf8f9cbfae6cc78fbefe7cdc3a1793dfcf4f0e8bbd8cec470b6a28a7a5a3e1efd) +// mstore(add(m, 0x20), 0xf5ecf1b3e9debc68e1d9cfabc5997135bfb7a7a3938b7b606b5b4b3f2f1f0ffe) +// mstore(add(m, 0x40), 0xf6e4ed9ff2d6b458eadcdf97bd91692de2d4da8fd2d0ac50c6ae9a8272523616) +// mstore(add(m, 0x60), 0xc8c0b887b0a8a4489c948c7f847c6125746c645c544c444038302820181008ff) +// mstore(add(m, 0x80), 0xf7cae577eec2a03cf3bad76fb589591debb2dd67e0aa9834bea6925f6a4a2e0e) +// mstore(add(m, 0xa0), 0xe39ed557db96902cd38ed14fad815115c786af479b7e83247363534337271707) +// mstore(add(m, 0xc0), 0xc976c13bb96e881cb166a933a55e490d9d56952b8d4e801485467d2362422606) +// mstore(add(m, 0xe0), 0x753a6d1b65325d0c552a4d1345224105391a310b29122104190a110309020100) +// mstore(0x40, add(m, 0x100)) +// let magic := 0x818283848586878898a8b8c8d8e8f929395969799a9b9d9e9faaeb6bedeeff +// let shift := 0x100000000000000000000000000000000000000000000000000000000000000 +// let a := div(mul(x, magic), shift) +// y := div(mload(add(m, sub(255, a))), shift) +// y := add(y, mul(256, gt(arg, 0x8000000000000000000000000000000000000000000000000000000000000000))) +// } + } + + function expmod_static(uint256 base, uint256 exponent, uint256 modulus) + internal view returns (uint256 res) { + //TODO check if you can do this in cairo +// assembly { +// let p := mload(0x40) +// mstore(p, 0x20) // Length of Base. +// mstore(add(p, 0x20), 0x20) // Length of Exponent. +// mstore(add(p, 0x40), 0x20) // Length of Modulus. +// mstore(add(p, 0x60), base) // Base. +// mstore(add(p, 0x80), exponent) // Exponent. +// mstore(add(p, 0xa0), modulus) // Modulus. +// // Call modexp precompile. +// if iszero(staticcall(gas(), 0x05, p, 0xc0, p, 0x20)) { +// revert(0, 0) +// } +// res := mload(p) +// } + } + + function inverse_static(uint256 val, uint256 modulus) + internal view returns (uint256 res) { + // return expmod_static(val, modulus - 2, modulus); // code below similar to this call + //TODO : Check cairo implementation +// assembly { +// let p := mload(0x40) +// mstore(p, 0x20) // Length of Base. +// mstore(add(p, 0x20), 0x20) // Length of Exponent. +// mstore(add(p, 0x40), 0x20) // Length of Modulus. +// mstore(add(p, 0x60), val) // Base. +// mstore(add(p, 0x80), sub(modulus, 0x02)) // Exponent. +// mstore(add(p, 0xa0), modulus) // Modulus. +// // Call modexp precompile. +// if iszero(staticcall(gas(), 0x05, p, 0xc0, p, 0x20)) { +// revert(0, 0) +// } +// res := mload(p) +// } + } +} + + +// File contracts/basic_marshalling.sol + +pragma solidity >=0.8.4; + +library basic_marshalling { + uint256 constant WORD_SIZE = 4; + uint256 constant LENGTH_OCTETS = 8; + // 256 - 8 * LENGTH_OCTETS + uint256 constant LENGTH_RESTORING_SHIFT = 0xc0; + uint256 constant LENGTH_OCTETS_ADD_32 = 40; + + //================================================================================================================ + // Bounds non-checking functions + //================================================================================================================ + // TODO: general case + function skip_octet_vector_32_be(uint256 offset) + internal pure returns (uint256 result_offset) { + unchecked { result_offset = offset + LENGTH_OCTETS_ADD_32; } + } + + function skip_uint256_be(uint256 offset) + internal pure returns (uint256 result_offset) { + unchecked { result_offset = offset + 32; } + } + + function skip_vector_of_uint256_be(bytes calldata blob, uint256 offset) + internal pure returns (uint256 result_offset) { + //uint256(getBytes32(blob,offset_by)) + uint256 offset_by = offset/8; + uint256 offset_shr_mul = (WORD_SIZE * 8) * + uint256(getBytes32(blob,offset_by)) >> LENGTH_RESTORING_SHIFT; + + result_offset = offset_shr_mul + offset; // Returning still in bits. + +// assembly { +// result_offset := add( +// add( +// offset, +// mul( +// 0x20, +// shr( +// LENGTH_RESTORING_SHIFT, +// calldataload(add(blob.offset, offset)) +// ) +// ) +// ), +// LENGTH_OCTETS +// ) +// } + } + + function skip_vector_of_vectors_of_uint256_be(bytes calldata blob, uint256 offset) + internal pure returns (uint256 result_offset) { + unchecked { result_offset = offset + LENGTH_OCTETS; } + uint256 n; + uint256 offset_by = offset/8; + n = uint256(getBytes32(blob, offset_by)) >> LENGTH_RESTORING_SHIFT; +// assembly { +// n := shr( +// LENGTH_RESTORING_SHIFT, +// calldataload(add(blob.offset, offset)) +// ) +// } + for (uint256 i = 0; i < n;) { + result_offset = skip_vector_of_uint256_be(blob, result_offset); + unchecked{ i++; } + } + } + + function skip_length(uint256 offset) + internal pure returns (uint256 result_offset) { + unchecked { result_offset = offset + LENGTH_OCTETS; } + } + + function get_length(bytes calldata blob, uint256 offset) + internal pure returns (uint256 result_length){ + uint256 offset_by = offset/8; + result_length = uint256(getBytes32(blob,offset_by)) >> LENGTH_RESTORING_SHIFT; +// assembly { +// result_length := shr(LENGTH_RESTORING_SHIFT, calldataload(add(blob.offset, offset))) +// } + } + + function get_skip_length(bytes calldata blob, uint256 offset) + internal pure returns (uint256 result_length, uint256 result_offset){ + uint256 offset_by = offset/8; + result_length = uint256(getBytes32(blob,offset_by)) >> LENGTH_RESTORING_SHIFT; + +// assembly { +// result_length := shr(LENGTH_RESTORING_SHIFT, calldataload(add(blob.offset, offset))) +// } + unchecked { result_offset = offset + LENGTH_OCTETS; } + } + + function get_i_uint256_from_vector(bytes calldata blob, uint256 offset, uint256 i) + internal pure returns (uint256 result) { + uint256 mul_by = (i * 0x20)/8; + uint256 offset_plus_len_octets_by = (offset + LENGTH_OCTETS)/8; + uint256 offset_st_by = offset_plus_len_octets_by + mul_by; + + result = uint256(getBytes32(blob,offset_st_by)); + +// assembly { +// result := calldataload(add(blob.offset, add(add(offset, LENGTH_OCTETS), mul(i, 0x20)))) +// } + } + + function get_i_j_uint256_from_vector_of_vectors(bytes calldata blob, uint256 offset, uint256 i, uint256 j) + internal pure returns (uint256 result) { + offset = skip_length(offset); + for (uint256 _i = 0; _i < i;) { + offset = skip_vector_of_uint256_be(blob, offset); + unchecked{ _i++; } + } + result = get_i_uint256_from_vector(blob, offset, j); + } + + + function get_uint256_be(bytes calldata blob, uint256 offset) + internal pure returns (uint256 result) { + uint256 offset_by = offset/8; + result = uint256(bytes32(blob[offset_by : offset_by + WORD_SIZE])); +// assembly { +// result := calldataload(add(blob.offset, offset)) +// } + } + + //================================================================================================================ + // Bounds checking functions + //================================================================================================================ + // TODO: general case + function skip_octet_vector_32_be_check(bytes calldata blob, uint256 offset) + internal pure returns (uint256 result_offset) { + unchecked { result_offset = offset + LENGTH_OCTETS_ADD_32; } + require(result_offset <= blob.length); + } + + + function skip_uint256_be_check(bytes calldata blob, uint256 offset) + internal pure returns (uint256 result_offset) { + unchecked { result_offset = offset + 32; } + require(result_offset <= blob.length); + } + + function skip_vector_of_uint256_be_check(bytes calldata blob, uint256 offset) + internal pure returns (uint256 result_offset) { + + uint256 offset_by = offset/8; + uint256 offset_shr_mul = 0x20 * uint256(getBytes32(blob,offset_by)) >> LENGTH_RESTORING_SHIFT; + result_offset = offset + offset_shr_mul + LENGTH_OCTETS; + +// assembly { +// result_offset := add( +// add( +// offset, +// mul( +// 0x20, +// shr( +// LENGTH_RESTORING_SHIFT, +// calldataload(add(blob.offset, offset)) +// ) +// ) +// ), +// LENGTH_OCTETS +// ) +// } + require(result_offset <= blob.length); + } + + function skip_vector_of_vectors_of_uint256_be_check(bytes calldata blob, uint256 offset) + internal pure returns (uint256 result_offset) { + unchecked { result_offset = offset + LENGTH_OCTETS; } + require(result_offset <= blob.length); + uint256 n; + uint256 offset_by = offset/8; + n = uint256(getBytes32(blob,offset_by)) >> LENGTH_RESTORING_SHIFT; + +// assembly { +// n := shr( +// LENGTH_RESTORING_SHIFT, +// calldataload(add(blob.offset, offset)) +// ) +// } + for (uint256 i = 0; i < n;) { + result_offset = skip_vector_of_uint256_be_check(blob, result_offset); + unchecked{ i++; } + } + } + + function skip_length_check(bytes calldata blob, uint256 offset) + internal pure returns (uint256 result_offset){ + unchecked { result_offset = offset + LENGTH_OCTETS; } + require(result_offset < blob.length); + } + + function write_bytes(bytes memory sink , uint256 start_offset, bytes memory src) + internal pure { + for(uint256 idx=0 ; idx < src.length ; ++idx) { + sink[start_offset + idx] = src[idx]; + } + } + + function to_bytes(uint256 x) + internal pure returns (bytes memory c) { + bytes32 b = bytes32(x); + c = new bytes(32); + for (uint i=0; i < 32; i++) { + c[i] = b[i]; + } + } +} + + +// File contracts/algebra/polynomial.sol + + +pragma solidity >=0.8.4; + + +/** + * @title Turbo Plonk polynomial evaluation + * @dev Implementation of Turbo Plonk's polynomial evaluation algorithms + * + * Expected to be inherited by `TurboPlonk.sol` + */ +library polynomial { + uint256 constant LENGTH_OCTETS = 8; + + function multiply_poly_on_coeff(uint256[] memory coeffs, uint256 mul, uint256 modulus) + internal pure{ + for(uint256 i = 0; i < coeffs.length; i++){ + coeffs[i] = mulmod(coeffs[i], mul, modulus); + } + } + + /* + Computes the evaluation of a polynomial f(x) = sum(a_i * x^i) on the given point. + The coefficients of the polynomial are given in + a_0 = coefsStart[0], ..., a_{n-1} = coefsStart[n - 1] + where n = nCoeffs = friLastLayerDegBound. Note that coefsStart is not actually an array but + a direct pointer. + The function requires that n is divisible by 8. + */ + function evaluate(uint256[] memory coeffs, uint256 point, uint256 modulus) + internal pure returns (uint256) { + uint256 result; + for (uint i=coeffs.length -1; i>=0 ; i--){ + uint256 mul_m = mulmod(result,point,modulus); + result = addmod(mul_m,coeffs[i],modulus); + } +// assembly { +// let cur_coefs := add(coeffs, mul(mload(coeffs), 0x20) +// ) +// for { } gt(cur_coefs, coeffs) {} { +// result := addmod(mulmod(result, point, modulus), +// mload(cur_coefs), // (i - 1) * 32 +// modulus) +// cur_coefs := sub(cur_coefs, 0x20) +// } +// } + return result; + } +} + + +// File contracts/types.sol + +pragma solidity >=0.8.4; + +/** + * @title Bn254Crypto library used for the fr, g1 and g2 point types + * @dev Used to manipulate fr, g1, g2 types, perform modular arithmetic on them and call + * the precompiles add, scalar mul and pairing + * + * Notes on optimisations + * 1) Perform addmod, mulmod etc. in assembly - removes the check that Solidity performs to confirm that + * the supplied modulus is not 0. This is safe as the modulus's used (r_mod, q_mod) are hard coded + * inside the contract and not supplied by the user + */ +library types { + uint256 constant PROGRAM_WIDTH = 4; + uint256 constant NUM_NU_CHALLENGES = 11; + + uint256 constant coset_generator0 = 0x0000000000000000000000000000000000000000000000000000000000000005; + uint256 constant coset_generator1 = 0x0000000000000000000000000000000000000000000000000000000000000006; + uint256 constant coset_generator2 = 0x0000000000000000000000000000000000000000000000000000000000000007; + + // TODO: add external_coset_generator() method to compute this + uint256 constant coset_generator7 = 0x000000000000000000000000000000000000000000000000000000000000000c; + + struct g1_point { + uint256 x; + uint256 y; + } + + // G2 group element where x \in Fq2 = x0 * z + x1 + struct g2_point { + uint256 x0; + uint256 x1; + uint256 y0; + uint256 y1; + } + + // N>B. Do not re-order these fields! They must appear in the same order as they + // appear in the proof data + struct proof { + g1_point W1; + g1_point W2; + g1_point W3; + g1_point W4; + g1_point Z; + g1_point T1; + g1_point T2; + g1_point T3; + g1_point T4; + uint256 w1; + uint256 w2; + uint256 w3; + uint256 w4; + uint256 sigma1; + uint256 sigma2; + uint256 sigma3; + uint256 q_arith; + uint256 q_ecc; + uint256 q_c; + uint256 linearization_polynomial; + uint256 grand_product_at_z_omega; + uint256 w1_omega; + uint256 w2_omega; + uint256 w3_omega; + uint256 w4_omega; + g1_point PI_Z; + g1_point PI_Z_OMEGA; + g1_point recursive_P1; + g1_point recursive_P2; + uint256 quotient_polynomial_eval; + } + + struct challenge_transcript { + uint256 alpha_base; + uint256 alpha; + uint256 zeta; + uint256 beta; + uint256 gamma; + uint256 u; + uint256 v0; + uint256 v1; + uint256 v2; + uint256 v3; + uint256 v4; + uint256 v5; + uint256 v6; + uint256 v7; + uint256 v8; + uint256 v9; + uint256 v10; + } + + struct verification_key { + uint256 circuit_size; + uint256 num_inputs; + uint256 work_root; + uint256 domain_inverse; + uint256 work_root_inverse; + g1_point Q1; + g1_point Q2; + g1_point Q3; + g1_point Q4; + g1_point Q5; + g1_point QM; + g1_point QC; + g1_point QARITH; + g1_point QECC; + g1_point QRANGE; + g1_point QLOGIC; + g1_point SIGMA1; + g1_point SIGMA2; + g1_point SIGMA3; + g1_point SIGMA4; + bool contains_recursive_proof; + uint256 recursive_proof_indices; + g2_point g2_x; + + // zeta challenge raised to the power of the circuit size. + // Not actually part of the verification key, but we put it here to prevent stack depth errors + uint256 zeta_pow_n; + } + + struct transcript_data { + bytes32 current_challenge; + } + + struct fri_params_type { + // 0x0 + uint256 modulus; + // 0x20 + uint256 r; + // 0x40 + uint256 max_degree; + // 0x60 + uint256 lambda; + // 0x80 + uint256 omega; + // 0xa0 + uint256[] D_omegas; + // 0xc0 + uint256[] correct_order_idx; // Ordered indices to pack ys to check merkle proof + // 0xe0 + uint256[] step_list; + // 0x100 + uint256[] q; + + // 0x120 + uint256[] s_indices; + uint256[] s; // Coset indices + uint256 max_step; // variable for memory initializing + uint256 max_batch; // variable for memory initializing + + // These are local variables for FRI. But it's useful to allocate memory once + uint256[] tmp_arr; + uint256[][] evaluation_points; + uint256 z_offset; + + // New fields + uint256 max_coset; + uint256 batches_num; + uint256[] batches_sizes; + uint256 fri_proof_offset; // fri_roots offset equals to fri_proof_offset + 0x20 + uint256 fri_final_poly_offset; + uint256 fri_cur_query_offset; // It'll be changed during verification process. + // It's set at the begining of the first query proof after parse functions running. + uint256 theta; + uint256 poly_num; + uint256[][] combined_U; // U polynomials for different evaluation points + uint256[][] denominators; // V polynomials for different evaluation points + uint256[] factors; + uint256[] eval_map; + uint256[][] unique_eval_points; + uint256 different_points; + uint256[] ys; + uint256[] final_polynomial; // It's loaded once while parsing fri proof + uint256[] fri_roots; // It should be bytes32 + } + + struct fri_state_type { + bytes b; + //0x0 + uint256 x_index; + //0x20 + uint256 x; + //0x40 + uint256 domain_size; + //0x60 + uint256 domain_size_mod; + //0x80 + uint256 newind; + //0xa0 + uint256 p_ind; + //0xc0 + uint256 y_ind; + //0xe0 + uint256 indices_size; + //0x100 + uint256 b_length; + //0x120 + uint256 query_id; + //0x140 + uint256[] alphas; + uint256[] values; + uint256[] tmp_values; + uint256 coset_size; + uint256 offset; + uint256 root; + uint256 fri_root; + uint256 s; + uint256 step; + uint256 round; + uint256[] point; + uint256 cur; + uint256 interpolant; + uint256 f0; + uint256 f1; + uint256 factor; + } + + struct placeholder_proof_map { + // 0x0 + uint256 variable_values_commitment_offset; + // 0x20 + uint256 v_perm_commitment_offset; + // 0x40 + uint256 T_commitment_offset; + // 0x60 + uint256 fixed_values_commitment_offset; + // 0x80 + uint256 eval_proof_offset; + // 0xa0 + uint256 eval_proof_lagrange_0_offset; + // 0xc0 + uint256 eval_proof_combined_value_offset; + } + + struct placeholder_common_data { + uint256 rows_amount; + // 0x20 + uint256 omega; + int256[][] columns_rotations; + } + + struct placeholder_state_type { + // 0x0 + uint256 len; + // 0x20 + uint256 offset; + // 0x40 + uint256 zero_index; + // 0x60 + uint256[] permutation_argument; + // 0x80 + uint256 gate_argument; + // 0xa0 + uint256[] alphas; + // 0xc0 + uint256 challenge; + // 0xe0 + uint256 e; + // 0x100 + uint256[][][] evaluation_points; + // 0x120 + uint256[] F; + // 0x140 + uint256 F_consolidated; + // 0x160 + uint256 T_consolidated; + // 0x180 + uint256 Z_at_challenge; + // 0x1a0 + uint256 beta; + // 0x1c0 + uint256 gamma; + // 0x1e0 + uint256 g; + // 0x200 + uint256 h; + // 0x220 + uint256 perm_polynomial_value; + // 0x240 + uint256 perm_polynomial_shifted_value; + // 0x260 + uint256 q_blind_eval; + // 0x280 + uint256 q_last_eval; + // 0x2a0 + uint256 S_id_i; + // 0x2c0 + uint256 S_sigma_i; + // 0x2e0 + uint256[] roots; + // 0x300 + uint256 tmp1; + // 0x320 + uint256 tmp2; + // 0x340 + uint256 tmp3; + // 0x360 + uint256 idx1; + // 0x380 + uint256 idx2; + // 0x3a0 + uint256 inversed_omega; + } + + struct arithmetization_params{ + uint256 witness_columns; + uint256 public_input_columns; + uint256 constant_columns; + uint256 selector_columns; + uint256 lookup_table_size; + + // computed from other params + uint256 permutation_columns; + } + + // parameters are sent to gate argument + struct gate_argument_params { + // 0x0 + uint256 modulus; + // 0x20 + uint256 theta; + } +} + + +// File contracts/containers/merkle_verifier.sol + + +pragma solidity >=0.8.4; + +library merkle_verifier { + // Merkle proof has the following structure: + // [0:8] - leaf index + // [8:16] - root length (which is always 32 bytes in current implementation) + // [16:48] - root + // [48:56] - merkle tree depth + // + // Depth number of layers with co-path elements follows then. + // Each layer has following structure (actually indexes begin from a certain offset): + // [0:8] - number of co-path elements on the layer + // (layer_size = arity-1 actually, which (arity) is always 2 in current implementation) + // + // layer_size number of co-path elements for every layer in merkle proof follows then. + // Each element has following structure (actually indexes begin from a certain offset): + // [0:8] - co-path element position on the layer + // [8:16] - co-path element hash value length (which is always 32 bytes in current implementation) + // [16:48] - co-path element hash value + uint256 constant WORD_SIZE = 32; //32 bytes,256 bits + uint256 constant ROOT_OFFSET = 2; //16/8; + uint256 constant DEPTH_OFFSET = 6; //48/8; + uint256 constant LAYERS_OFFSET = 7; //56/8; + // only one co-element on each layer as arity is always 2 + // 8 + (number of co-path elements on the layer) + // 8 + (co-path element position on the layer) + // 8 + (co-path element hash value length) + // 32 (co-path element hash value) + uint256 constant LAYER_POSITION_OFFSET = 1; //8/8; + uint256 constant LAYER_COPATH_HASH_OFFSET = 3; //24/8; + uint256 constant LAYER_OCTETS = 7; //56/8; + + + uint256 constant LENGTH_RESTORING_SHIFT = 0xc0; + + // TODO : Check if the offset input or output are they bits/bytes requiring conversion + // TODO : Check if all offset are byte aligned i.e multiples of 8. + // This has implications on all calling functions. + function skip_merkle_proof_be(bytes calldata blob, uint256 offset) + internal pure returns (uint256 result_offset) { + offset = offset/8; + unchecked { result_offset = offset + LAYERS_OFFSET; } + + uint256 read_offset_st = offset + DEPTH_OFFSET; + //bytes memory read_bytes = blob[read_offset_st:read_offset_st + WORD_SIZE]; + uint256 read_offset_uint = uint256(getBytes32(blob,read_offset_st)); + result_offset += ((read_offset_uint >> LENGTH_RESTORING_SHIFT) * LAYER_OCTETS ); + result_offset = result_offset * 8; +// assembly { +// result_offset := add( +// result_offset, +// mul( +// LAYER_OCTETS, +// shr( +// LENGTH_RESTORING_SHIFT, +// calldataload( +// add(blob.offset, add(offset, DEPTH_OFFSET)) +// ) +// ) +// ) +// ) +// } + } + + function skip_merkle_proof_be_check(bytes calldata blob, uint256 offset) + internal pure returns (uint256 result_offset) { + unchecked { result_offset = offset + LAYERS_OFFSET; } + require(result_offset < blob.length); + offset = offset/8; + uint256 read_offset_st = offset + DEPTH_OFFSET; + + //bytes memory read_offset = blob[read_offset_st:read_offset_st + WORD_SIZE]; + uint256 read_offset_uint = uint256(getBytes32(blob,read_offset_st)); + result_offset += ((read_offset_uint >> LENGTH_RESTORING_SHIFT) * LAYER_OCTETS ); + result_offset = result_offset * 8; +// assembly { +// result_offset := add( +// result_offset, +// mul( +// LAYER_OCTETS, +// shr( +// LENGTH_RESTORING_SHIFT, +// calldataload( +// add(blob.offset, add(offset, DEPTH_OFFSET)) +// ) +// ) +// ) +// ) +// } + require(result_offset <= blob.length, "skip_merkle_proof_be"); + } + + function getKeccak256LeafNodes(bytes32[2] memory leafNodes) internal pure returns (bytes32 result) { + result = keccak256(bytes.concat(leafNodes[0], leafNodes[1])); + } + + function parse_verify_merkle_proof_not_pre_hash_be(bytes calldata blob, uint256 offset, bytes32 verified_data) + internal pure returns (bool result) { +// uint256 x = 0; +// uint256 depth; + uint256 depth_offset_bytes = (offset/8) + DEPTH_OFFSET; + uint256 depth = uint256(getBytes32(blob,depth_offset_bytes)) >> LENGTH_RESTORING_SHIFT ; + + uint256 layer_pos_offset_bytes = (offset/8) + LAYERS_OFFSET + LAYER_POSITION_OFFSET; + uint256 pos = uint256(getBytes32(blob,layer_pos_offset_bytes)) >> LENGTH_RESTORING_SHIFT ; + bytes32[2] memory leafNodes; + if (pos == 0) { + leafNodes[1] = verified_data; + } else if (pos ==1){ + leafNodes[0] = verified_data; + } + + uint256 layer_offset = (offset/8) + LAYERS_OFFSET; + uint256 next_pos; + + for(uint256 cur_layer_idx=0; cur_layer_idx < depth -1 ; cur_layer_idx++ ){ + uint256 layer_offset_st = layer_offset + LAYER_POSITION_OFFSET; + pos = uint256(getBytes32(blob,layer_offset_st)) >> LENGTH_RESTORING_SHIFT; + + uint256 next_pos_offset = layer_offset + LAYER_POSITION_OFFSET + LAYER_OCTETS; + next_pos = uint256(getBytes32(blob,next_pos_offset)) >> LENGTH_RESTORING_SHIFT; + + if (pos==0){ + uint256 start_offset = layer_offset + LAYER_COPATH_HASH_OFFSET; + leafNodes[0] = getBytes32(blob,start_offset); + + if(next_pos==0){ + leafNodes[1] = getKeccak256LeafNodes(leafNodes); + } else if (next_pos ==1){ + leafNodes[0] = getKeccak256LeafNodes(leafNodes); + } + } else if (pos ==1) { + uint256 start_offset = layer_offset + LAYER_COPATH_HASH_OFFSET; + leafNodes[1] = getBytes32(blob,start_offset); + + if(next_pos==0){ + leafNodes[1] = getKeccak256LeafNodes(leafNodes); + } else if (next_pos ==1){ + leafNodes[0] = getKeccak256LeafNodes(leafNodes); + } + } + layer_offset = layer_offset + LAYER_OCTETS; + } + uint256 start_offset = layer_offset + LAYER_POSITION_OFFSET ; + pos = uint256(getBytes32(blob,start_offset)) >> LENGTH_RESTORING_SHIFT; + + if (pos == 0){ + uint256 _offset = layer_offset + LAYER_COPATH_HASH_OFFSET; + leafNodes[0] = getBytes32(blob,_offset); + verified_data = getKeccak256LeafNodes(leafNodes); + + } else if (pos ==1){ + uint256 _offset = layer_offset + LAYER_COPATH_HASH_OFFSET; + leafNodes[1] = getBytes32(blob,_offset); + verified_data = getKeccak256LeafNodes(leafNodes); + } + + bytes32 root; + uint256 _root_offset = (offset/8) + ROOT_OFFSET; + root = getBytes32(blob,_root_offset); + result = (verified_data == root); + + + // assembly { + //let depth := shr(LENGTH_RESTORING_SHIFT, calldataload(add(blob.offset, add(offset, DEPTH_OFFSET)))) + + // save leaf hash data to required position +// let pos := shr( +// LENGTH_RESTORING_SHIFT, +// calldataload( +// add( +// blob.offset, +// add(add(offset, LAYERS_OFFSET), LAYER_POSITION_OFFSET) +// ) +// ) +// ) +// x := add(x, pos) +// x := mul(x, 10) +// switch pos +// case 0 { +// mstore(0x20, verified_data) +// } +// case 1 { +// mstore(0x00, verified_data) +// } + +// let layer_offst := add(offset, LAYERS_OFFSET) +// let next_pos +// for { +// let cur_layer_i := 0 +// } lt(cur_layer_i, sub(depth, 1)) { +// cur_layer_i := add(cur_layer_i, 1) +// } { +// pos := shr( +// LENGTH_RESTORING_SHIFT, +// calldataload( +// add( +// blob.offset, +// add(layer_offst, LAYER_POSITION_OFFSET) +// ) +// ) +// ) +// next_pos := shr( +// LENGTH_RESTORING_SHIFT, +// calldataload( +// add( +// blob.offset, +// add( +// add(layer_offst, LAYER_POSITION_OFFSET), +// LAYER_OCTETS +// ) +// ) +// ) +// ) +//// x := add(x, pos) +//// x := mul(x, 10) +// switch pos +// case 0 { +// mstore( +// 0x00, +// calldataload( +// add( +// blob.offset, +// add(layer_offst, LAYER_COPATH_HASH_OFFSET) +// ) +// ) +// ) +// switch next_pos +// case 0 { +// mstore(0x20, keccak256(0, 0x40)) +// } +// case 1 { +// mstore(0, keccak256(0, 0x40)) +// } +// } +// case 1 { +// mstore( +// 0x20, +// calldataload( +// add( +// blob.offset, +// add(layer_offst, LAYER_COPATH_HASH_OFFSET) +// ) +// ) +// ) +// switch next_pos +// case 0 { +// mstore(0x20, keccak256(0, 0x40)) +// } +// case 1 { +// mstore(0, keccak256(0, 0x40)) +// } +// } +// layer_offst := add(layer_offst, LAYER_OCTETS) +// } +// +// pos := shr( +// LENGTH_RESTORING_SHIFT, +// calldataload( +// add(blob.offset, add(layer_offst, LAYER_POSITION_OFFSET)) +// ) +// ) +//// x := add(x, pos) +//// x := mul(x, 10) +// switch pos +// case 0 { +// mstore( +// 0x00, +// calldataload( +// add( +// blob.offset, +// add(layer_offst, LAYER_COPATH_HASH_OFFSET) +// ) +// ) +// ) +// verified_data := keccak256(0, 0x40) +// } +// case 1 { +// mstore( +// 0x20, +// calldataload( +// add( +// blob.offset, +// add(layer_offst, LAYER_COPATH_HASH_OFFSET) +// ) +// ) +// ) +// verified_data := keccak256(0, 0x40) +// } +// } +// +// bytes32 root; +// assembly { +// root := calldataload(add(blob.offset, add(offset, ROOT_OFFSET))) +// } +// result = (verified_data == root); + } + + // We store merkle root as an octet vector. At first length==0x20 is stored. + // We should skip it. + // TODO: this function should return bytes32 + function get_merkle_root_from_blob(bytes calldata blob, uint256 merkle_root_offset) + internal pure returns(uint256 root){ + uint256 merkle_proof_offset_bytes = (merkle_root_offset/8) + 1; + root = uint256(getBytes32(blob,merkle_proof_offset_bytes)); +// assembly { +// root := calldataload(add(blob.offset, add(merkle_root_offset, 0x8))) +// } + } + + // TODO: This function should return bytes32 + function get_merkle_root_from_proof(bytes calldata blob, uint256 merkle_proof_offset) + internal pure returns(uint256 root){ + uint256 merkle_proof_offset_bytes = (merkle_proof_offset/8) + ROOT_OFFSET; + root = uint256(getBytes32(blob,merkle_proof_offset_bytes)); +// assembly { +// root := calldataload(add(blob.offset, add(merkle_proof_offset, ROOT_OFFSET))) +// } + } + + function parse_verify_merkle_proof_be(bytes calldata blob, uint256 offset, bytes32 verified_data) + internal pure returns (bool result) { +// assembly { +// mstore(0, verified_data) +// verified_data := keccak256(0, 0x20) +// } + bytes memory verified_data_m = bytes.concat(verified_data); + result = parse_verify_merkle_proof_not_pre_hash_be(blob, offset, keccak256(verified_data_m)); + } + + function parse_verify_merkle_proof_bytes_be(bytes calldata blob, uint256 offset, bytes memory verified_data) + internal pure returns (bool result) { + result = parse_verify_merkle_proof_not_pre_hash_be(blob, offset, keccak256(verified_data)); + } + + function parse_verify_merkle_proof_bytes_be(bytes calldata blob, uint256 offset, bytes memory verified_data_bytes, + uint256 verified_data_bytes_len) + internal pure returns (bool result) { + uint256 addition_offset = uint256(bytes32(verified_data_bytes)) + 0x20; // TODO : Length in bits? + bytes32 verified_data = keccak256(abi.encodePacked(addition_offset,verified_data_bytes_len)); +// assembly { +// verified_data := keccak256(add(verified_data_bytes, 0x20), verified_data_bytes_len) +// } + result = parse_verify_merkle_proof_not_pre_hash_be(blob, offset, verified_data); + } +} + + +// File contracts/cryptography/transcript.sol + + + +pragma solidity >=0.8.4; + +/** + * @title Transcript library + * @dev Generates Plonk random challenges + */ +library transcript { + uint256 constant WORD_SIZE = 4; + function init_transcript(types.transcript_data memory self, bytes memory init_blob) + internal pure { + self.current_challenge = keccak256(init_blob); + } + + function update_transcript(types.transcript_data memory self, bytes memory blob) + internal pure { + self.current_challenge = keccak256(bytes.concat(self.current_challenge, blob)); + } + + function update_transcript_b32(types.transcript_data memory self, bytes32 blob) + internal pure { + self.current_challenge = keccak256( + bytes.concat(self.current_challenge, blob) + ); + } + + function update_transcript_b32_by_offset_calldata(types.transcript_data memory self, bytes calldata blob, + uint256 offset) + internal pure { + require(offset < blob.length, "update_transcript_b32_by_offset: offset < blob.length"); + require(32 <= blob.length - offset, "update_transcript_b32_by_offset: 32 <= blob.length - offset"); + + bytes32 blob32; + offset = (offset/8); + blob32 = getBytes32(blob,offset); +// assembly { +// blob32 := calldataload(add(blob.offset, offset)) +// } + update_transcript_b32(self, blob32); + } + + function get_integral_challenge_be(types.transcript_data memory self, uint256 length) + internal pure returns (uint256 result) { + require(length <= 32); + self.current_challenge = keccak256(abi.encodePacked(self.current_challenge)); + return (uint256(self.current_challenge) & + (((uint256(1) << (length * 8)) - 1) << (uint256(256) - length * 8))) >> (uint256(256) - length * 8); + } + + function get_field_challenge(types.transcript_data memory self, uint256 modulus) + internal pure returns (uint256) { + self.current_challenge = keccak256(abi.encode(self.current_challenge)); + return uint256(self.current_challenge) % modulus; + } + + function get_field_challenges(types.transcript_data memory self, uint256[] memory challenges, uint256 modulus) + internal pure { + if (challenges.length > 0) { + bytes32 new_challenge = self.current_challenge; + for (uint256 i = 0; i < challenges.length;) { + new_challenge = keccak256(abi.encode(new_challenge)); + challenges[i] = uint256(new_challenge) % modulus; + unchecked{ i++; } + } + self.current_challenge = new_challenge; + } + } +} + + +// File contracts/commitments/batched_fri_verifier.sol + + +pragma solidity >=0.8.4; + + + + + +library batched_fri_verifier { + uint256 constant FRI_PARAMS_COEFFS_OFFSET = 0x280; + + uint256 constant S1_OFFSET = 0x00; + uint256 constant X_OFFSET = 0x20; + uint256 constant ALPHA_OFFSET = 0x40; // alpha challenge + uint256 constant COEFFS_OFFSET = 0x60; + uint256 constant Y_OFFSET = 0x80; + uint256 constant COLINEAR_OFFSET = 0xa0; // colinear_value_offset + uint256 constant C1_OFFSET = 0xc0; // coefficient1_offset + uint256 constant C2_OFFSET = 0xe0; // coefficient2_offset + uint256 constant INTERPOLANT_OFFSET = 0x100; + uint256 constant PREV_COEFFS_LEN_OFFSET = 0x120; + uint256 constant WORD_SIZE = 4; + + uint256 constant m = 2; + + function skip_proof_be(bytes calldata blob, uint256 offset) + internal pure returns (uint256 result_offset) { + // fri_roots + uint256 value_len; + (value_len, result_offset) = basic_marshalling.get_skip_length(blob, offset); + for (uint256 i = 0; i < value_len;) { + result_offset = basic_marshalling.skip_octet_vector_32_be(result_offset); + unchecked{ i++; } + } + // final_polynomial + result_offset = basic_marshalling.skip_vector_of_uint256_be(blob, result_offset); + // query_proofs + (value_len, result_offset) = basic_marshalling.get_skip_length(blob, result_offset); + for (uint256 i = 0; i < value_len;) { + result_offset = skip_query_proof_be(blob, result_offset); + unchecked{ i++; } + } + } + + function parse_proof_be(types.fri_params_type memory fri_params, bytes calldata blob, uint256 offset) + internal pure returns (bool success, uint256 result_offset) { + success = true; + // fri_roots + uint256 value_len; + (value_len, result_offset) = basic_marshalling.get_skip_length(blob, offset); + if( value_len != fri_params.step_list.length ){ + success = false; + return(success, result_offset); + } + fri_params.fri_roots = new uint256[](value_len); + for (uint256 i = 0; i < value_len;) { + fri_params.fri_roots[i] = basic_marshalling.get_uint256_be(blob, basic_marshalling.skip_length(result_offset)); + result_offset = basic_marshalling.skip_octet_vector_32_be(result_offset); + unchecked{ i++; } + } + // final_polynomial + fri_params.fri_final_poly_offset = result_offset; + (value_len, result_offset) = basic_marshalling.get_skip_length(blob, result_offset); + + if( value_len > (( 1 << (field.log2(fri_params.max_degree + 1) - fri_params.r + 1) ) ) ){ + success = false; + return(success, result_offset); + } + + fri_params.final_polynomial = new uint256[](value_len); + for (uint256 i = 0; i < value_len;) { + fri_params.final_polynomial[i] = basic_marshalling.get_uint256_be(blob, result_offset); + result_offset = basic_marshalling.skip_uint256_be(result_offset); + unchecked{ i++; } + } + + // query_proofs + (value_len, result_offset) = basic_marshalling.get_skip_length(blob, result_offset); + fri_params.fri_cur_query_offset = result_offset; + if( value_len != fri_params.lambda ) { + success = false; + return(success, result_offset); + } + + for (uint256 i = 0; i < value_len;) { + (success, result_offset) = parse_query_proof_be(fri_params, blob, result_offset); + if(!success) return(success, result_offset); + unchecked{ i++; } + } + } + + function skip_query_proof_be(bytes calldata blob, uint256 offset) + internal pure returns (uint256 result_offset){ + uint256 value_len; + (value_len, result_offset) = basic_marshalling.get_skip_length(blob, offset); + for(uint256 i = 0; i < value_len;){ + result_offset = skip_initial_proof_be(blob, result_offset); + unchecked{ i++; } + } + (value_len, result_offset) = basic_marshalling.get_skip_length(blob, result_offset); + for(uint256 i = 0; i < value_len;){ + result_offset = skip_round_proof_be(blob, result_offset); + unchecked{ i++; } + } + } + + function parse_query_proof_be(types.fri_params_type memory fri_params, bytes calldata blob, uint256 offset) + internal pure returns (bool success, uint256 result_offset){ + success = true; + uint256 value_len; + (value_len, result_offset) = basic_marshalling.get_skip_length(blob, offset); + if( value_len != fri_params.batches_sizes.length ){ + success = false; + return( success, result_offset); + } + + for(uint256 i = 0; i < value_len;){ + (success, result_offset) = parse_initial_proof_be(fri_params, i, blob, result_offset); + if( !success ) return(success, result_offset ); + unchecked{ i++; } + } + (value_len, result_offset) = basic_marshalling.get_skip_length(blob, result_offset); + if( value_len != fri_params.step_list.length){ + success = false; + return( success, result_offset); + } + for(uint256 i = 0; i < value_len;){ + (success, result_offset) = parse_round_proof_be(fri_params, i, blob, result_offset); + if( !success ) return(success, result_offset ); + unchecked{ i++; } + } + } + + function skip_initial_proof_be(bytes calldata blob, uint256 offset) + internal pure returns(uint256 result_offset){ + // p; + result_offset = merkle_verifier.skip_merkle_proof_be(blob, offset); + // polynomials num + result_offset = basic_marshalling.skip_length(result_offset); + // coset_size + result_offset = basic_marshalling.skip_length(result_offset); + result_offset = basic_marshalling.skip_vector_of_uint256_be(blob, result_offset); + } + + function parse_initial_proof_be(types.fri_params_type memory fri_params, uint256 i, bytes calldata blob, uint256 offset) + internal pure returns(bool success, uint256 result_offset){ + success = true; + // p; + result_offset = merkle_verifier.skip_merkle_proof_be(blob, offset); + // polynomials num + uint256 len; + (len, result_offset) = basic_marshalling.get_skip_length(blob, result_offset); + if( len != fri_params.batches_sizes[i] ) { + success = false; + return(success, result_offset); + } + // coset_size + (len, result_offset) = basic_marshalling.get_skip_length(blob, result_offset); + if( len != (1 << fri_params.step_list[0]) ) { + success = false; + return(success, result_offset); + } + // values + len = basic_marshalling.get_length(blob, result_offset); + result_offset = basic_marshalling.skip_vector_of_uint256_be(blob, result_offset); + if(len != fri_params.batches_sizes[i] * (1 << fri_params.step_list[0])){ + success = false; + return(success, result_offset); + } + } + + function skip_round_proof_be(bytes calldata blob, uint256 offset) + internal pure returns(uint256 result_offset){ + // p; + result_offset = merkle_verifier.skip_merkle_proof_be(blob, offset); + // y; + result_offset = basic_marshalling.skip_vector_of_uint256_be(blob, result_offset); + } + + function parse_round_proof_be(types.fri_params_type memory fri_params, uint256 i, bytes calldata blob, uint256 offset) + internal pure returns(bool success, uint256 result_offset){ + success = true; + // p; + result_offset = merkle_verifier.skip_merkle_proof_be(blob, offset); + // y; + if( i < fri_params.step_list.length - 1){ + if( basic_marshalling.get_length(blob, result_offset) != (1 << fri_params.step_list[i+1]) ){ + success = false; + return(success, result_offset); + } + }else{ + if( basic_marshalling.get_length(blob, result_offset) != 2 ){ + success = false; + return( success, result_offset); + } + } + result_offset = basic_marshalling.skip_vector_of_uint256_be(blob, result_offset); + } + + // Use this hack only for lpc test(!) + // Call this function only after fri_params is completely initialized by parse* functions. + function extract_merkle_roots(bytes calldata blob, types.fri_params_type memory fri_params) + internal pure returns(uint256[] memory roots){ + roots = new uint256[](fri_params.batches_num); + uint256 offset = fri_params.fri_cur_query_offset; + offset = basic_marshalling.skip_length(offset); + for( uint256 i = 0; i < fri_params.batches_num;){ + roots[i] = merkle_verifier.get_merkle_root_from_proof(blob, offset); + offset = skip_initial_proof_be(blob, offset); + unchecked{ i++; } + } + } + + // if x_index is index of x, then paired_index is index of -x + function get_paired_index(uint256 x_index, uint256 domain_size) + internal pure returns(uint256 result ){ + unchecked{ result = (x_index + (domain_size >> 1)) & (domain_size - 1); } + } + + // calculate indices for coset S = {s\in D| s^(2^fri_step) == x_next} + function get_folded_index(uint256 x_index, uint256 fri_step, uint256 domain_size_mod) + internal pure returns(uint256 result){ + unchecked{result = x_index & (domain_size_mod >> fri_step);} + } + + function calculate_s( + types.fri_params_type memory fri_params, + types.fri_state_type memory local_vars) internal pure{ + + fri_params.s[0] = local_vars.x; + if( local_vars.coset_size > 1){ + uint256 base_index = local_vars.domain_size >> 2; + uint256 prev_half_size = 1; + uint256 i = 1; + uint256 j; + local_vars.newind = fri_params.D_omegas.length - 1; + while( i < local_vars.coset_size ){ + for( j = 0; j < prev_half_size;) { + fri_params.s[i] = field.fmul(fri_params.s[j], fri_params.D_omegas[local_vars.newind], fri_params.modulus); + unchecked{ i++; } // TODO: is it really here? Yes, it is)) + unchecked{ j++; } + } + unchecked{ + base_index >>=1; + prev_half_size <<=1; + local_vars.newind--; + } + } + } + } + + + + + function prepare_initial_leaf_data( + bytes calldata blob, + uint256 offset, + uint256 k, // current batch index + types.fri_params_type memory fri_params, + types.fri_state_type memory local_vars + ) internal pure { + uint256 base_index; + uint256 prev_half_size; + uint256 i; + uint256 j; + + local_vars.indices_size = 1 << (fri_params.step_list[0] - 1); + + fri_params.s_indices[0] = local_vars.x_index; + fri_params.s[0] = local_vars.x; + fri_params.tmp_arr[0] = get_folded_index(local_vars.x_index, fri_params.step_list[0], local_vars.domain_size_mod); + + // Fill s and s_indices + if( local_vars.indices_size > 1){ + unchecked{ + base_index = local_vars.domain_size >> 2; + prev_half_size = 1; + i = 1; + local_vars.newind = fri_params.D_omegas.length - 1; + } + while( i < local_vars.indices_size ){ + for( j = 0; j < prev_half_size;) { + unchecked{ + fri_params.s_indices[i] = (base_index + fri_params.s_indices[j]) & local_vars.domain_size_mod; + fri_params.tmp_arr[i] = (base_index + fri_params.tmp_arr[j]) & local_vars.domain_size_mod; + } + fri_params.s[i] = field.fmul(fri_params.s[j], fri_params.D_omegas[local_vars.newind], fri_params.modulus); + unchecked{ i++; } // TODO: is it really here? Yes, it is)) + unchecked{ j++; } + } + unchecked{ + base_index >>=1; + prev_half_size <<=1; + local_vars.newind--; + } + } + } + + // Fill correct_order_idx + for ( i = 0; i < local_vars.indices_size;) { + for(j = 0; j < local_vars.indices_size;){ + if(fri_params.s_indices[j] == fri_params.tmp_arr[i]){ + local_vars.newind = j; + break; + } + if(get_paired_index(fri_params.s_indices[j], local_vars.domain_size) == fri_params.tmp_arr[i]){ + local_vars.newind = j; + break; + } + unchecked{ j++; } + } + fri_params.correct_order_idx[i] = local_vars.newind; + unchecked{ i++; } + } + + uint256 first_offset = 4; + + uint256 y_offset; + + offset = merkle_verifier.skip_merkle_proof_be(blob, offset); + offset = basic_marshalling.skip_length(offset); // Skip polynomial number + offset = basic_marshalling.skip_length(offset); // Skip coset size + offset = basic_marshalling.skip_length(offset); // Skip y length + for (local_vars.p_ind = 0; local_vars.p_ind < fri_params.batches_sizes[k];) { + for(local_vars.y_ind = 0; local_vars.y_ind < local_vars.indices_size;){ + local_vars.newind = fri_params.correct_order_idx[local_vars.y_ind]; + // Check leaf size + // Prepare y-s + unchecked{ y_offset = offset + ( local_vars.newind << 6 ); } + + // push y + if(fri_params.s_indices[local_vars.newind] == fri_params.tmp_arr[local_vars.y_ind]){ + bytes memory data_to_copy = blob[y_offset: y_offset + WORD_SIZE]; + basic_marshalling.write_bytes(local_vars.b , first_offset, data_to_copy); +// assembly{ +// mstore( +// add(mload(local_vars),first_offset), +// calldataload(add(blob.offset, y_offset)) +// ) + data_to_copy = blob[y_offset + WORD_SIZE : y_offset + WORD_SIZE + WORD_SIZE]; + basic_marshalling.write_bytes(local_vars.b , first_offset + WORD_SIZE, data_to_copy); +// mstore( +// add(mload(local_vars),add(first_offset, 0x20)), +// calldataload(add(blob.offset, add(y_offset, 0x20))) +// ) +// } + } else { + bytes memory data_to_copy = blob[y_offset + WORD_SIZE : y_offset + WORD_SIZE + WORD_SIZE]; + basic_marshalling.write_bytes(local_vars.b , first_offset, data_to_copy); +// assembly{ +// mstore( +// add(mload(local_vars),first_offset), +// calldataload(add(blob.offset, add(y_offset, 0x20))) +// ) + data_to_copy = blob[y_offset:y_offset + WORD_SIZE]; + basic_marshalling.write_bytes(local_vars.b , first_offset + WORD_SIZE, data_to_copy); +// mstore( +// add(mload(local_vars),add(first_offset, 0x20)), +// calldataload(add(blob.offset, y_offset)) +// ) +// } + } + unchecked{ + local_vars.y_ind++; + first_offset += 8; + } + } + unchecked{ offset += (1<<(fri_params.step_list[0]+5)); local_vars.p_ind++; } + } + } + + // For round proofs + // Reorder local_vars.values and push to local_vars.b + function prepare_leaf_data( + bytes calldata blob, + uint256 offset, // round proof offset + types.fri_params_type memory fri_params, + types.fri_state_type memory local_vars + ) internal pure { + uint256 base_index; + uint256 prev_half_size; + uint256 i; + uint256 j; + + local_vars.indices_size = 1 << (fri_params.step_list[local_vars.step] - 1); + + fri_params.s_indices[0] = local_vars.x_index; + fri_params.s[0] = local_vars.x; + fri_params.tmp_arr[0] = get_folded_index(local_vars.x_index, fri_params.step_list[local_vars.step], local_vars.domain_size_mod); + + // Fill s and s_indices + if( local_vars.indices_size > 1){ + unchecked{ + base_index = local_vars.domain_size >> 2; + prev_half_size = 1; + i = 1; + local_vars.newind = fri_params.D_omegas.length - 1; + } + while( i < local_vars.indices_size ){ + for( j = 0; j < prev_half_size;) { + unchecked{ + fri_params.s_indices[i] = (base_index + fri_params.s_indices[j]) & local_vars.domain_size_mod; + fri_params.tmp_arr[i] = (base_index + fri_params.tmp_arr[j]) & local_vars.domain_size_mod; + } + fri_params.s[i] = field.fmul(fri_params.s[j], fri_params.D_omegas[local_vars.newind], fri_params.modulus); + unchecked{ i++; } // TODO: is it really here? Yes, it is)) + unchecked{ j++; } + } + unchecked{ + base_index >>=1; + prev_half_size <<=1; + local_vars.newind--; + } + } + } + + // Fill correct_order_idx + for ( i = 0; i < local_vars.indices_size;) { + for(j = 0; j < local_vars.indices_size;){ + if(fri_params.s_indices[j] == fri_params.tmp_arr[i]){ + local_vars.newind = j; + break; + } + if(get_paired_index(fri_params.s_indices[j], local_vars.domain_size) == fri_params.tmp_arr[i]){ + local_vars.newind = j; + break; + } + unchecked{ j++; } + } + fri_params.correct_order_idx[i] = local_vars.newind; + unchecked{ i++; } + } + + bytes memory y; + offset = 4; + for(local_vars.y_ind = 0; local_vars.y_ind < local_vars.indices_size;){ + local_vars.newind = fri_params.correct_order_idx[local_vars.y_ind]; + // Check leaf size + // Prepare y-s + + // push y + if(fri_params.s_indices[local_vars.newind] == fri_params.tmp_arr[local_vars.y_ind]){ + y = basic_marshalling.to_bytes(local_vars.values[local_vars.newind<<1]); + basic_marshalling.write_bytes(local_vars.b,offset,y); +// assembly{ +// mstore( +// add(mload(local_vars), offset), y +// ) +// } + y = basic_marshalling.to_bytes(local_vars.values[(local_vars.newind<<1)+1]); + basic_marshalling.write_bytes(local_vars.b, offset + WORD_SIZE, y); +// assembly{ +// mstore( +// add(mload(local_vars),add(offset, 0x20)), y +// ) +// } + } else { + y = basic_marshalling.to_bytes(local_vars.values[(local_vars.newind<<1)+1]); + basic_marshalling.write_bytes(local_vars.b, offset,y); +// assembly{ +// mstore( +// add(mload(local_vars), offset), y +// ) +// } + y = basic_marshalling.to_bytes(local_vars.values[local_vars.newind<<1]); + basic_marshalling.write_bytes(local_vars.b, offset + WORD_SIZE,y); +// assembly{ +// mstore( +// add(mload(local_vars),add(offset, 0x20)), y +// ) +// } + } + unchecked{ + local_vars.y_ind++; + offset += (WORD_SIZE * 2); + } + } + } + + function clear_values( uint256[] memory values ) + internal pure{ + for( uint256 i = 0; i < values.length;){ + values[i] = 0; + unchecked{ i++; } + } + } + + function load_values( bytes calldata blob, uint256 offset, types.fri_state_type memory local_vars ) + internal pure{ + uint256 len; + (len, offset) = basic_marshalling.get_skip_length(blob, offset); + for( uint256 i = 0; i < len;){ + local_vars.values[i] = basic_marshalling.get_uint256_be(blob, offset); + offset = basic_marshalling.skip_uint256_be(offset); + unchecked{i++;} + } + } + + function verify_proof_be( + bytes calldata blob, + uint256[] memory roots, + types.transcript_data memory tr_state, + types.fri_params_type memory fri_params + ) internal view returns (bool result) { + types.fri_state_type memory local_vars; + + // TODO strange bug. If we we exchange two next lines, then it will not work. + local_vars.alphas = new uint256[](fri_params.r); + local_vars.b = new bytes(0x40 * fri_params.max_batch * fri_params.max_coset); + + uint256 offset; + uint256 ind; + uint256 k; + uint256 i; + + offset = basic_marshalling.skip_length(fri_params.fri_proof_offset); + offset = basic_marshalling.skip_length(offset); + for( ind = 0; ind < fri_params.step_list.length;){ + transcript.update_transcript_b32_by_offset_calldata(tr_state, blob, offset); + for( uint256 round = 0; round < fri_params.step_list[ind];){ + local_vars.alphas[local_vars.cur] = transcript.get_field_challenge(tr_state, fri_params.modulus); + unchecked{ round++; local_vars.cur++;} + } + offset = basic_marshalling.skip_octet_vector_32_be(offset); + unchecked{ind++;} + } + + for( local_vars.query_id = 0; local_vars.query_id < fri_params.lambda;){ + // It'll be init_vars function next + unchecked{ local_vars.domain_size = 1 << (fri_params.D_omegas.length + 1); } + unchecked{ local_vars.domain_size_mod = local_vars.domain_size - 1; } + local_vars.x_index = transcript.get_integral_challenge_be(tr_state, 8) & local_vars.domain_size_mod; + local_vars.x = field.expmod_static( + fri_params.D_omegas[0], + local_vars.x_index, + fri_params.modulus + ); + + // Check initial proofs + offset = basic_marshalling.skip_length(fri_params.fri_cur_query_offset); + for( k = 0; k < fri_params.batches_num;){ + // Check merkle local_vars.roots + local_vars.root = merkle_verifier.get_merkle_root_from_proof(blob, offset); + if( local_vars.root != roots[k] ){ + return false; + } + prepare_initial_leaf_data(blob, offset, k, fri_params, local_vars); + local_vars.b_length = (fri_params.batches_sizes[k] << (fri_params.step_list[0] +5)); + if (!merkle_verifier.parse_verify_merkle_proof_bytes_be( + blob, offset, local_vars.b, local_vars.b_length + )) { + return false; + } + offset = skip_initial_proof_be(blob, offset); + // Check merkle proofs + unchecked{k++;} + } + + // Construct ys for the first round + local_vars.coset_size = 1 << fri_params.step_list[0]; + local_vars.values = new uint256[](1 << fri_params.max_step); + local_vars.tmp_values = new uint256[](1 << fri_params.max_step); + + for( ind = 0; ind < fri_params.different_points;){ + offset = basic_marshalling.skip_length(fri_params.fri_cur_query_offset); + offset = merkle_verifier.skip_merkle_proof_be(blob,offset); + offset = basic_marshalling.skip_length(offset); + offset = basic_marshalling.skip_length(offset); + offset = basic_marshalling.skip_length(offset); + clear_values(local_vars.tmp_values); + local_vars.cur = 0; + for( k = 0; k < fri_params.batches_num;){ + for( i = 0; i < fri_params.batches_sizes[k];){ + polynomial.multiply_poly_on_coeff(local_vars.tmp_values,fri_params.theta, fri_params.modulus); + if( fri_params.eval_map[local_vars.cur] == ind ){ + for( uint256 j = 0; j < local_vars.coset_size;){ + local_vars.tmp_values[j] = addmod( + local_vars.tmp_values[j], + basic_marshalling.get_uint256_be(blob, offset), + fri_params.modulus + ); + offset = basic_marshalling.skip_uint256_be(offset); + unchecked{ j++; } + } + } else { + offset += (local_vars.coset_size << 5); + } + unchecked{ i++; local_vars.cur++;} + } + offset = merkle_verifier.skip_merkle_proof_be(blob,offset); + offset = basic_marshalling.skip_length(offset); + offset = basic_marshalling.skip_length(offset); + offset = basic_marshalling.skip_length(offset); + unchecked{ k++; } + } + + for( uint256 j = 0; j < local_vars.coset_size; j++){ + if( j & 1 == 0 ) + { local_vars.s = fri_params.s[j>>1];} + else + { local_vars.s = fri_params.modulus - fri_params.s[j>>1];} + local_vars.tmp_values[j] = addmod( + mulmod( local_vars.tmp_values[j], fri_params.factors[ind], fri_params.modulus), + fri_params.modulus - polynomial.evaluate(fri_params.combined_U[ind], local_vars.s, fri_params.modulus), + fri_params.modulus + ); + // TODO Denominators for all s can be precomputed. It doesn't depend on polynomial. + local_vars.tmp_values[j] = mulmod( + local_vars.tmp_values[j], + field.inverse_static( + polynomial.evaluate(fri_params.denominators[ind], local_vars.s, fri_params.modulus), + fri_params.modulus + ), + fri_params.modulus + ); + local_vars.values[j] = addmod(local_vars.values[j], local_vars.tmp_values[j], fri_params.modulus); + } + unchecked{ind++;} + } + + offset = basic_marshalling.skip_length(fri_params.fri_cur_query_offset); + for( k = 0; k < fri_params.batches_num; ){ + offset = skip_initial_proof_be(blob, offset); + unchecked{k++;} + } + + // Round proofs check + local_vars.cur = 0; + offset = basic_marshalling.skip_length(offset); + + for( local_vars.step = 0; local_vars.step < fri_params.step_list.length;){ + // Merkle check; + local_vars.fri_root = basic_marshalling.get_uint256_be(blob, basic_marshalling.skip_length(offset) + 0x8); + if( local_vars.fri_root != fri_params.fri_roots[local_vars.step]) { + return false; + } + + local_vars.coset_size = 1 << fri_params.step_list[local_vars.step]; + prepare_leaf_data(blob, offset, fri_params, local_vars); + local_vars.b_length = (1 << (fri_params.step_list[local_vars.step] + 5)); + if (!merkle_verifier.parse_verify_merkle_proof_bytes_be( + blob, offset, local_vars.b, local_vars.b_length + )) { + return false; + } + + // Colinear check; + local_vars.factor = 1; + for( local_vars.round = 0; local_vars.round < fri_params.step_list[local_vars.step];){ + local_vars.coset_size >>= 1; + calculate_s(fri_params, local_vars); + local_vars.domain_size >>= 1; + local_vars.domain_size_mod >>= 1; + local_vars.x_index &= local_vars.domain_size_mod; + local_vars.x = mulmod(local_vars.x, local_vars.x, fri_params.modulus); + if( local_vars.round == 0){ + for( uint256 j = 0; j < local_vars.coset_size;){ + local_vars.f0 = local_vars.values[j<<1]; + local_vars.f1 = local_vars.values[(j<<1) + 1]; + local_vars.values[j] = addmod(local_vars.f0, local_vars.f1, fri_params.modulus); + local_vars.values[j] = mulmod(local_vars.values[j], fri_params.s[j], fri_params.modulus); + local_vars.values[j] = addmod( + local_vars.values[j], + mulmod( + local_vars.alphas[local_vars.cur], + addmod(local_vars.f0, fri_params.modulus-local_vars.f1, fri_params.modulus), + fri_params.modulus + ), + fri_params.modulus + ); + local_vars.values[j] = mulmod( + local_vars.values[j], + fri_params.s[j], + fri_params.modulus + ); + unchecked{ j++; } + } + local_vars.factor = mulmod(local_vars.factor, 2, fri_params.modulus); + } else { + for( uint256 j = 0; j < local_vars.coset_size;){ + local_vars.f0 = local_vars.values[j<<1]; + local_vars.f1 = local_vars.values[(j<<1) + 1]; + local_vars.values[j] = addmod(local_vars.f0, fri_params.modulus - local_vars.f1, fri_params.modulus); + local_vars.values[j] = mulmod(local_vars.values[j], fri_params.s[j], fri_params.modulus); + local_vars.values[j] = addmod( + local_vars.values[j], + mulmod( + local_vars.alphas[local_vars.cur], + addmod(local_vars.f0, local_vars.f1, fri_params.modulus), + fri_params.modulus + ), + fri_params.modulus + ); + unchecked{ j++; } + } + local_vars.factor = mulmod(local_vars.factor, 2, fri_params.modulus); + } + unchecked{local_vars.round++; local_vars.cur++;} + } + local_vars.factor = mulmod(local_vars.factor, fri_params.s[0], fri_params.modulus); + local_vars.factor = mulmod(local_vars.factor, fri_params.s[0], fri_params.modulus); + local_vars.interpolant = local_vars.values[0]; + + offset = merkle_verifier.skip_merkle_proof_be(blob,offset); + load_values(blob, offset, local_vars); + if( local_vars.interpolant != mulmod(local_vars.factor, local_vars.values[0], fri_params.modulus) ){ + return false; + } + offset = basic_marshalling.skip_vector_of_uint256_be(blob, offset); + unchecked{local_vars.step++;} + } + + // Final polynomial check. Final polynomial degree is already checked while parsing process + if( polynomial.evaluate(fri_params.final_polynomial, local_vars.x, fri_params.modulus) != local_vars.values[0]){ + return false; + } + if( polynomial.evaluate(fri_params.final_polynomial, fri_params.modulus-local_vars.x, fri_params.modulus) != local_vars.values[1]){ + return false; + } + + fri_params.fri_cur_query_offset = skip_query_proof_be(blob, fri_params.fri_cur_query_offset); + unchecked{local_vars.query_id++;} + } + return true; + } +} + + +// File contracts/commitments/batched_lpc_verifier.sol + + +pragma solidity >=0.8.4; + + + + +library batched_lpc_verifier { + + uint256 constant m = 2; + + function skip_proof_be(bytes calldata blob, uint256 offset) + internal pure returns (uint256 result_offset) { + uint256 i; + uint256 len; + // z + + (len, result_offset) = basic_marshalling.get_skip_length(blob, offset); + for( i = 0; i < len; ){ + result_offset = basic_marshalling.skip_vector_of_vectors_of_uint256_be_check(blob, result_offset); + unchecked{i++;} + } + // fri_proof + result_offset = batched_fri_verifier.skip_proof_be(blob, result_offset); + } + + // Check proof data carefully. + // Load necessary offsets to fri params + function parse_proof_be(types.fri_params_type memory fri_params, bytes calldata blob, uint256 offset) + internal pure returns (bool success, uint256 result_offset) { + success = true; + uint256 len; + // z + (len, result_offset) = basic_marshalling.get_skip_length(blob, offset); + if( len != fri_params.batches_sizes.length ){ + success = false; + return (success, result_offset); + } + for( uint256 i = 0; i < len; ){ + if( fri_params.batches_sizes[i] == 0 ){ + fri_params.batches_sizes[i] = basic_marshalling.get_length(blob, result_offset); + } else { + if( basic_marshalling.get_length(blob, result_offset) != fri_params.batches_sizes[i]){ + success = false; + return (success, result_offset); + } + } + fri_params.poly_num += fri_params.batches_sizes[i]; + result_offset = basic_marshalling.skip_vector_of_vectors_of_uint256_be_check(blob, result_offset); + unchecked{i++;} + } + // fri_proof + fri_params.fri_proof_offset = result_offset; + (success, result_offset) = batched_fri_verifier.parse_proof_be(fri_params, blob, result_offset); + } + + // Input is proof_map.eval_proof_combined_value_offset + function get_variable_values_z_i_j_from_proof_be(bytes calldata blob, uint256 offset, uint256 i, uint256 j) + internal pure returns (uint256 z_i_j){ + uint256 vv_offset = basic_marshalling.skip_length(offset); + + z_i_j = basic_marshalling.get_i_j_uint256_from_vector_of_vectors( + blob, vv_offset, i, j + ); + } + + function get_permutation_z_i_j_from_proof_be(bytes calldata blob, uint256 offset, uint256 i, uint256 j) + internal pure returns (uint256 z_i_j){ + uint256 p_offset = basic_marshalling.skip_length(offset); + + p_offset = basic_marshalling.skip_vector_of_vectors_of_uint256_be(blob, p_offset); + z_i_j = basic_marshalling.get_i_j_uint256_from_vector_of_vectors( + blob, p_offset, i, j + ); + } + + function get_quotient_z_i_j_from_proof_be(bytes calldata blob, uint256 offset, uint256 i, uint256 j) + internal pure returns (uint256 z_i_j){ + uint256 q_offset = basic_marshalling.skip_length(offset); + + q_offset = basic_marshalling.skip_vector_of_vectors_of_uint256_be(blob, q_offset); + q_offset = basic_marshalling.skip_vector_of_vectors_of_uint256_be(blob, q_offset); + z_i_j = basic_marshalling.get_i_j_uint256_from_vector_of_vectors( + blob, q_offset, i, j + ); + } + + // TODO add starting offsets of eval arrays to some kind of proof map + function get_fixed_values_z_i_j_from_proof_be(bytes calldata blob, uint256 offset, uint256 i, uint256 j) + internal pure returns (uint256 z_i_j){ + uint256 fv_offset = basic_marshalling.skip_length(offset); + + fv_offset = basic_marshalling.skip_vector_of_vectors_of_uint256_be(blob, fv_offset); + fv_offset = basic_marshalling.skip_vector_of_vectors_of_uint256_be(blob, fv_offset); + fv_offset = basic_marshalling.skip_vector_of_vectors_of_uint256_be(blob, fv_offset); + z_i_j = basic_marshalling.get_i_j_uint256_from_vector_of_vectors( + blob, fv_offset, i, j + ); + } + + function eval_points_eq(uint256[] memory p1, uint256[] memory p2 ) + internal pure returns(bool eq){ + eq = true; + if (p1.length != p2.length) return false; + for(uint256 i = 0; i < p1.length;){ + if(p1[i] != p2[i]) return false; + unchecked{i++;} + } + } + + // Use this hack only for lpc test(!) + // Call this function only after fri_params is completely initialized by parse* functions. + function extract_merkle_roots(bytes calldata blob, types.fri_params_type memory fri_params) + internal pure returns (uint256[] memory roots){ + return batched_fri_verifier.extract_merkle_roots(blob, fri_params); + } + + function calculate_2points_interpolation(uint256[] memory xi, uint256[2] memory z, uint256 modulus) + internal pure returns(uint256[2] memory U){ +// require( xi.length == 2 ); + U[0] = addmod(mulmod(z[0], xi[1], modulus),modulus - mulmod(z[1], xi[0], modulus), modulus); + U[1] = addmod(z[1], modulus - z[0], modulus); + } + +// coeffs for zs on each degree can be precomputed if necessary + function calculate_3points_interpolation(uint256[] memory xi, uint256[3] memory z, uint256 modulus) + internal pure returns(uint256[3] memory U){ +// require( xi.length == 3 ); + z[0] = mulmod(z[0], addmod(xi[1], modulus - xi[2], modulus), modulus); + z[1] = mulmod(z[1], addmod(xi[2], modulus - xi[0], modulus), modulus); + z[2] = mulmod(z[2], addmod(xi[0], modulus - xi[1], modulus), modulus); + + U[0] = mulmod(z[0], mulmod(xi[1], xi[2], modulus), modulus); + U[0] = addmod(U[0], mulmod(z[1], mulmod(xi[0], xi[2], modulus), modulus), modulus); + U[0] = addmod(U[0], mulmod(z[2], mulmod(xi[0], xi[1], modulus), modulus), modulus); + + U[1] = modulus - mulmod(z[0], addmod(xi[1], xi[2], modulus), modulus); + U[1] = addmod(U[1], modulus - mulmod(z[1], addmod(xi[0], xi[2], modulus), modulus), modulus); + U[1] = addmod(U[1], modulus - mulmod(z[2], addmod(xi[0], xi[1], modulus), modulus), modulus); + + U[2] = addmod(z[0], addmod(z[1], z[2], modulus), modulus); + } + + function verify_proof_be( + bytes calldata blob, + uint256 offset, + uint256[] memory roots, + uint256[2][2][2] memory evaluation_points, + types.transcript_data memory tr_state, + types.fri_params_type memory fri_params) + internal view returns (bool result) { + uint256 ind; + + // Push all merkle roots to transcript + for( ind = 0; ind < fri_params.batches_num;){ + transcript.update_transcript_b32(tr_state, bytes32(roots[ind])); + unchecked{ind++;} + } + fri_params.theta = transcript.get_field_challenge(tr_state, fri_params.modulus); + fri_params.eval_map = new uint256[](fri_params.poly_num); + fri_params.unique_eval_points = new uint256[][](fri_params.poly_num); + + uint256 cur = 0; + fri_params.different_points = 0; + bool found = false; + uint256[] memory point; + uint256 k; + uint256 i; + + // Prepare evaluation map; + for( k = 0; k < fri_params.batches_num;){ + for( i = 0; i < fri_params.batches_sizes[k]; ){ + if( evaluation_points[k].length == 1 && i > 0){ + fri_params.eval_map[cur] = fri_params.eval_map[cur - 1]; + } else { + //TODO? + //point = evaluation_points[k][i]; + // find this point + found = false; + for( ind = 0; ind < fri_params.different_points;){ + if( eval_points_eq(point, fri_params.unique_eval_points[ind]) ){ + found = true; + fri_params.eval_map[cur] = ind; + break; + } + unchecked{ind++;} + } + if(!found) { + fri_params.unique_eval_points[fri_params.different_points] = point; + fri_params.eval_map[cur] = fri_params.different_points; + unchecked{ + fri_params.different_points++; + } + } + } + unchecked{i++;cur++;} + } + unchecked{k++;} + } + + fri_params.denominators = new uint256[][](fri_params.different_points); + fri_params.factors = new uint256[](fri_params.different_points); + + // Prepare denominators + for( ind = 0; ind < fri_params.different_points;){ + fri_params.denominators[ind] = new uint256[](fri_params.unique_eval_points[ind].length + 1); + if( fri_params.unique_eval_points[ind].length == 1 ){ + fri_params.factors[ind] = 1; + fri_params.denominators[ind][0] = fri_params.modulus - fri_params.unique_eval_points[ind][0]; + fri_params.denominators[ind][1] = 1; + } else + if( fri_params.unique_eval_points[ind].length == 2 ){ + // xi1 - xi0 + fri_params.factors[ind] = + addmod(fri_params.unique_eval_points[ind][1], fri_params.modulus - fri_params.unique_eval_points[ind][0], fri_params.modulus); + fri_params.denominators[ind][2] = 1; + + fri_params.denominators[ind][1] = + fri_params.modulus - addmod(fri_params.unique_eval_points[ind][0], fri_params.unique_eval_points[ind][1], fri_params.modulus); + + fri_params.denominators[ind][0] = + mulmod(fri_params.unique_eval_points[ind][0], fri_params.unique_eval_points[ind][1], fri_params.modulus); + fri_params.denominators[ind][0] = mulmod(fri_params.denominators[ind][0], fri_params.factors[ind], fri_params.modulus); + fri_params.denominators[ind][1] = mulmod(fri_params.denominators[ind][1], fri_params.factors[ind], fri_params.modulus); + fri_params.denominators[ind][2] = mulmod(fri_params.denominators[ind][2], fri_params.factors[ind], fri_params.modulus); + } else + if( fri_params.unique_eval_points[ind].length == 3 ){ + fri_params.factors[ind] = fri_params.modulus - + mulmod( + mulmod( + addmod(fri_params.unique_eval_points[ind][0], fri_params.modulus - fri_params.unique_eval_points[ind][1], fri_params.modulus), + addmod(fri_params.unique_eval_points[ind][1], fri_params.modulus - fri_params.unique_eval_points[ind][2], fri_params.modulus), + fri_params.modulus + ), + addmod(fri_params.unique_eval_points[ind][2], fri_params.modulus - fri_params.unique_eval_points[ind][0], fri_params.modulus), + fri_params.modulus + ); + fri_params.denominators[ind][3] = 1; + fri_params.denominators[ind][2] = + fri_params.modulus - addmod( + fri_params.unique_eval_points[ind][0], + addmod(fri_params.unique_eval_points[ind][1],fri_params.unique_eval_points[ind][2], fri_params.modulus), + fri_params.modulus + ); + fri_params.denominators[ind][1] = + addmod( + mulmod(fri_params.unique_eval_points[ind][0], fri_params.unique_eval_points[ind][1], fri_params.modulus), + addmod( + mulmod(fri_params.unique_eval_points[ind][0], fri_params.unique_eval_points[ind][2], fri_params.modulus), + mulmod(fri_params.unique_eval_points[ind][1], fri_params.unique_eval_points[ind][2], fri_params.modulus), + fri_params.modulus + ), + fri_params.modulus + ); + fri_params.denominators[ind][0] = + fri_params.modulus - mulmod( + fri_params.unique_eval_points[ind][0], + mulmod(fri_params.unique_eval_points[ind][1],fri_params.unique_eval_points[ind][2], fri_params.modulus), + fri_params.modulus + ); + fri_params.denominators[ind][0] = mulmod(fri_params.denominators[ind][0], fri_params.factors[ind], fri_params.modulus); + fri_params.denominators[ind][1] = mulmod(fri_params.denominators[ind][1], fri_params.factors[ind], fri_params.modulus); + fri_params.denominators[ind][2] = mulmod(fri_params.denominators[ind][2], fri_params.factors[ind], fri_params.modulus); + fri_params.denominators[ind][3] = mulmod(fri_params.denominators[ind][3], fri_params.factors[ind], fri_params.modulus); + } else { + return false; + } + unchecked{ind++;} + } + + // Prepare combined U + fri_params.combined_U = new uint256[][](fri_params.different_points); + for( ind = 0; ind < fri_params.different_points;){ + point = fri_params.unique_eval_points[ind]; + fri_params.combined_U[ind] = new uint256[](fri_params.unique_eval_points[ind].length); + cur = 0; + fri_params.z_offset = basic_marshalling.skip_length(offset); + for( k = 0; k < fri_params.batches_num;){ + fri_params.z_offset = basic_marshalling.skip_length(fri_params.z_offset); + for( i = 0; i < fri_params.batches_sizes[k];){ + polynomial.multiply_poly_on_coeff( + fri_params.combined_U[ind], + fri_params.theta, + fri_params.modulus + ); + if( fri_params.eval_map[cur] == ind ){ + if( point.length == 1 ){ + fri_params.combined_U[ind][0] = addmod( + fri_params.combined_U[ind][0], + basic_marshalling.get_i_uint256_from_vector(blob, fri_params.z_offset, 0), + fri_params.modulus + ); + } else + if( point.length == 2 ){ + uint256[2] memory tmp; + tmp[0] = basic_marshalling.get_i_uint256_from_vector(blob, fri_params.z_offset, 0); + tmp[1] = basic_marshalling.get_i_uint256_from_vector(blob, fri_params.z_offset, 1); + tmp = calculate_2points_interpolation( + point, tmp, fri_params.modulus + ); + fri_params.combined_U[ind][0] = addmod(fri_params.combined_U[ind][0], tmp[0], fri_params.modulus); + fri_params.combined_U[ind][1] = addmod(fri_params.combined_U[ind][1], tmp[1], fri_params.modulus); + } else + if( point.length == 3){ + uint256[3] memory tmp; + tmp[0] = basic_marshalling.get_i_uint256_from_vector(blob, fri_params.z_offset, 0); + tmp[1] = basic_marshalling.get_i_uint256_from_vector(blob, fri_params.z_offset, 1); + tmp[2] = basic_marshalling.get_i_uint256_from_vector(blob, fri_params.z_offset, 2); + tmp = calculate_3points_interpolation( + point, tmp, fri_params.modulus + ); + fri_params.combined_U[ind][0] = addmod(fri_params.combined_U[ind][0], tmp[0], fri_params.modulus); + fri_params.combined_U[ind][1] = addmod(fri_params.combined_U[ind][1], tmp[1], fri_params.modulus); + fri_params.combined_U[ind][2] = addmod(fri_params.combined_U[ind][2], tmp[2], fri_params.modulus); + } else { + return false; + } + } + fri_params.z_offset = basic_marshalling.skip_vector_of_uint256_be(blob, fri_params.z_offset); + unchecked{i++;cur++;} + } + unchecked{k++;} + } + unchecked{ind++;} + } + + + if (!batched_fri_verifier.verify_proof_be(blob, roots, tr_state, fri_params)) { + return false; + } + + return true; + } +} + + +// File contracts/interfaces/gate_argument.sol + + + +pragma solidity >=0.8.4; + +interface IGateArgument { + function evaluate_gates_be(bytes calldata blob, + uint256 eval_proof_combined_value_offset, + types.gate_argument_params memory gate_params, + types.arithmetization_params memory ar_params, + int256[2][2] calldata columns_rotations + ) external pure returns (uint256 gates_evaluation); +} + + +// File contracts/zkllvm/arithmetics_output/gate_argument.sol + + +pragma solidity >=0.8.4; + + + + +contract arithmetics_output_gate_argument_split_gen is IGateArgument{ + uint256 constant GATES_N = 4; + + struct local_vars_type{ + // 0x0 + uint256 constraint_eval; + // 0x20 + uint256 gate_eval; + // 0x40 + uint256 gates_evaluation; + // 0x60 + uint256 theta_acc; + + //0x80 + uint256[] witness_evaluations; + //a0 + uint256[] selector_evaluations; + + } + + uint256 constant MODULUS_OFFSET = 0x0; + uint256 constant THETA_OFFSET = 0x20; + + uint256 constant CONSTRAINT_EVAL_OFFSET = 0x00; + uint256 constant GATE_EVAL_OFFSET = 0x20; + uint256 constant GATES_EVALUATIONS_OFFSET = 0x40; + uint256 constant THETA_ACC_OFFSET = 0x60; + uint256 constant WITNESS_EVALUATIONS_OFFSET = 0x80; + uint256 constant SELECTOR_EVALUATIONS_OFFSET = 0xa0; + + + function get_witness_i(uint256 idx, local_vars_type memory local_var) pure internal returns (uint256 result) { + return local_var.witness_evaluations[idx]; + } + + function get_selector_i(uint256 idx, local_vars_type memory local_var) internal pure returns (uint256 result) { + return local_var.selector_evaluations[idx]; + } + + function evaluate_gates_be( + bytes calldata blob, + uint256 eval_proof_combined_value_offset, + types.gate_argument_params memory gate_params, + types.arithmetization_params memory ar_params, + int256[2][2] calldata columns_rotations + ) external pure returns (uint256 gates_evaluation) { + local_vars_type memory local_vars; + + + local_vars.witness_evaluations = new uint256[](ar_params.witness_columns); + for (uint256 i = 0; i < ar_params.witness_columns;) { + local_vars.witness_evaluations[i] = batched_lpc_verifier.get_variable_values_z_i_j_from_proof_be( + blob, eval_proof_combined_value_offset, i, 0 + ); + unchecked{i++;} + } + + local_vars.selector_evaluations = new uint256[](ar_params.selector_columns); + for (uint256 i = 0; i < ar_params.selector_columns;) { + local_vars.selector_evaluations[i] = batched_lpc_verifier.get_fixed_values_z_i_j_from_proof_be( + blob, eval_proof_combined_value_offset, ar_params.permutation_columns + ar_params.permutation_columns + ar_params.constant_columns + i, 0 + ); + unchecked{i++;} + } + + + local_vars.theta_acc = 1; + local_vars.gates_evaluation = 0; + + uint256 theta_acc = local_vars.theta_acc; + + uint256 terms; + uint256 modulus = gate_params.modulus; + uint256 theta = gate_params.theta; + + + //Gate0 + local_vars.gate_eval = 0; + local_vars.constraint_eval = 0; + terms=get_witness_i(0, local_vars); + local_vars.constraint_eval = addmod(local_vars.constraint_eval,terms,modulus); + terms=get_witness_i(1, local_vars); + local_vars.constraint_eval = addmod(local_vars.constraint_eval,terms,modulus); + terms=0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000; + terms=mulmod(terms, get_witness_i(2, local_vars), modulus); + local_vars.constraint_eval = addmod(local_vars.constraint_eval,terms,modulus); + local_vars.gate_eval = addmod(local_vars.gate_eval,mulmod(local_vars.constraint_eval,theta_acc,modulus),modulus); + theta_acc = mulmod(theta_acc, theta, modulus); + local_vars.gate_eval = mulmod(local_vars.gate_eval,get_selector_i(0,local_vars),modulus); + gates_evaluation = addmod(gates_evaluation,local_vars.gate_eval,modulus); + + //Gate1 + local_vars.gate_eval = 0; + local_vars.constraint_eval = 0; + terms=get_witness_i(0, local_vars); + terms=mulmod(terms, get_witness_i(1, local_vars), modulus); + local_vars.constraint_eval = addmod(local_vars.constraint_eval,terms,modulus); + terms=0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000; + terms=mulmod(terms, get_witness_i(2, local_vars), modulus); + local_vars.constraint_eval = addmod(local_vars.constraint_eval,terms,modulus); + local_vars.gate_eval = addmod(local_vars.gate_eval,mulmod(local_vars.constraint_eval,theta_acc,modulus),modulus); + theta_acc = mulmod(theta_acc, theta, modulus); + local_vars.gate_eval = mulmod(local_vars.gate_eval,get_selector_i(1,local_vars),modulus); + gates_evaluation = addmod(gates_evaluation,local_vars.gate_eval,modulus); + + //Gate2 + local_vars.gate_eval = 0; + local_vars.constraint_eval = 0; + terms=get_witness_i(0, local_vars); + local_vars.constraint_eval = addmod(local_vars.constraint_eval,terms,modulus); + terms=0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000; + terms=mulmod(terms, get_witness_i(1, local_vars), modulus); + local_vars.constraint_eval = addmod(local_vars.constraint_eval,terms,modulus); + terms=0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000; + terms=mulmod(terms, get_witness_i(2, local_vars), modulus); + local_vars.constraint_eval = addmod(local_vars.constraint_eval,terms,modulus); + local_vars.gate_eval = addmod(local_vars.gate_eval,mulmod(local_vars.constraint_eval,theta_acc,modulus),modulus); + theta_acc = mulmod(theta_acc, theta, modulus); + local_vars.gate_eval = mulmod(local_vars.gate_eval,get_selector_i(2,local_vars),modulus); + gates_evaluation = addmod(gates_evaluation,local_vars.gate_eval,modulus); + + //Gate3 + local_vars.gate_eval = 0; + local_vars.constraint_eval = 0; + terms=get_witness_i(1, local_vars); + terms=mulmod(terms, get_witness_i(2, local_vars), modulus); + local_vars.constraint_eval = addmod(local_vars.constraint_eval,terms,modulus); + terms=0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000; + terms=mulmod(terms, get_witness_i(0, local_vars), modulus); + local_vars.constraint_eval = addmod(local_vars.constraint_eval,terms,modulus); + local_vars.gate_eval = addmod(local_vars.gate_eval,mulmod(local_vars.constraint_eval,theta_acc,modulus),modulus); + theta_acc = mulmod(theta_acc, theta, modulus); + local_vars.constraint_eval = 0; + terms=get_witness_i(1, local_vars); + terms=mulmod(terms, get_witness_i(3, local_vars), modulus); + local_vars.constraint_eval = addmod(local_vars.constraint_eval,terms,modulus); + terms=0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000; + local_vars.constraint_eval = addmod(local_vars.constraint_eval,terms,modulus); + local_vars.gate_eval = addmod(local_vars.gate_eval,mulmod(local_vars.constraint_eval,theta_acc,modulus),modulus); + theta_acc = mulmod(theta_acc, theta, modulus); + local_vars.gate_eval = mulmod(local_vars.gate_eval,get_selector_i(3,local_vars),modulus); + gates_evaluation = addmod(gates_evaluation,local_vars.gate_eval,modulus); + + + + } +} diff --git a/contracts/zkllvm/arithmetics_output/linked_libs_list.json b/contracts/zkllvm/arithmetics_output/linked_libs_list.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/contracts/zkllvm/arithmetics_output/linked_libs_list.json @@ -0,0 +1 @@ +[] diff --git a/contracts/zkllvm/arithmetics_output/proof.bin b/contracts/zkllvm/arithmetics_output/proof.bin new file mode 100644 index 0000000..e9b571e --- /dev/null +++ b/contracts/zkllvm/arithmetics_output/proof.bin @@ -0,0 +1 @@ +0x000000000000002044525d6f67527a15da551002cbd182b1e3f05aec01dec7c521671e33494004fd0000000000000020dd46fc9d920db1f0ec54bd66c99a10198bc19e5d70a7b059b51d7e3b5b07164e0000000000000020dd96619669f1d275878e78d8357c8525ab34bc494b58de4f6849e9794f82c8b10000000000000020adafe33acc5b5384fb4b7f17d2fa28f787ce20ece4ea704d344c925610edbd572f37c9d0168b40eb38fb560b264fe1a64e56ff25bdf801ff81f6468cb889463a3fb2f56298661eea96c0c653189efa60757a5fd40e8e997fe2c2f8f8e6c2e04f000000000000000400000000000000140000000000000001124ad2140b39fa2f8add6258d2978847282b05d7bd758a331a033e8fb2a8037d00000000000000010fa66eb5ea933e8db765ebb1154478ce0dfc19c4efaa02474697fe7ea735d707000000000000000117d37d5fa83278ca1d4e2937096e8b4973da261dd8374da9e135083bb167a638000000000000000104a3bcfedab3edd5fc125092b0d758d251bcdc4cce6c48a792de2fca371e3ce4000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000011b20e05eae0ed87852e87cf299fa23f9c2b3f64a161348622127f756b9f754b5000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000237cfe4f10cad21a2a39d3f6edb5d2e816f7db21200e3da64bbfdb3e3094897f30f63d058e65a0882f5993f916b919ded4877c1aefe3127c01027d461189abade0000000000000007000000000000000133061be68b9543687c603255fbcd301988da894d9b3be11a5d42b14e3a1de604000000000000000120e1f2297cce55244dcc45fdf2749adb26c5ba384ccf4c1c1e14adf80be668ea000000000000000135b2ee8348ddcb668a8a0f7a5e5384a1ad9bc0a96415ddcaf9021c576fd26c6c00000000000000011c5110db23feee2b700534951c404117bcf468596eb94df4c6a30524980a229100000000000000011cbf6f209377a51acb3ce484fde8b550b37239885155a69eb7fa312c3f96df87000000000000000125474a87cef0064ea3c7494a73e299f9e023221f94700577d7e370eb76296c86000000000000000106fc3d31b7fff4605264d7dda67356bc0f41bfc041fd99774f3e22c238d58524000000000000005700000000000000012f37c9d0168b40eb38fb560b264fe1a64e56ff25bdf801ff81f6468cb889463a00000000000000012c16f11070b844981ce8ae37bf8f683f20df30c899f11eaabe47cdf89aae5f1f00000000000000011c72b552339956f8908b6716bdcd093b3d8828f6e5ceae02ebdf73140567db9800000000000000010e3d8a9b01feb2dad2b90371b5012e27ef1b9ada6a6f73d76902dd8a1b0749f600000000000000010733b50709f97e461d9d11388905e6c789436d480ae04a1973e122c5872471cd00000000000000012402892331df775e9411561aad1d81e5ae5122683661727f4365addba3b639010000000000000001340cadaff95d54d8e456ae856193897c23087a10fd4d4a451ea20370328f1d030000000000000001043f646fded2a83c75b1689ae7e1af6c260ffe64cd4e8eeb34754d7cfccb910b0000000000000001153cf62f5a1d492e4c770b0687686d1cbe4ff7f80288ca98064a8370eff9d53700000000000000012a30ceecc2926de77e533720a50a218f95493edc035efbdc86476047afe12a12000000000000000112f40a9fccdc258577a013a33932a7cd839a6f57f4f3fffbd3dd4e9f6f65d25700000000000000011ec4351f004cbb9b562062301dfd47036fbd93bbbf7706cf8a2558302cfd1bb2000000000000000119d5099b017faa08aea1eaf095f26310ea26b0b2aab92fd680605716e0f18a78000000000000000101293007077e522b692996b2edbbef544e3441854303fcf94f87519864b7b456000000000000000105cdf02325779ad90dcff17ea4abaca58705479a4f13f0de8da497f9f79685ae00000000000000011d05b0afbb56063d450fb779375a5f3ba31a66038b63b458c436f7e1d5f09c660000000000000001111c736ea8ae1f32594e955e14c3dc29eaf6cc19a6589384a2b8758f2db30dfc0000000000000001158e41294b669bfbbe88ead667d34cd1748b6384366de87b946d1adee47f45eb00000000000000012bc745ce79010beab8ac9630072080172472589906d8914e4cf4556d767c5d9600000000000000011ae45d085d053b959b5eeef023a280734f67f0090653eb34b53e185c506dd3eb00000000000000010675d129d11a29ec08daaab0b22c8240487a7e350d09a5d057dc17f3922523950000000000000001204d15d11582d19c2c4555737ade8b416a64770941303d11b74c77c1dab9b1e9000000000000000121816d156b8e180cdd5aab416658b846cf69213633573f216223f4ef45a0798b00000000000000012787216b19c6784052c55846ffbb9961c8807416ee1a496fb85966d25c225fb5000000000000000105a3a71780e059419ddab962fea9fee883ae797e8a9c83dbce376f54ccabde860000000000000001375753f956002244ca998c68ec8e3c571dff3b0cf5969a9f0c5a568e214073270000000000000001019df1c1cf5d576ed7129203f94b3f27aaad14bf22a8925121d210009205ffb000000000000000010c0441cd06e1257f4ff4ca07b6378b134642582f3ef9ea38c24eab64da2293ad00000000000000010e3d8a9b01feb2dad2b90371b5012e27ef1b9ada6a6f73d76902dd8a1b0749f600000000000000010733b50709f97e461d9d11388905e6c789436d480ae04a1973e122c5872471cd00000000000000012402892331df775e9411561aad1d81e5ae5122683661727f4365addba3b639010000000000000001340cadaff95d54d8e456ae856193897c23087a10fd4d4a451ea20370328f1d030000000000000001043f646fded2a83c75b1689ae7e1af6c260ffe64cd4e8eeb34754d7cfccb910b0000000000000001153cf62f5a1d492e4c770b0687686d1cbe4ff7f80288ca98064a8370eff9d53700000000000000012a30ceecc2926de77e533720a50a218f95493edc035efbdc86476047afe12a12000000000000000112f40a9fccdc258577a013a33932a7cd839a6f57f4f3fffbd3dd4e9f6f65d25700000000000000011ec4351f004cbb9b562062301dfd47036fbd93bbbf7706cf8a2558302cfd1bb2000000000000000119d5099b017faa08aea1eaf095f26310ea26b0b2aab92fd680605716e0f18a78000000000000000101293007077e522b692996b2edbbef544e3441854303fcf94f87519864b7b456000000000000000105cdf02325779ad90dcff17ea4abaca58705479a4f13f0de8da497f9f79685ae000000000000000133ce384b0558c7b37fc8c94c0ae1834821a95908ed3f46aaaa6ef890dafa6c520000000000000001111c736ea8ae1f32594e955e14c3dc29eaf6cc19a6589384a2b8758f2db30dfc0000000000000001158e41294b669bfbbe88ead667d34cd1748b6384366de87b946d1adee47f45eb00000000000000012bc745ce79010beab8ac9630072080172472589906d8914e4cf4556d767c5d9600000000000000011ae45d085d053b959b5eeef023a280734f67f0090653eb34b53e185c506dd3eb00000000000000010675d129d11a29ec08daaab0b22c8240487a7e350d09a5d057dc17f3922523950000000000000001204d15d11582d19c2c4555737ade8b416a64770941303d11b74c77c1dab9b1e9000000000000000121816d156b8e180cdd5aab416658b846cf69213633573f216223f4ef45a0798b00000000000000012787216b19c6784052c55846ffbb9961c8807416ee1a496fb85966d25c225fb5000000000000000105a3a71780e059419ddab962fea9fee883ae797e8a9c83dbce376f54ccabde86000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000013784be7cfbf929a8695b7ca5169618b2c9eac11f0881971726e75b4b8738a5bc00000000000000013569e850ee5978bee3d0a677b85b4722fa297b03bd218df09cb4dea820958a4b0000000000000001020afe39ccfbd0b24700105d5d8858cb44c89cd5bf4b2fff1416076cb27b374e00000000000000011bd66df920379303e86de370250c14edea6d29ccd689b3ed71351ebd4ab56d58000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000013fb2f56298661eea96c0c653189efa60757a5fd40e8e997fe2c2f8f8e6c2e04f000000000000000119d7f9f533c8e682ccccd1e3de9bf6256f8b927a52b31b61d4c02d21e090567100000000000000040000000000000020ea7dcbe651f45ee89592e8aaefdb745aae8edac80571d8bde31c24203dd5889200000000000000203227c9159560500b425fcf3525fd415ee8c8770f9c46d6ad8a5ec41bf32b549a00000000000000204ce7ee333d7b85041750c1456d5a8ca3244658a567991f5be3ce000d534a166a0000000000000020ab640d2815b932b8aeb93f1c7215b80b319f49912294735f2259c306da9f40c9000000000000000220c52bbc57a6a8cf4ada8050806dcdb0ee99d0496de7f3fdfea2896c5fd9ca251ab3e3194a85185410a5449c9076432117c87c44fecaecc9258d79cd2f4f37d400000000000000020000000000000004000000000000000d000000000000002044525d6f67527a15da551002cbd182b1e3f05aec01dec7c521671e33494004fd0000000000000004000000000000000100000000000000000000000000000020d0f9c2a53c5df2796e4e97c3071c1b4704aa45debe0f381b930d600ab42a9870000000000000000100000000000000010000000000000020767e87619cdc9ff57ee338ff752c1da20909d55a10209e5ceb10de73b8126d38000000000000000100000000000000000000000000000020e745d42bc2b5d140c04a9df0822f51f960414c38bd539da63aeeac665657fb25000000000000000100000000000000000000000000000020901f3f432cfd68b0fa197b80575c1098dc8ed97df61f92a5717ae8a4d96e363b00000000000000140000000000000002000000000000002800000000000000000000000000000000000000000000000000000000000000001555555555555555555555555555555560c232feadc45309330f104ff14822ab0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001900000000000000000000000000000000000000000000000000000000000000001555555555555555555555555555555560c232feadc45309330f104ff14822c40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d0000000000000020dd46fc9d920db1f0ec54bd66c99a10198bc19e5d70a7b059b51d7e3b5b07164e00000000000000040000000000000001000000000000000000000000000000208f215d7af3db9b4655b980facf70469c3f0c5ef518386bb158af5e46acf10cff00000000000000010000000000000001000000000000002065419c4ed4502e67733f2eb26b73ddd80c864c6881487dff64b9656c244afafe0000000000000001000000000000000000000000000000203de99c954d73be2482e77de9c86e160ee65128888cb7f3a8f93fa8ae4468bcd3000000000000000100000000000000000000000000000020b7b3ed6f4eb6d3ba251d52f383dad061fb5e26f81cfdcf4b57868d7f2c38ec300000000000000001000000000000000200000000000000020000000000000000000000000000000000000000000000000000000000000001059c6623c7253d95c2ed0fa4d40d3ab0d93b579fe2aa034e10122976c60adb6f000000000000000d0000000000000020dd96619669f1d275878e78d8357c8525ab34bc494b58de4f6849e9794f82c8b10000000000000004000000000000000100000000000000000000000000000020ef1a8d6ab6110662898653a7b51178b977b442216c3e881c34897fefa4ce73ac00000000000000010000000000000001000000000000002025d427850564a396397b51c55a2ebe1638c5bfc274e60371051b922fa54047dc000000000000000100000000000000000000000000000020992165372c0c7416864ab670faa54730547c49b188f15101d395796d821f2f9d000000000000000100000000000000000000000000000020ce398b36e4de0fcdc2b5c656ae26a06ce463b56851cb2c7f77860070cacf8ca700000000000000070000000000000002000000000000000e3bec5c19a65eda1016099f17010d6b8fb706f36684d3c4605c8c4dab8d2ab33b1e0cfeede8d0769cbac67656947dd44ab14fe638893eb5d0116d652d939ac56d0b85936b143383ef656f0c5ada63caeb24b09e587819a521dd430b33439a1dbd1c80cb10bd25860667463077dc911a4b84ce3ee2f599243396874f4d0221fb5d39df54c8e8e5afd18c6ca32d561ae56664c725138f61ffcf7b103346e9f931241d8c81293f25295677ef164d3f641285ed2bedb84f30aedf01455c717d9ac3222865ecd01faad1aa35ba2ad67df7fe52b1ec773772658bc17ed52b4abe56c3f5374a63dc33eeefbae1fff2fa279a3d0a91e55d10fde4be61518e180ef217aa84024ed00a1ccf446f75f51692da52d81285acf38ff55c3be54bc99e470e5da0db0c87fe4054916c50e6bfba64531e31d870f2d741217874031ecabe548b501d33214bc9e1d61466c5d455c5d46e5305bd0077b840d6f8c7d9a9f45c2d354ba5e11c8f43a7927cd970f37e5412099d9f304b91c1686f03daf4f991b75e3a69b43d0ac96fdde510989ebb1e70a23778f74033dd920a4504d88b41f7785ba1b73adc200ea2cd6830d2a868aff92721ce15ab8e69a126203651c53553f93c459bffb6000000000000000d0000000000000020adafe33acc5b5384fb4b7f17d2fa28f787ce20ece4ea704d344c925610edbd5700000000000000040000000000000001000000000000000000000000000000207019118045aad0beb973315fcc05733cacd9e5ba1235cfc3e7d7c4ed8aedd820000000000000000100000000000000010000000000000020cc997e673607e6cd8be379991be12e42a7fb33c38622ba2ebf23ce0b2c6b5b110000000000000001000000000000000000000000000000207195cd1fe3f793e758dc97b50b9889887079f9684aff08d2983828141ecc21ec000000000000000100000000000000000000000000000020724ecac3a0ef52e77029c17fc8fa16843a2018d0aca0e61c775cce6721e591190000000000000057000000000000000200000000000000ae0cc3380dc616f2e1daf29ad1560833ed3baea3393eceb7bc8fa36376929b78cc333cc7f239e90d1e250d652ea9f7cc12e697f5c2ca7e415f0989cd766d6487353fd01844de72be6946bd0616ae2903a22a69301e3a0996aece30f150dd095bfc002fe7bb218d4196b942f9e951d6fc5df7dd68ddcf43626ccafc3f9c22f6a4053f107958583db80e61b11e7166cd122a4af38ca6fcfc0cfba23ff2e0512ecbe800ef86a7a7c247f19e4ee18e9932edd5d7530c550c50ec1ff6ed3e0caed134193b525eb9b9349847e875983702015ad2eda75b52cbb85c7bc68afaad95e9fb8404ada14646cb67b8178a67c8fdfea52d349f3da93d949c9fd2a2363f6a16047d289bd9a09e06f9678a4bf9130a06c61e1b2a64add565e9fc7c0221afed91e9901764265f61f9069875b406ecf5f939e2071c344e33e70f1f1d2b0f3d126e16710b0b40231622df05b37bdd5f3221de9621002c710f16a69ba08315a8a3d98fcd34f4bfdce9dd20fa4c8422a0cdde216a01466c8afa36527ff8aa1b445c267034373840af6eae5b1c816b52dbfaa958eea500de354b71410a228f6c4b333fcf0108c7bf509151a4e37e94ad240556a7117d45bac6bddbb811769dc4a1ccc031001419436d2967c78e87189e4be54ebca8afe9f31a540260c4481859c4003f0b012be6bc92d698387178e761b41ab14357725ca5e1b54a98575114d728ffc0f500247e5121cf06e5c8a37b177b7a89af4b4d4b26879abeeab9cf4c8fe7013b37041b81aede30f91a375c84e884857650b4d4fb72746e8e0e61c9e0a105fec4c8fd367795a90b227ceb3167756964b06c783dea8eadf320a369da246da90628131209886a56f4dd8314ce988a969b4f9387e45c0a4e162c55b1bf08c343f9d7ecef1055ec4d37ac7097f7054b0ef7721e58ac7a65759a6f4ca2de0160991ec85f562faa13b2c8538f6808fab4f1088de1a775cc33866eddac78bb2bd053e137a0ab11ad9d82165e32f7d31a774ad53a97bb3c1d624ffadf8612bcd9b21099e9dcad2e52627de9a1cd082ce588b52ac56844e62936ac0e6d7308dc537edc661623541864138a6fd6fed71f8454762a24f6a80a4c5293dd10a5421713496601914f60279bec7590290128e07bab89d5db095817fa46682c3c53d98219e786fe6eb0a139f461b42f32fa339d95a64ed2b8d148113703e74806412eda333e1107d68cdf060b9e4bd0cd05cc626a59b12d472eb8110f9514c146b7ecbef9f2dbf829732221c5e884ebfee30213ec3f8a1d9c1667ccf8af9442eb617bde4b72a12730c0571e3a177b14011cfdec13c075e263e998554de967c661979fbae1be4bd8cf3faa28dd8a989bfa6f0a639d3db2940c7006bc4e3bed3bfef534251edb4bc3f3c1b117227567640590f59c62c24d6bf38ff965f85d0ecd4e03e7740e55a13c0c3e500c53b4fb0be42b33f212347ce43e302146b360ae1013deb1ee12b5b3d3c2c87233ac4b04f41bd4cc0dedcb831bc1cfdedb93384df9391a69ab1a7b392c3d378f3da288e73b74d803ba5b06707536f0a66180e36650635979a65d8c8322cdea3a025d7718c48b27fc45a4f98f8ac90f59c0c5b595b8e99fa1f2cfa469dd3215c7342cac8429483812a3c720324a12b33f5e6a0d0f6cbcdaf1db1efadbae05931e0bd3537bd6b7c7ed5c38dfcdb5ed4cc0c3dc8bec9c901e29be0e361151fa6ce304df5e94ce69185d32e3a0fb725d803c4ef7dd5cfa7c624ae2e62296661bdf923b20a16b3196e7a2cd1c5f048da27fc3d34ebb9f0ed096d0b6470e5699e4206f185cd8e8080d79d1fe7224e93bd3812d8ad752d0e46deb766e7eaceffe8b5dda27a32717f7f2862e018ddb16c42c7ed2976f462b24df0da52aae83fd0174a22739d03c8828436119f83ab88e2b2185e393ee05186cd8a0348f4c2fc2f8b8d541062fc377d7bc9ee607c54771d4de7a1c8e5893e39c7458e709e1012a07472ac021112ea8c950e581d9259ac6d7a79d715a8bb589fb073c9867c82b1adb9c2a411eeed15736af1a7e26da65392858628ec7bae3720e45bc83316505d22463d5c02555e94bee947b893dbc05e236461336802d59b9d48a3cc2d48e75ac4a0cd3431aaa16b4116b8476c243fa1dc9b9ecc9a2193f4234c2bc58c49ebb40b5f32cbe3aad8e7ba8e669ae34ac1d6b0f5e60103c558ea914193d96f46dea837240204d0552718457199651cb53e294f0a19fefe5f10a52f533bb84a4bf46698dbfdfb40cc3380dc616f2e1daf29ad1560833ed3baea3393eceb7bc8fa36376929b78cc1888f8047af9c2cbd45bc8e26ec2c16b2610990411fe9b425651dde5ec16db4e3fd01844de72be6946bd0616ae2903a22a69301e3a0996aece30f150dd095bfc197988603d1b84e547603751085a0e57a319c692bf149ff4bd834a767e6553e23f107958583db80e61b11e7166cd122a4af38ca6fcfc0cfba23ff2e0512ecbe80175af5850c48b5312811458ce6b91ca32d6cfe591513b4e62e362a21d6f8f153b525eb9b9349847e875983702015ad2eda75b52cbb85c7bc68afaad95e9fb8404ada14646cb67b8178a67c8fdfea52d349f3da93d949c9fd2a2363f6a16047d289bd9a09e06f9678a4bf9130a06c61e1b2a64add565e9fc7c0221afed91e9901764265f61f9069875b406ecf5f939e2071c344e33e70f1f1d2b0f3d126e16710b0b40231622df05b37bdd5f3221de9621002c710f16a69ba08315a8a3d98fcd34f4bfdce9dd20fa4c8422a0cdde216a01466c8afa36527ff8aa1b445c267034373840af6eae5b1c816b52dbfaa958eea500de354b71410a228f6c4b333fcf0108c7bf509151a4e37e94ad240556a7117d45bac6bddbb811769dc4a1ccc031001419436d2967c78e87189e4be54ebca8afe9f31a540260c4481859c4003f0b012be6bc92d698387178e761b41ab14357725ca5e1b54a98575114d728ffc0f500247e5121cf06e5c8a37b177b7a89af4b4d4b26879abeeab9cf4c8fe7013b37041b81aede30f91a375c84e884857650b4d4fb72746e8e0e61c9e0a105fec4c8fd367795a90b227ceb3167756964b06c783dea8eadf320a369da246da90628131209886a56f4dd8314ce988a969b4f9387e45c0a4e162c55b1bf08c343f9d7ecef1055ec4d37ac7097f7054b0ef7721e58ac7a65759a6f4ca2de0160991ec85f562faa13b2c8538f6808fab4f1088de1a775cc33866eddac78bb2bd053e137a0ab11ad9d82165e32f7d31a774ad53a97bb3c1d624ffadf8612bcd9b21099e9dcad2e52627de9a1cd082ce588b52ac56844e62936ac0e6d7308dc537edc661623541864138a6fd6fed71f8454762a24f6a80a4c5293dd10a5421713496601914f60279bec7590290128e07bab89d5db095817fa46682c3c53d98219e786fe6eb0a139f461b42f32fa339d95a64ed2b8d148113703e74806412eda333e1107d68cdf060b9e4bd0cd05cc626a59b12d472eb8110f9514c146b7ecbef9f2dbf829732221c5e884ebfee30213ec3f8a1d9c1667ccf8af9442eb617bde4b72a12730c0571e3a177b14011cfdec13c075e263e998554de967c661979fbae1be4bd8cf3faa28dd8a989bfa6f0a639d3db2940c7006bc4e3bed3bfef534251edb4bc3f3c1b13342a76a7d7f770be176ab4344ba715c76014f88756f842569799564e5f261ec0c53b4fb0be42b33f212347ce43e302146b360ae1013deb1ee12b5b3d3c2c87233ac4b04f41bd4cc0dedcb831bc1cfdedb93384df9391a69ab1a7b392c3d378f3da288e73b74d803ba5b06707536f0a66180e36650635979a65d8c8322cdea3a025d7718c48b27fc45a4f98f8ac90f59c0c5b595b8e99fa1f2cfa469dd3215c7342cac8429483812a3c720324a12b33f5e6a0d0f6cbcdaf1db1efadbae05931e0bd3537bd6b7c7ed5c38dfcdb5ed4cc0c3dc8bec9c901e29be0e361151fa6ce304df5e94ce69185d32e3a0fb725d803c4ef7dd5cfa7c624ae2e62296661bdf923b20a16b3196e7a2cd1c5f048da27fc3d34ebb9f0ed096d0b6470e5699e4206f185cd8e8080d79d1fe7224e93bd3812d8ad752d0e46deb766e7eaceffe8b5dda27a32717f7f2862e018ddb16c42c7ed2976f462b24df0da52aae83fd0174a22739d03c8828436119f83ab88e2b2185e393ee05186cd8a0348f4c2fc2f8b8d541062fc377d7bc9ee607c54771d4de7a1c8e5893e39c7458e709e1012a07472ac021112ea8c950e581d9259ac6d7a79d715a8bb589fb073c9867c82b1adb9c2a411eeed15736af1a7e26da65392858628ec7bae3720e45bc83316505d22463d5c02555e94bee947b893dbc05e236461336802d59b9d48a3cc2d48e75ac4a0cd3431aaa16b4116b8476c243fa1dc9b9ecc9a2193f4234c2bc58c49ebb40b5f32cbe3aad8e7ba8e669ae34ac1d6b0f5e60103c558ea914193d96f46dea837240204d0552718457199651cb53e294f0a19fefe5f10a52f533bb84a4bf46698dbfdfb4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000d0000000000000020ea7dcbe651f45ee89592e8aaefdb745aae8edac80571d8bde31c24203dd588920000000000000004000000000000000100000000000000000000000000000020a2c7e21875c748602c393c1d90d24e07e97ca9f7f5a836724578ec7501f39aaf0000000000000001000000000000000100000000000000201202d7e953ecbcb8b996654d78412d3cc6fac14833ace1d39e9ad7d027f5b3b600000000000000010000000000000000000000000000002087212c714134931edcc78353f289dc49447c71e6e6bc0fae4abedc70bf267f340000000000000001000000000000000000000000000000202648c84e8019af7bdc77b690212e900e89ddcdb1b7dde1efa208760bffbfde9100000000000000022ee71f4ca7c075eb20583622d8fc860deb12e4aa98822de4b423233e80742fe80e22f1fde280843e0cc5fd5b9b70873cd2e884b24f4fb41b4fde4d7641c23fd0000000000000000500000000000000203227c9159560500b425fcf3525fd415ee8c8770f9c46d6ad8a5ec41bf32b549a0000000000000003000000000000000100000000000000000000000000000020e71d6247b36d4b20144ccf0c4becd7acb90fdb4090427aef29a0bd78d11a4625000000000000000100000000000000010000000000000020fec36469be91298a2a13af8afa821ebcff2f0d764e52d06d5208f8d0e0a744f60000000000000001000000000000000000000000000000206d1947c2e8be519135bdefbe40b9e94c0ee84a1e240660e00b8e653a01238547000000000000000237eeede19c10b0b4e5987732f231dc7d4ee8ed50b8b75e4058e3bcc8b27d62e0074977c1e34787dd8d1b780de11858cc2cee024df455ffcaea738368bbc09676000000000000000100000000000000204ce7ee333d7b85041750c1456d5a8ca3244658a567991f5be3ce000d534a166a0000000000000002000000000000000100000000000000000000000000000020b596c5269dffdd8f3d1d4b4825fa8aae8827de84c8332ad30e73a2c128a2394c000000000000000100000000000000010000000000000020293792a68f41b10a09f8ace0275492f2f9f2ec972da88ee31b55868433a18191000000000000000237d7ecc283ae66361b9eabcdc3501c7018af1d863ce78926b28354321c08ba2b12fcdf7e8d0b9e213a90e7386bb3c266337006f739718f911dec2c3054f6bb4400000000000000010000000000000020ab640d2815b932b8aeb93f1c7215b80b319f49912294735f2259c306da9f40c9000000000000000100000000000000010000000000000000000000000000002096e272cfd0ea414a0ba2c9cdcb494cb2849b76be45dde94b903e9c1b37cc205a0000000000000002061148a30d21907b3a353bb3eff78a8fd6d154046f1d0734d9150f9f308a92513b790ed5a22bc1235b7fc4ed10e410d206624c8e6cb2e0c7243003398f2901f900000000000000040000000000000005000000000000002044525d6f67527a15da551002cbd182b1e3f05aec01dec7c521671e33494004fd0000000000000004000000000000000100000000000000000000000000000020c4300f28ace96089b2f530f8714805f6c68aa34ca1e19e725e198dae2db2aa8a0000000000000001000000000000000100000000000000205254fdcff4051c304b03a02e926d47a99c55b13dfb9f9373e2d16c8de4b2d5fd0000000000000001000000000000000000000000000000203dc17b10f7a35f37312627224c2f879d5605e59c432d3fa7ae03935f02d34cd10000000000000001000000000000000100000000000000203a7b375c6bddbbeca3f130c95ee6443979a4bad4810339968eb40d6584adbc6500000000000000140000000000000002000000000000002800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ff900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050000000000000020dd46fc9d920db1f0ec54bd66c99a10198bc19e5d70a7b059b51d7e3b5b07164e0000000000000004000000000000000100000000000000000000000000000020cdab1554af8bd11c915c975a209cc3aaa8c613be110202d39885add89dbc2fd40000000000000001000000000000000100000000000000200edae68f692f6717da4031d276eef45bbed478768c882586f2ab25f44102e0eb000000000000000100000000000000000000000000000020a2d8ba8d2e6498948c2ccedf2c507af75437f505b114338a4dea7318d62b0dfd000000000000000100000000000000010000000000000020195bfc6cabad6321c343a765e68db83f0f8e190156adeea7767a7594592870d1000000000000000100000000000000020000000000000002000000000000000000000000000000000000000000000000000000000000000132ffa6e5f29dfdbb3aee7507f5c10bd18a51fa53ff9411453166f60e1edf216000000000000000050000000000000020dd96619669f1d275878e78d8357c8525ab34bc494b58de4f6849e9794f82c8b100000000000000040000000000000001000000000000000000000000000000208cc9b14219af8443373216e00c7e0689c65aaa82ce08c9561a9e2ef6f47ad58800000000000000010000000000000001000000000000002073c7c5294754a8613baa2d8da2a341795818a1004d046023f6c22142e379d3bb000000000000000100000000000000000000000000000020d428253c5de1c1659889a86ddb23cf22779c5e3fe8b1db83191d09cce9b132c500000000000000010000000000000001000000000000002087fd8cf6dca9ed64e70a341d4605dcb830b2f70856c6d5e0bcdc60afc04219f500000000000000070000000000000002000000000000000e10f36bd4a8ce00db3ce13bc1afc4f45a45626d74c76d8c0e6dee7b0315a694d92f60131bb9a5955f06584d7ff598acf14ed6a00f549e63e12aeb86896bd2c9c03fa6a954fa07b5b928ea1967e5cc038bfdc949126b1deadf0447ae4756a761a32c60c56515a5737b44ba1ba910d3dc92b6678ad8b7a524ded946f105bf5e28c53765404a4d6d13d7cf195acd6171562e8eb44a4898decb97e72b76fa0600d4972874933b9181cfd1b08cf3d0cd63daa5b4eb82949015aab0bf49c27a4a420e4b366a7dbda18ee460640d9b0d182cf102e7726c91e27bd868da26a63a133131053a268a53ac1e4516d695ba3184c73e98f7c4f8aaeef2edf9f7e08c2eeb38ad92395f367f3144d26b3969c4d09539a91482203ed3b8788f5a64fb356e22dcf2c839f5d21d507deb2d6bf342a450f52f9609dbf643e65b20c0fcbbbf3a8acf9be2296cf46f8d38f5212fc09ef907fdd212e5eed2c0bab8724d5911ab9fd533e2f4155d050c887f9505b28e2ca9e9f599168b99d00d28d92dfe09b571b5e288076f3734a025ad7b06975a836cfe9bbf696709f8f8e3639c9fad8c3403ac39616bec39d2fa7ce14b46ff5b6efaae119ec267ea6ea03603ece5881d3b3d484dfd34d100000000000000050000000000000020adafe33acc5b5384fb4b7f17d2fa28f787ce20ece4ea704d344c925610edbd57000000000000000400000000000000010000000000000000000000000000002087558286666aa19f50954bab8da72d453f42c3b17c03ca4ace01085a7642bbd600000000000000010000000000000001000000000000002068b5d23ff0e6a61bb02efd4dad4e77f094cd06df5faa3a80cd54d1cede70caab00000000000000010000000000000000000000000000002099e630997f3d0745c3b6b0008bc75d4a2640ba01d374bd91c08140c873859b40000000000000000100000000000000010000000000000020c362ef5474506f1d27486125b4492169f98c703abab345bb2952e96543943f900000000000000057000000000000000200000000000000ae3188e3736946f3bf517c077eb5300c2b271757a63931e99ac339705544006eeb0e771c8c96b90c40ae83f8814acff3d4fb2f4155d01b0f80d5f3c097bbff911637ac71410e62c2bc976c257989f03cd75ca0eb4b0212a4b304979ee354022a9408538ebef19d3d436893da86760fc328c5a5adb1073a546894959209abfdd56d165e364547edcdaef51cbb5fb1b13034460a3486e5295310b24156bca40ad4e029a1c9bab81232510ae344a04e4ecfcbdc3c64752423a60ae6ebda305bf52b212fd70f5a67a5046ac98fa8de7875f1053bec6da67081a637e21980c23436285f1028f0a5985afb9536705721878a0efae65a2b5598cb52e3b713b02acbc9d7a22f334cc406391615efce4c585a4db519c4ca594c16a153c49ef7f104050ec9d810ccb33bf9c6e9ea1031b3a7a5b24ae65d7c3faff2aba556fa353fe8faf136292c007fd41f1d6e6daf077db9c3848980711ff388553fb7844f50224d1949f13513ff802be0e2919250f882463c7b767fb126a573b40d419749dd0e9fe6b60ecc1c027f249b9328246b2574a0d196af81cecbf6b58e57aa42c10918ba7e71b60623fd80db646cd7db94da8b5f2e69507e537aa2467af54ed8d8241832818e49fb0c0c7bb709dfc8b617bb472417f16d88c56e9f93b51c611692d319ca78388e1c33f38448f6203749e844b8dbe80e92775cd7f96854309805065a172287c771e53c3e6a93315eeb8e76a863b477b723abdb291de2898de570de1f80f4591ac68c03c1956ccea1147189579c4b8848dc54471d7b197fbf13aabb0daff8a6e539752d3814dff6da99c85149f2865693b25abeb3317c8a9196c5f1e8c111bd85e0b812c7eb2009256637aeb60d79a96c4da56393677f7ebb6255a7446fdb427a1f492218685fd24500e99671bc9fb0e27bc552ac2c7a98f1068aee043291b39d63951de797a02dbaff16698e43604f1d843acf9a6c81705bf290ab28fe5b4c629c6c2a7a09df1b59048ff038af1e746c6ada58cfac6cea1b2e7f73ba9afe8212f1e71585f620e4a6fb700fc750e18b939525c976ec8f1f31ca9c257295ee7ded0e1a1462315b88bd16cfb11b6b98461e1643553a932c76a0fd2a771d74318a5eb9802b9dcea47742e9304ee49467b9e1e9bccd0c05cf92abfbf1220fbcbb75a1468125eaf6c9abb1720e758919f95e966f5087de46e247d7f8b8ba66140ab3d99f7f1a150936544e8df18a76e606a16990af9a685219c1750062dec71ce24c2660823d96d1f05a773a484bad81ded8f02c9262ca3073549de96471a4025b83401d7902692e0fa588c5b7b4527e21270fd36dbf7c6888b4af0fb727892e917cbfe28833f219b1c45423697a63895a3cb0dedb64d88e5081e1aa87d37f4815904093590c0de64e3babdc96859c76a5c34f2124bd6e0aab876b4e93c5ade8d76fbf6ca803ba8078d5a4b10f63f1aec32f745a486f2063a264347038bcc7a4b7d142e0b93c457f872a5b4ef09c0e513cd08ba5b7b3263559a51888e2dc658c352ebd1f4812a4825c2c37754cf3b869cfed45c36a2ba1f22bf506311bafe63797164e639d2d5b7da3d3c88ab30c47963012ba3c95f6a4a6d01446c7ffe946f955e9b19c641d368bccdd154a80c29a110fa25cd112b7e321dfbfd1fc6ed651e5066f87f21022c9743322eab57f3d65eef05da32eed6a63771c497afcacc2db4be690780df11210bb00516a7483cd02554e2bd0155d52e27766ac7ffbf2fd3f17462da7ba4e2def44ffae958b7c32fdaab1d42feaa2cf6421955cccfd289bee19a6d25845b31a53a70197144693010baa86db106ad27c25bc055532f2a3590e4371e446a38525ac58fe68ebb96cfef4557924ef952da620dcf6b41a0678401eed7b1bb95c7c03a24307f36560df053a54a24752161c282f7a229764caf98aecef5f756131973c5dbcf80c9a9f20fac5ab5db8ade9e3fa171ed971e82e220e40418d8a9ece6a122b4f27c0fae45b1a23a72b649a6e8cc8ed62acf4f7f6dfb6a0acdd4ae5f7f32dd4b0d83f051ba4e5dc58d49b6591735959364f1455023be28c840fb51a080e1ad88bc6c4e675c782b243d8f70428bfca5c5464bf8ad942f7f62f65767dd7be252774393b198a387d4dbc2708fbd74057ea449749c21fd8a137018789822843063abae1d8804ce58d7b533cd314cbbeaf4073ffab1c4c17a5748b21507536b439c5451e277fb31a7284acc32ceb3441730624fc5e30ad03f3b8a5cbaf8ac94d3188e3736946f3bf517c077eb5300c2b271757a63931e99ac339705544006eeb0b0630a8c94aacea7454e537f480bcbee40965b12dded7e31e5c107c0272b21b37ac71410e62c2bc976c257989f03cd75ca0eb4b0212a4b304979ee354022a940e771c8c96b90c40ae83f8814acff3d4fb2f4155d01b0f80d5f3c097bbff9116165e364547edcdaef51cbb5fb1b13034460a3486e5295310b24156bca40ad4e004c91781ddd6cdc625e01428223d2df8327d16ad2328761aa9f1e6c1c384b8002fd70f5a67a5046ac98fa8de7875f1053bec6da67081a637e21980c23436285f1028f0a5985afb9536705721878a0efae65a2b5598cb52e3b713b02acbc9d7a22f334cc406391615efce4c585a4db519c4ca594c16a153c49ef7f104050ec9d810ccb33bf9c6e9ea1031b3a7a5b24ae65d7c3faff2aba556fa353fe8faf136292c007fd41f1d6e6daf077db9c3848980711ff388553fb7844f50224d1949f13513ff802be0e2919250f882463c7b767fb126a573b40d419749dd0e9fe6b60ecc1c027f249b9328246b2574a0d196af81cecbf6b58e57aa42c10918ba7e71b60623fd80db646cd7db94da8b5f2e69507e537aa2467af54ed8d8241832818e49fb0c0c7bb709dfc8b617bb472417f16d88c56e9f93b51c611692d319ca78388e1c33f38448f6203749e844b8dbe80e92775cd7f96854309805065a172287c771e53c3e6a93315eeb8e76a863b477b723abdb291de2898de570de1f80f4591ac68c03c1956ccea1147189579c4b8848dc54471d7b197fbf13aabb0daff8a6e539752d3814dff6da99c85149f2865693b25abeb3317c8a9196c5f1e8c111bd85e0b812c7eb2009256637aeb60d79a96c4da56393677f7ebb6255a7446fdb427a1f492218685fd24500e99671bc9fb0e27bc552ac2c7a98f1068aee043291b39d63951de797a02dbaff16698e43604f1d843acf9a6c81705bf290ab28fe5b4c629c6c2a7a09df1b59048ff038af1e746c6ada58cfac6cea1b2e7f73ba9afe8212f1e71585f620e4a6fb700fc750e18b939525c976ec8f1f31ca9c257295ee7ded0e1a1462315b88bd16cfb11b6b98461e1643553a932c76a0fd2a771d74318a5eb9802b9dcea47742e9304ee49467b9e1e9bccd0c05cf92abfbf1220fbcbb75a1468125eaf6c9abb1720e758919f95e966f5087de46e247d7f8b8ba66140ab3d99f7f1a150936544e8df18a76e606a16990af9a685219c1750062dec71ce24c2660823d96d1f05a773a484bad81ded8f02c9262ca3073549de96471a4025b83401d7902692e0fa588c5b7b4527e21270fd36dbf7c6888b4af0fb727892e917cbfe28833f219b1c45423697a63895a3cb0dedb64d88e5081e1aa87d37f4815904093590c0de64e3babdc96859c76a5c34f2124bd6e0aab876b4e93c5ade8d76fbf6ca803ba8078d5a4b10f63f1aec32f745a486f2063a264347038bcc7a4b7d142e0b93c457f872a5b4ef09c0e513cd08ba5b7b3263559a51888e2dc658c352ebd1f4812a4825c2c37754cf3b869cfed45c36a2ba1f22bf506311bafe63797164e639d2d5b7da3d3c88ab30c47963012ba3c95f6a4a6d01446c7ffe946f955e9b19c641d368bccdd154a80c29a110fa25cd112b7e321dfbfd1fc6ed651e5066f87f21022c9743322eab57f3d65eef05da32eed6a63771c497afcacc2db4be690780df11210bb00516a7483cd02554e2bd0155d52e27766ac7ffbf2fd3f17462da7ba4e2def44ffae958b7c32fdaab1d42feaa2cf6421955cccfd289bee19a6d25845b31a53a70197144693010baa86db106ad27c25bc055532f2a3590e4371e446a38525ac58fe68ebb96cfef4557924ef952da620dcf6b41a0678401eed7b1bb95c7c03a24307f36560df053a54a24752161c282f7a229764caf98aecef5f756131973c5dbcf80c9a9f20fac5ab5db8ade9e3fa171ed971e82e220e40418d8a9ece6a122b4f27c0fae45b1a23a72b649a6e8cc8ed62acf4f7f6dfb6a0acdd4ae5f7f32dd4b0d83f051ba4e5dc58d49b6591735959364f1455023be28c840fb51a080e1ad88bc6c4e675c782b243d8f70428bfca5c5464bf8ad942f7f62f65767dd7be252774393b198a387d4dbc2708fbd74057ea449749c21fd8a137018789822843063abae1d8804ce58d7b533cd314cbbeaf4073ffab1c4c17a5748b21507536b439c5451e277fb31a7284acc32ceb3441730624fc5e30ad03f3b8a5cbaf8ac94d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000050000000000000020ea7dcbe651f45ee89592e8aaefdb745aae8edac80571d8bde31c24203dd5889200000000000000040000000000000001000000000000000000000000000000205ac462a7437dd7074b38887ab0913e06759fed0e26a71a410251d246ce66e4dd0000000000000001000000000000000100000000000000208f90fe804229623ad3135de7b5e9a2e4882edc01c92a45edb9e4b722b25cca80000000000000000100000000000000000000000000000020df2e1e7493cc116f596ba1c7512473cea062e7a689724c4a60e13e584ffd144a000000000000000100000000000000010000000000000020d254f5e6937ee806646688fef5ca52201c5c6bc8ec06e2591f7f726977efd9f300000000000000020e22f1fde280843e0cc5fd5b9b70873cd2e884b24f4fb41b4fde4d7641c23fd02ee71f4ca7c075eb20583622d8fc860deb12e4aa98822de4b423233e80742fe8000000000000000500000000000000203227c9159560500b425fcf3525fd415ee8c8770f9c46d6ad8a5ec41bf32b549a0000000000000003000000000000000100000000000000000000000000000020e71d6247b36d4b20144ccf0c4becd7acb90fdb4090427aef29a0bd78d11a4625000000000000000100000000000000010000000000000020fec36469be91298a2a13af8afa821ebcff2f0d764e52d06d5208f8d0e0a744f60000000000000001000000000000000000000000000000206d1947c2e8be519135bdefbe40b9e94c0ee84a1e240660e00b8e653a01238547000000000000000237eeede19c10b0b4e5987732f231dc7d4ee8ed50b8b75e4058e3bcc8b27d62e0074977c1e34787dd8d1b780de11858cc2cee024df455ffcaea738368bbc09676000000000000000100000000000000204ce7ee333d7b85041750c1456d5a8ca3244658a567991f5be3ce000d534a166a0000000000000002000000000000000100000000000000000000000000000020b596c5269dffdd8f3d1d4b4825fa8aae8827de84c8332ad30e73a2c128a2394c000000000000000100000000000000010000000000000020293792a68f41b10a09f8ace0275492f2f9f2ec972da88ee31b55868433a18191000000000000000237d7ecc283ae66361b9eabcdc3501c7018af1d863ce78926b28354321c08ba2b12fcdf7e8d0b9e213a90e7386bb3c266337006f739718f911dec2c3054f6bb4400000000000000010000000000000020ab640d2815b932b8aeb93f1c7215b80b319f49912294735f2259c306da9f40c9000000000000000100000000000000010000000000000000000000000000002096e272cfd0ea414a0ba2c9cdcb494cb2849b76be45dde94b903e9c1b37cc205a0000000000000002061148a30d21907b3a353bb3eff78a8fd6d154046f1d0734d9150f9f308a92513b790ed5a22bc1235b7fc4ed10e410d206624c8e6cb2e0c7243003398f2901f9 \ No newline at end of file diff --git a/contracts/zkllvm/arithmetics_output/public_input.json b/contracts/zkllvm/arithmetics_output/public_input.json new file mode 100644 index 0000000..f862770 --- /dev/null +++ b/contracts/zkllvm/arithmetics_output/public_input.json @@ -0,0 +1,6 @@ +[ +[, + {"field": 5},, + {"field": 11}, +] +] \ No newline at end of file diff --git a/contracts/zkllvm/merkle_tree_poseidon/circuit_params.json b/contracts/zkllvm/merkle_tree_poseidon/circuit_params.json new file mode 100644 index 0000000..df81ede --- /dev/null +++ b/contracts/zkllvm/merkle_tree_poseidon/circuit_params.json @@ -0,0 +1,23 @@ +{ "_test_name":"Test name", + "arithmetization_params":[15,5,5,30], + "columns_rotations":[[0,1],[0,1],[0,1],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0]], + "modulus":28948022309329048855892746252171976963363056481941560715954676764349967630337, + "r":8, + "m":2, + "lambda":2, + "batches_num":4, + "step_list":[1,1,1,1,1,1,1,1], + "D_omegas":[ + 22954361264956099995527581168615143754787441159030650146191365293282410739685, + 23692685744005816481424929253249866475360293751445976741406164118468705843520, + 7356716530956153652314774863381845254278968224778478050456563329565810467774, + 17166126583027276163107155648953851600645935739886150467584901586847365754678, + 3612152772817685532768635636100598085437510685224817206515049967552954106764, + 14450201850503471296781915119640920297985789873634237091629829669980153907901, + 199455130043951077247265858823823987229570523056509026484192158816218200659, + 24760239192664116622385963963284001971067308018068707868888628426778644166363 + ], + "rows_amount":512, + "max_degree":511, + "omega":22954361264956099995527581168615143754787441159030650146191365293282410739685 +} diff --git a/contracts/zkllvm/merkle_tree_poseidon/gate0.sol b/contracts/zkllvm/merkle_tree_poseidon/gate0.sol new file mode 100644 index 0000000..3e26213 --- /dev/null +++ b/contracts/zkllvm/merkle_tree_poseidon/gate0.sol @@ -0,0 +1,1025 @@ + +// SPDX-License-Identifier: Apache-2.0. +//---------------------------------------------------------------------------// +// Copyright (c) 2022 Mikhail Komarov +// Copyright (c) 2022 Ilias Khairullin +// Copyright (c) 2022 Aleksei Moskvin +// Copyright (c) 2022-2023 Elena Tatuzova +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//---------------------------------------------------------------------------// +pragma solidity >=0.8.4; + +import "../../../contracts/types.sol"; +import "./gate_argument.sol"; + +library merkle_tree_poseidon_gate0{ + uint256 constant MODULUS_OFFSET = 0x0; + uint256 constant THETA_OFFSET = 0x20; + + uint256 constant CONSTRAINT_EVAL_OFFSET = 0x00; + uint256 constant GATE_EVAL_OFFSET = 0x20; + uint256 constant GATES_EVALUATIONS_OFFSET = 0x40; + uint256 constant THETA_ACC_OFFSET = 0x60; + + uint256 constant WITNESS_EVALUATIONS_OFFSET = 0x80; + uint256 constant SELECTOR_EVALUATIONS_OFFSET = 0xa0; + + + function evaluate_gate_be( + types.gate_argument_params memory gate_params, + merkle_tree_poseidon_gate_argument_split_gen.local_vars_type memory local_vars + ) external pure returns (uint256 gates_evaluation, uint256 theta_acc) { + gates_evaluation = local_vars.gates_evaluation; + theta_acc = local_vars.theta_acc; + uint256 terms; + assembly { + let modulus := mload(gate_params) + let theta := mload(add(gate_params, THETA_OFFSET)) + + + function get_witness_i_by_rotation_idx(idx, rot_idx, ptr) -> result { + result := mload( + add( + add(mload(add(add(mload(add(ptr, WITNESS_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))), 0x20), + mul(0x20, rot_idx) + ) + ) + } + + function get_selector_i(idx, ptr) -> result { + result := mload(add(add(mload(add(ptr, SELECTOR_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))) + } + + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(0,0, local_vars),get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(0,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(0,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=get_witness_i_by_rotation_idx(1,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(1,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(3,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x113aa632e5e0d0977603751a0f88a80e1f9334b972d5301c3329337f6c9a64ba + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(4,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1aac4f73877aae401f9b26e3e814e1249be470c9dfd78209e67a28570f55c454 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(5,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1a58f904f0ca4d9f490d729e1f7d2c9593307d1a1473b7b827857a8dd40501b3 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(6,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x83fd7e02599b33dbb72f182288555fbad24487a8eb89e5caea0363dc11c6461 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(7,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2bfb77cded6e66747a7d153114c05635e8c5ad9764f9a1df3e8307dcbfa6c94b + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(8,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x58c01ca4e4229947f6552a154b84a37e74551fe8986c63be49057d21ee96c89 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(9,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1e483d4ca0288ef4f9dba8ee0d93f9ca4e647b172e3c1be125c33b4db972841b + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(10,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x27fc5f972da010d109ad375b7b855e75f875109d8d557944f5dfca9992f6352a + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(11,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x16e219e3a19d97dec88d3081fc37f3d19f07e17fb08893d2c7d489dd44268db6 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(12,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1cffbc5f23d20549c9f8341e463b7d02490e9b0c1c8668c0f42c0263454152ee + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(13,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1e750885fa3afd2c05cebb1030b85f0d821d746348408af830d6da7818789b0d + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(14,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1dc1d26b3e882d81f8e2aa8d62ec564e0bb13c8b06805e85aeed2b5e04af9eea + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(0,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x15e7da83ea52649017483a52ded6c6b1921a5cc40665c0294c4a3b6751a095c9 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(1,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x35908458a0de9bfc2d1b6bfb962e66b8d7e0ee9d113815b7986f51fc9ea72309 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(2,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x29641be39dd86a91010a4b32219a2ff2c4419a85a7d43b5467cbd47ea46c1ce3 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(2,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(3,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x11d70af565aa2d16e88bf7cf8d8cbabbe0c86ff1ec4e3d1a19119c1c8d70199e + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(4,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x30212072579ab5dd7cefbf3038bbcdb9d72f5a158323fb8b4fa8b0336fd0d7e8 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(5,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3b95c12679c2d28c622743616f58b902812d279938ac3a57be0e018cbd30fb1f + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(6,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1e61f74b9f3cfa4bd798f453547953e18dee91a490799ce57f7eb54b064d128b + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(7,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x744c95ed14313b2b178d714bc1c0ed5b412e6fc6806c5a2979fe2dabdb19d37 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(8,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x21655c01da2ee933042957033251f55666304ef85dce6404943e967ba041211b + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(9,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3cf0cc128f25b3d4047bb00e58aa747ea527d5fb2ec657b249ff7c9cb82a0e76 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(10,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3d7d4fbec8cafb6a54be830d3b8c7640ba2a5f05471f5ae48db239904341b450 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(11,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x364ead7215d14a42696fa47700fa020c415477fdebb927664fd984540137da11 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(12,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xff7c2444a154c6cee3857402a1aaa9827c04dc7a096fffb8ada9412fc261090 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(13,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3e815318c309839eeddc6340ae213f190d584aa177712ffafb6bb52e5a432f6d + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(14,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x850e2170ab8a45e9a46f072a9797c2ad4253b028aba718765bc61abe7bd7f6a + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(0,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x29008a6d7c95bacbf1390d4f0edd8c931e55dc43c939fff8f47289ae5f1990b0 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(1,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x25a67a2b4ca62fc219f4d12544e7ac0babb539104868e997f65b60e4b103c028 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(2,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1aa562b41464a15e754687d4e544d9805c8f25427e96a31e4be69a541e1e068c + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(3,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + + } + } +} diff --git a/contracts/zkllvm/merkle_tree_poseidon/gate10.sol b/contracts/zkllvm/merkle_tree_poseidon/gate10.sol new file mode 100644 index 0000000..c550503 --- /dev/null +++ b/contracts/zkllvm/merkle_tree_poseidon/gate10.sol @@ -0,0 +1,1003 @@ + +// SPDX-License-Identifier: Apache-2.0. +//---------------------------------------------------------------------------// +// Copyright (c) 2022 Mikhail Komarov +// Copyright (c) 2022 Ilias Khairullin +// Copyright (c) 2022 Aleksei Moskvin +// Copyright (c) 2022-2023 Elena Tatuzova +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//---------------------------------------------------------------------------// +pragma solidity >=0.8.4; + +import "../../../contracts/types.sol"; +import "./gate_argument.sol"; + +library merkle_tree_poseidon_gate10{ + uint256 constant MODULUS_OFFSET = 0x0; + uint256 constant THETA_OFFSET = 0x20; + + uint256 constant CONSTRAINT_EVAL_OFFSET = 0x00; + uint256 constant GATE_EVAL_OFFSET = 0x20; + uint256 constant GATES_EVALUATIONS_OFFSET = 0x40; + uint256 constant THETA_ACC_OFFSET = 0x60; + + uint256 constant WITNESS_EVALUATIONS_OFFSET = 0x80; + uint256 constant SELECTOR_EVALUATIONS_OFFSET = 0xa0; + + + function evaluate_gate_be( + types.gate_argument_params memory gate_params, + merkle_tree_poseidon_gate_argument_split_gen.local_vars_type memory local_vars + ) external pure returns (uint256 gates_evaluation, uint256 theta_acc) { + gates_evaluation = local_vars.gates_evaluation; + theta_acc = local_vars.theta_acc; + uint256 terms; + assembly { + let modulus := mload(gate_params) + let theta := mload(add(gate_params, THETA_OFFSET)) + + + function get_witness_i_by_rotation_idx(idx, rot_idx, ptr) -> result { + result := mload( + add( + add(mload(add(add(mload(add(ptr, WITNESS_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))), 0x20), + mul(0x20, rot_idx) + ) + ) + } + + function get_selector_i(idx, ptr) -> result { + result := mload(add(add(mload(add(ptr, SELECTOR_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))) + } + + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(3,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1448b44e7ac8dccb5b10a092e71d131ae1bfb2d104b49b4404761f71f416de82 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(4,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x99daf016d73ba272a55ca0f5ebd8ab71a475ca2853cdf804092081f7ae4ddfd + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(5,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x279707ee7b7d394b5a59e57e375535ed98f3815fe855bed796ff9776423cb510 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(6,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3486fe398f1e28a28d914772fff6af4c58e2a8046282d4824d51293ed0874b2e + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(7,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3cd3b427548f1e0da508850a822cbf373b7df7fa2987103e95fbeb86246f4791 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(8,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x231c924ce01915c326cf724655bc5750c604f00b62fc5d1d983c4938793f5477 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(9,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x19a691561e6ea1ac25cb86162ec3c36e1d40b6b76b1aa10a99c0889701b48393 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(10,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xf0d695d967975803570a4e1d963fee9f1f8a5e4dff75ef48abbfbe32c592a25 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(11,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3da7769e1008768278149538dcaf1060cfe292b43d7ac7e50792979f02e6862c + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(12,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x295b61968de17f96f2be1f9dd61643d2674cf65014946592be08ab93abf629d6 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(13,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x28535fd3fae03527f8c30298def32bde81510710d02b4cdfbf251af93a25842 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(14,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x16642b758bf4886ff8ad97ced547f8d3b0047b1663097975b6d8fefd6ae7b84d + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(0,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2e59647982615dd13e4d0d71699e8ed63ed7a94d5f64e6afbcc2ee336f8d6fd6 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(1,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1a43e50c6e0c3e0dd7b56a256d4a77c3070c5882be29a068b1862122dd259b33 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(2,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x9e54c7bc0b272252121c627d44e57ef82bce2225f3b7d8c62cf4cb46a21f457 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(10,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(3,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x710c54a49e3ee85cb9a5fe8563745b3ffd03f47e96de4c99257678c0b622ba6 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(4,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x66d07c0d9ebc24242cca9fb5e5eb250febbb4bfe4b57525042e8196f5551df2 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(5,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xafd78688148e37e4ef132fc655266307859145bc64b2deb128f132505e239c9 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(6,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x504a43ed9fdfa79233345cd22fab3267e52e0c73eb680451900e83b25682914 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(7,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x28d483d27181b4f92e7c5da8a486f8b651af8ca772e8f12109d429c08d621990 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(8,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x114ac01c5d8797758fb6ba961ab5f0f2fbad634d4284615ca459c82b0982a81d + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(9,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3c8a51a94726cef2aac12882bf92123c320d5aa1d7318750aac2d535f874afcc + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(10,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x22b65f2ac43d66c340e04a2e256448903ddc28ca336724dbeb6ddc30e83e10c9 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(11,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2cd2e8478354928f82205e0fe20e8db54ecd41127f88a9fba2190ab6806acea1 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(12,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x39d25ad7f6b727393b5338195e55bde112a7d782650bb2a698cc72a1198aa07c + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(13,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x35b4b2a321ab568b15b1a811becd2d54fd35d5fb1733c844dd6e0fcfe5227f08 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(14,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xca90e04153b6c33548ad48f44127de33dad333a76c82170cbb434f90079b170 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(0,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3bd8de175633cdaa87ae014f1fe6f3a22651cde07a05259d1ac7f2260075bfa8 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(1,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3ac264d9cc000ce35b03a8db3194bbddf0c5702e193461487744c1a53208b750 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(2,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1982693515021a242c24e0f9974f6332cf1c760be8f864aa2eb4ced304b37fe5 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(11,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + + } + } +} diff --git a/contracts/zkllvm/merkle_tree_poseidon/gate12.sol b/contracts/zkllvm/merkle_tree_poseidon/gate12.sol new file mode 100644 index 0000000..7fe2fcb --- /dev/null +++ b/contracts/zkllvm/merkle_tree_poseidon/gate12.sol @@ -0,0 +1,535 @@ + +// SPDX-License-Identifier: Apache-2.0. +//---------------------------------------------------------------------------// +// Copyright (c) 2022 Mikhail Komarov +// Copyright (c) 2022 Ilias Khairullin +// Copyright (c) 2022 Aleksei Moskvin +// Copyright (c) 2022-2023 Elena Tatuzova +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//---------------------------------------------------------------------------// +pragma solidity >=0.8.4; + +import "../../../contracts/types.sol"; +import "./gate_argument.sol"; + +library merkle_tree_poseidon_gate12{ + uint256 constant MODULUS_OFFSET = 0x0; + uint256 constant THETA_OFFSET = 0x20; + + uint256 constant CONSTRAINT_EVAL_OFFSET = 0x00; + uint256 constant GATE_EVAL_OFFSET = 0x20; + uint256 constant GATES_EVALUATIONS_OFFSET = 0x40; + uint256 constant THETA_ACC_OFFSET = 0x60; + + uint256 constant WITNESS_EVALUATIONS_OFFSET = 0x80; + uint256 constant SELECTOR_EVALUATIONS_OFFSET = 0xa0; + + + function evaluate_gate_be( + types.gate_argument_params memory gate_params, + merkle_tree_poseidon_gate_argument_split_gen.local_vars_type memory local_vars + ) external pure returns (uint256 gates_evaluation, uint256 theta_acc) { + gates_evaluation = local_vars.gates_evaluation; + theta_acc = local_vars.theta_acc; + uint256 terms; + assembly { + let modulus := mload(gate_params) + let theta := mload(add(gate_params, THETA_OFFSET)) + + + function get_witness_i_by_rotation_idx(idx, rot_idx, ptr) -> result { + result := mload( + add( + add(mload(add(add(mload(add(ptr, WITNESS_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))), 0x20), + mul(0x20, rot_idx) + ) + ) + } + + function get_selector_i(idx, ptr) -> result { + result := mload(add(add(mload(add(ptr, SELECTOR_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))) + } + + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(3,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x6ce96688c89efe6c3c0600302b1dc2c979a862e8db740494255bcdce9af5937 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(4,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x26e1c88b9d679a9c0254064dcad60837d5db78f0784b45768fc1668dc8867e06 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(5,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1f0765068dd086379f2dfa65f13df630e7cd734f01b42e6543408abd18c00c28 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(6,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x235a9751224d10c6e58387130efb2cd2a9eafc5ac3737ae6118f3d99b582e1f6 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(7,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1a21645f5c8b8d3c4b3f463c43da3440a96d807a5253aa348ae271e3fdeedae5 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(8,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xc6c2142c72cee77e38a7c411f819fa131613c9918fc6c4f6c06df602a971e12 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(9,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3c720d02e75728a9c7f9556266b59ee0be193cc295c4273e5ab47472baea3a50 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(10,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3a39afc00e11ab70dbca526eb728046b59246df30058b3c81ec6c9e88092afe5 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(11,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2fb377292f97d27d2c299b7d9236a9a27144f6db5ebd68c46a7598a6757d5d56 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(12,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x135529ef73f611951187ae4b5d2d2c485e7c5ca5614cf553520da02d5b539d76 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(13,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x35a8242b3cd87d937568438d7a06b43246b03784d4dde188d46fc06455fcac0e + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(14,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3eaaad06edbce747bcc2fe44ac45fb48079fa42ebc94002b5fd46b30416f707 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(0,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x31ef3ef3441e8e856bbe39d663b03f7860247870345269dfb2c0107709dc4aee + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(1,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2174dab3400d36d57c200e8d737e22dd78ef89a2fb037c68c2ed2cc0478656d1 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(2,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x27ed24328f3bbf9effa844022f33b2ce504ba383a53343e357688328c0d4dcaf + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(12,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + + } + } +} diff --git a/contracts/zkllvm/merkle_tree_poseidon/gate4.sol b/contracts/zkllvm/merkle_tree_poseidon/gate4.sol new file mode 100644 index 0000000..f80e0a3 --- /dev/null +++ b/contracts/zkllvm/merkle_tree_poseidon/gate4.sol @@ -0,0 +1,1003 @@ + +// SPDX-License-Identifier: Apache-2.0. +//---------------------------------------------------------------------------// +// Copyright (c) 2022 Mikhail Komarov +// Copyright (c) 2022 Ilias Khairullin +// Copyright (c) 2022 Aleksei Moskvin +// Copyright (c) 2022-2023 Elena Tatuzova +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//---------------------------------------------------------------------------// +pragma solidity >=0.8.4; + +import "../../../contracts/types.sol"; +import "./gate_argument.sol"; + +library merkle_tree_poseidon_gate4{ + uint256 constant MODULUS_OFFSET = 0x0; + uint256 constant THETA_OFFSET = 0x20; + + uint256 constant CONSTRAINT_EVAL_OFFSET = 0x00; + uint256 constant GATE_EVAL_OFFSET = 0x20; + uint256 constant GATES_EVALUATIONS_OFFSET = 0x40; + uint256 constant THETA_ACC_OFFSET = 0x60; + + uint256 constant WITNESS_EVALUATIONS_OFFSET = 0x80; + uint256 constant SELECTOR_EVALUATIONS_OFFSET = 0xa0; + + + function evaluate_gate_be( + types.gate_argument_params memory gate_params, + merkle_tree_poseidon_gate_argument_split_gen.local_vars_type memory local_vars + ) external pure returns (uint256 gates_evaluation, uint256 theta_acc) { + gates_evaluation = local_vars.gates_evaluation; + theta_acc = local_vars.theta_acc; + uint256 terms; + assembly { + let modulus := mload(gate_params) + let theta := mload(add(gate_params, THETA_OFFSET)) + + + function get_witness_i_by_rotation_idx(idx, rot_idx, ptr) -> result { + result := mload( + add( + add(mload(add(add(mload(add(ptr, WITNESS_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))), 0x20), + mul(0x20, rot_idx) + ) + ) + } + + function get_selector_i(idx, ptr) -> result { + result := mload(add(add(mload(add(ptr, SELECTOR_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))) + } + + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(3,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xb57260badff5653d7fde8ed417e16fa8bcaeca3ff415a361d690dcda1346c97 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(4,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3686aa934c12341b0cc122df6b0ebbc4d6f7d237b19cb6c014c94964465d2327 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(5,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x15b2fd73f652c63cf9994874ba30522afaa736c2d1b0908126adce8686d8d9ad + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(6,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x33ce497097af4c428e01b17667b1d378e0f17500b45aaa52eabbede98feab4ce + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(7,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x25d835f46ac2c2459471fe30f828939f08257be86a1ef9c0d90943c8ab0d1271 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(8,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2f651683da29fdbd47928e96e692dded2fdddfa929739ee2619bc553facfce81 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(9,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x96736cd0d5e9084465453f7613d218658b0407a98c480b35c7ddd2257c5263d + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(10,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x381da1f537045c23ec9f07565605f4214437c6f92a3c483e16268ffcd521941 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(11,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x103afdc3a1b512a5582035f0ab6d0e49329b6862d33e2fbb75b81df8737a7588 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(12,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x13edb8ca0c06dbab904b0205d5fe71fc2d163528666479491372a3888125989c + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(13,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2d378a36486a6e5306fcc07493e1ca8efb824dd81604895cb853adac5cc7ddb0 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(14,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3256ca176a7a82c658247b895125a5b0f29e79665f9f1dbc548bcef77aaad74 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(0,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1e7148a905a0e2060e146dd107f4f7adc9bf1f54d2bebc1a8b3e1bda7ea278a8 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(1,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1c430efcd6a8fea10e8e044bcd6435f3ca710076b71dd326e8aa8d1dcfe3043b + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(2,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x28b8b3c495643efa8209b461b29d45245a531280cb75a1547d0dcb8afa284316 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(4,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(3,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3e67d93f11dd68d214be8ba2c42bed3d74094ce3b5edadbacf44bfff005c2ab1 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(4,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xf434e82029dd3b90cd8a0967ce649729a2fda2bd2bf0bd83a57175a43bc1058 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(5,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x427e93deb399befdd63042e0b5c5bd1b837160848785e11dcb1e4e8d00d36b6 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(6,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x376bc13fe260460bc37bf8a88c76864edb82e22a712a78326eda481cba9cc160 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(7,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x198f4073fe7dd1ce38f689d9627612a765ccebcc6c2ec7d5b9a424f4674a81ba + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(8,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x322ac4bea665187242c197649a14335b8e569e671bd69a2cd1d323b14dfbf808 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(9,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x397e882d6ca7a1f4737189575a9a3797882910155f9d5189787226caac0dfc3e + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(10,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xade90b8efbc799123cdb5272730f3388f481eeb49c5adfcae66b5a7e294d30c + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(11,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2029104dac9401ee13c8c91808bb73fe371c3e6bc79100d56760acfefb9b0952 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(12,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1367d38cadefdd7603e4b72503261c33ebf93eb8e4f59ad47752403deffcc39a + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(13,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xad08173899d27924638dd2b2f88877a9ad4e0c959f1433f5e1961587ae3e4bc + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(14,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x271c3f3e355a1c129911e5490aa5a37fbe6dcf4bd49eb14055e9dfa5eb61c82c + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(0,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xedb4ed214c82344c2693e5f72af8adc3f38951b77b79f5c6b8285c97bdd1523 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(1,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2bc40f210cebc814def6adff2d2bf9193cd420c8a10f61dadf6d6f7bcdea2367 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(2,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x214116debc0cd4b062656f529d47b7c38ad218858df931fc2d4e9da2710c70ea + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(5,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + + } + } +} diff --git a/contracts/zkllvm/merkle_tree_poseidon/gate6.sol b/contracts/zkllvm/merkle_tree_poseidon/gate6.sol new file mode 100644 index 0000000..bfce43b --- /dev/null +++ b/contracts/zkllvm/merkle_tree_poseidon/gate6.sol @@ -0,0 +1,1003 @@ + +// SPDX-License-Identifier: Apache-2.0. +//---------------------------------------------------------------------------// +// Copyright (c) 2022 Mikhail Komarov +// Copyright (c) 2022 Ilias Khairullin +// Copyright (c) 2022 Aleksei Moskvin +// Copyright (c) 2022-2023 Elena Tatuzova +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//---------------------------------------------------------------------------// +pragma solidity >=0.8.4; + +import "../../../contracts/types.sol"; +import "./gate_argument.sol"; + +library merkle_tree_poseidon_gate6{ + uint256 constant MODULUS_OFFSET = 0x0; + uint256 constant THETA_OFFSET = 0x20; + + uint256 constant CONSTRAINT_EVAL_OFFSET = 0x00; + uint256 constant GATE_EVAL_OFFSET = 0x20; + uint256 constant GATES_EVALUATIONS_OFFSET = 0x40; + uint256 constant THETA_ACC_OFFSET = 0x60; + + uint256 constant WITNESS_EVALUATIONS_OFFSET = 0x80; + uint256 constant SELECTOR_EVALUATIONS_OFFSET = 0xa0; + + + function evaluate_gate_be( + types.gate_argument_params memory gate_params, + merkle_tree_poseidon_gate_argument_split_gen.local_vars_type memory local_vars + ) external pure returns (uint256 gates_evaluation, uint256 theta_acc) { + gates_evaluation = local_vars.gates_evaluation; + theta_acc = local_vars.theta_acc; + uint256 terms; + assembly { + let modulus := mload(gate_params) + let theta := mload(add(gate_params, THETA_OFFSET)) + + + function get_witness_i_by_rotation_idx(idx, rot_idx, ptr) -> result { + result := mload( + add( + add(mload(add(add(mload(add(ptr, WITNESS_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))), 0x20), + mul(0x20, rot_idx) + ) + ) + } + + function get_selector_i(idx, ptr) -> result { + result := mload(add(add(mload(add(ptr, SELECTOR_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))) + } + + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(3,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3009386b52e5055b6bf772a071193b84285e68e8c1c6d04bf9eb3e04ec7c1416 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(4,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2f5ef53c118f839d17420d324b653d32e3d2c07eecdd7cbbc0da152db7fb0ea + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(5,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x229efeb32c10f2782fc83a94205c8f58eef3df9ec21e4c02616e6082ce7fe370 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(6,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2dc1e7a4d1380f8daf853e1b18bca7646fea0920c2bec67d1b4bc765a06f3adc + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(7,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xf487f3f3e34f9f69dc8cd7db38afe8278ccfd1f8b4443f3de453ce31424130f + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(8,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2204c7fe4851b1df6097e6a9ed69a391eaa3ab9f175e0ade523f3a97290a5012 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(9,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x10211bd7fa4d88bf9b169c38beaadaaa20ac02ea76bf1ea90db4ffcee0fb6ad9 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(10,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xe4d49a3bceded12c90225aca726f32656f4cf07758d01febcb7cba7b81b5dd6 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(11,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x21c35fcc27bec49772485abc19d53d198c01d89ac14bc17e9aca36cafce61f12 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(12,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x33710ee97bdafd73ad5cd26c06ceceac3d17fc0aaaee3666cf2360d5cf252bcf + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(13,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x8738cc8c5c95a126b5cb08a1a218585c0beaecbf5cc0c202a130e1d7aad9c73 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(14,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xde75113dffb75a9bfea170dde9a8041d9aaf4f7315707c01690b67757a3d0bd + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(0,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xced10834452cebcf0df0cf6ce4f8fc885cf875ff12732c58c5a68c0089886b3 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(1,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xa9bb658ec7c98b39f805ce21273f3f2f5259db645e66049405e6354d245b875 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(2,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x333772e36eb7e2acdee8b1aa4b64db7aba1a1101469f45e982b310304a824ca8 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(6,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(3,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x22103342cc8bf7fc52d7b43b7546a60cd88d4ae331d9325ad3a2e5596f33cff2 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(4,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x12d9c33d1650ed92897261e2d40d340d01e2da78ec9ba48b9bbbc529118fcb03 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(5,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2ee1ceb24904e5d71dbefd731c2cb83afcedf5c09e3bd0c1012d36d1b8616964 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(6,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3d8bf6bfe16dffe2bcb345d797161c8eb214ff39d21fd52c668edd71aec0bac3 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(7,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1b57ad420634d570122a17a5a67982b70b8df3802bed743a94afefe58f000061 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(8,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1fa2e4f11ca609de7ba539b0081c7c5c36c4b8bedf2392c621e65ed1b8cd6293 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(9,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1a3cd81d336c1390f0dc4a1be36ce40463fa86218bf75669d010b71167d206fe + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(10,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x620c1dd2dd4f64bd9a25af10e8a6f633aa809f073b3192b7c35227c77b67d48 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(11,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x364f72a77ac27536f73a4eb1a1479ee4dc52895163b0403b9f9d7dde03205600 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(12,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x21319dc8b28618e824b59706322550ad29be49c295d73827d36b554263a85f5b + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(13,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x42f7648d85f11f71d9c05a1ca49e7249a6edc2e0608e4a5b52fe78964605e40 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(14,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x12158a0c85263036b36aebe404b8e633ab66439493bb4bd8611df7e584d502 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(0,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x9205e75645e4e6bdd7b6b575350f9975702ec52346c56c9e71e6daab2f19a34 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(1,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2e616724c0b6328034c4f9cda98263357cfd0deec832e4e3a3b0cb5dbe6ce2f5 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(2,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2eff4de3cf9b8a27e94c10328a3c51ecc5f1ebbf43e056f0db91b1a7192fd3e8 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(7,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + + } + } +} diff --git a/contracts/zkllvm/merkle_tree_poseidon/gate8.sol b/contracts/zkllvm/merkle_tree_poseidon/gate8.sol new file mode 100644 index 0000000..f43b5a6 --- /dev/null +++ b/contracts/zkllvm/merkle_tree_poseidon/gate8.sol @@ -0,0 +1,1003 @@ + +// SPDX-License-Identifier: Apache-2.0. +//---------------------------------------------------------------------------// +// Copyright (c) 2022 Mikhail Komarov +// Copyright (c) 2022 Ilias Khairullin +// Copyright (c) 2022 Aleksei Moskvin +// Copyright (c) 2022-2023 Elena Tatuzova +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//---------------------------------------------------------------------------// +pragma solidity >=0.8.4; + +import "../../../contracts/types.sol"; +import "./gate_argument.sol"; + +library merkle_tree_poseidon_gate8{ + uint256 constant MODULUS_OFFSET = 0x0; + uint256 constant THETA_OFFSET = 0x20; + + uint256 constant CONSTRAINT_EVAL_OFFSET = 0x00; + uint256 constant GATE_EVAL_OFFSET = 0x20; + uint256 constant GATES_EVALUATIONS_OFFSET = 0x40; + uint256 constant THETA_ACC_OFFSET = 0x60; + + uint256 constant WITNESS_EVALUATIONS_OFFSET = 0x80; + uint256 constant SELECTOR_EVALUATIONS_OFFSET = 0xa0; + + + function evaluate_gate_be( + types.gate_argument_params memory gate_params, + merkle_tree_poseidon_gate_argument_split_gen.local_vars_type memory local_vars + ) external pure returns (uint256 gates_evaluation, uint256 theta_acc) { + gates_evaluation = local_vars.gates_evaluation; + theta_acc = local_vars.theta_acc; + uint256 terms; + assembly { + let modulus := mload(gate_params) + let theta := mload(add(gate_params, THETA_OFFSET)) + + + function get_witness_i_by_rotation_idx(idx, rot_idx, ptr) -> result { + result := mload( + add( + add(mload(add(add(mload(add(ptr, WITNESS_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))), 0x20), + mul(0x20, rot_idx) + ) + ) + } + + function get_selector_i(idx, ptr) -> result { + result := mload(add(add(mload(add(ptr, SELECTOR_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))) + } + + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(3,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2a86e064415dec6c8df737d86b1499810cc798bfa396ae72191de52e1b15aee8 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(4,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x252414a163b2aea1302daf1411a95d580b5b5abe407724dad781ee674caf419d + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(5,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2040b8c77bb565db6513dac171bd9f1b773cb6901f234e1b786e226bc311343e + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(6,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xbe756d6aa913ae5f79ba644619c57de4e3f606f3ac9647ffe394d3cbcb150f3 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(7,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x36bf94a3c50fd6f0668bfa2f3ae4196add96e6bb34be0e6a25c056e8cd170063 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(8,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1c131a28f4c733362bc326dc1a1c1d09f52911bf780b0a19a091c30bcc90a43a + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(9,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x27ad2a8b1b92c8f5f4e19b093be11472e1770236e4a6cfb6330e01f48198dcb4 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(10,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x359a8fd833172b0dc715769221d8c48aea919094bf168cb4e5b49354d74f3171 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(11,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xb7d0675b913ca7ef7044497026b070d679f5c89cd9dd7896ea822a7aee0a5d4 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(12,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x9d0e9b0736fa4cca5934089ece2dbd200eb78132a131ae6eca072b13ab9c13 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(13,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x381c680afc063e315fd7b9a4d6af15bbd730d31153e52374fa8a9e967a96b211 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(14,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3bfa0e038ee78dc8c2914af5f60404fa6fd65e1b68980b632e3f7ed624e8578b + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(0,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x341f7b714c1f638fd8eef527bd3afdbc05aee95abec8b5149c2e69985da9a740 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(1,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x19487877026753fdf4536d2f1886d44a225992457174b1257b94e15ca2645791 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(2,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x702ace72c6faa37d0106422cccea5ac0637d4c5cae038b32927a9d9aa205a8e + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(8,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(3,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x7f42fc47bf3b73745c7cf1835318d0707f696da7ceb8686b064748482ade923 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(4,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1391a8223e2837e5fd6612b63c28b8a6e0dad0b99a1c166c430aa790ace4b1e5 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(5,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2e2c57e4d9d038910af91192771a66e3145dcd5e37ea1f9f407bbb0943ba7b0e + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(6,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x36494d7c1450ba044e1bb76965316419f767311e13c6e48941eb52365e458212 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(7,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2a2af6ae9b377a89c057c3208892bc9c9fc47ee44cf79575e236511f53afb523 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(8,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xbd8024035c315dcf9c14ec73afaa39374aa56a9570fe65a769a005e00826edd + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(9,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x18d0ed18cef8848bce810dabc3cc479e8d6b7b5612a5172cb8c7ca7a37e97a03 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(10,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3acdc07a21473f83e6c3c858c28909eed8df07c1dd701802033bad05960bd69a + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(11,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2a31bea1351b45bd4be815c5afe4bb98d5229fe2959fc510402276dc7ad2c29 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(12,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x31713e7384ad3aeb2bdfb80e0f4d56f36985d1c2ec53b17ec12fd4eee2c2470f + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(13,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3ea6e379a158f9a2abcfbae60744d9744487e9c10e67aa3ec912adae2f5610e7 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(14,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x12241111a135a2111b40e8763bca1ede065c1ea827408256bb8be4f03cee606 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(0,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1c96e38ff646d7c4d97899172b6e8e92e62d05151c58a03ca035ce3dc1caa8fa + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(1,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x193254d37c814153a415b41e290fb77fedb62587313297784a10e339682b3f66 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(2,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x12ddf98cf99b2a741f989252e011f16716204e87f8aa2b64e3d6dd2b208d10ab + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(9,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + + } + } +} diff --git a/contracts/zkllvm/merkle_tree_poseidon/gate_argument.sol b/contracts/zkllvm/merkle_tree_poseidon/gate_argument.sol new file mode 100644 index 0000000..c98824d --- /dev/null +++ b/contracts/zkllvm/merkle_tree_poseidon/gate_argument.sol @@ -0,0 +1,100 @@ + +// SPDX-License-Identifier: Apache-2.0. +//---------------------------------------------------------------------------// +// Copyright (c) 2022 Mikhail Komarov +// Copyright (c) 2022 Aleksei Moskvin +// Copyright (c) 2023 Elena Tatuzova +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//---------------------------------------------------------------------------// +pragma solidity >=0.8.4; + +import "../../../contracts/types.sol"; +import "../../../contracts/basic_marshalling.sol"; +import "../../../contracts/commitments/batched_lpc_verifier.sol"; +import "../../../contracts/interfaces/gate_argument.sol"; + +import "./gate0.sol"; +import "./gate4.sol"; +import "./gate6.sol"; +import "./gate8.sol"; +import "./gate10.sol"; +import "./gate12.sol"; + + +contract merkle_tree_poseidon_gate_argument_split_gen is IGateArgument{ + uint256 constant GATES_N = 13; + + struct local_vars_type{ + // 0x0 + uint256 constraint_eval; + // 0x20 + uint256 gate_eval; + // 0x40 + uint256 gates_evaluation; + // 0x60 + uint256 theta_acc; + + //0x80 + uint256[][] witness_evaluations; + //a0 + uint256[] selector_evaluations; + + } + + // TODO: columns_rotations could be hard-coded + function evaluate_gates_be( + bytes calldata blob, + uint256 eval_proof_combined_value_offset, + types.gate_argument_params memory gate_params, + types.arithmetization_params memory ar_params, + int256[][] calldata columns_rotations + ) external pure returns (uint256 gates_evaluation) { + local_vars_type memory local_vars; + + + local_vars.witness_evaluations = new uint256[][](ar_params.witness_columns); + for (uint256 i = 0; i < ar_params.witness_columns;) { + local_vars.witness_evaluations[i] = new uint256[](columns_rotations[i].length); + for (uint256 j = 0; j < columns_rotations[i].length;) { + local_vars.witness_evaluations[i][j] = batched_lpc_verifier.get_variable_values_z_i_j_from_proof_be( + blob, eval_proof_combined_value_offset, i, j + ); + unchecked{j++;} + } + unchecked{i++;} + } + + local_vars.selector_evaluations = new uint256[](ar_params.selector_columns); + for (uint256 i = 0; i < ar_params.selector_columns;) { + local_vars.selector_evaluations[i] = batched_lpc_verifier.get_fixed_values_z_i_j_from_proof_be( + blob, eval_proof_combined_value_offset, ar_params.permutation_columns + ar_params.permutation_columns + ar_params.constant_columns + i, 0 + ); + unchecked{i++;} + } + + + local_vars.theta_acc = 1; + local_vars.gates_evaluation = 0; + + (local_vars.gates_evaluation, local_vars.theta_acc) = merkle_tree_poseidon_gate0.evaluate_gate_be(gate_params, local_vars); + (local_vars.gates_evaluation, local_vars.theta_acc) = merkle_tree_poseidon_gate4.evaluate_gate_be(gate_params, local_vars); + (local_vars.gates_evaluation, local_vars.theta_acc) = merkle_tree_poseidon_gate6.evaluate_gate_be(gate_params, local_vars); + (local_vars.gates_evaluation, local_vars.theta_acc) = merkle_tree_poseidon_gate8.evaluate_gate_be(gate_params, local_vars); + (local_vars.gates_evaluation, local_vars.theta_acc) = merkle_tree_poseidon_gate10.evaluate_gate_be(gate_params, local_vars); + (local_vars.gates_evaluation, local_vars.theta_acc) = merkle_tree_poseidon_gate12.evaluate_gate_be(gate_params, local_vars); + + + gates_evaluation = local_vars.gates_evaluation; + } +} diff --git a/contracts/zkllvm/merkle_tree_poseidon/linked_libs_list.json b/contracts/zkllvm/merkle_tree_poseidon/linked_libs_list.json new file mode 100644 index 0000000..0687002 --- /dev/null +++ b/contracts/zkllvm/merkle_tree_poseidon/linked_libs_list.json @@ -0,0 +1,8 @@ +[ +"merkle_tree_poseidon_gate0", +"merkle_tree_poseidon_gate4", +"merkle_tree_poseidon_gate6", +"merkle_tree_poseidon_gate8", +"merkle_tree_poseidon_gate10", +"merkle_tree_poseidon_gate12" +] diff --git a/contracts/zkllvm/merkle_tree_poseidon/proof.bin b/contracts/zkllvm/merkle_tree_poseidon/proof.bin new file mode 100644 index 0000000..d80a0e3 --- /dev/null +++ b/contracts/zkllvm/merkle_tree_poseidon/proof.bin @@ -0,0 +1 @@ +0x0000000000000020dbb8ea2962827e315875cbaefd8e8d62374c60969a60df024204e4ee376286930000000000000020b4fee05047444bbd624b6694f31978609ccc0aad8579e6a7e732a93312ffeea400000000000000200936f421815fbdc630c2f2a116f428c09ebd29f7b28ac7fdaef251ae99369a980000000000000020fb9e8f5396b5854c2b36a7d3d70649350640eeb9f326aa0a391fe02ddb1828140b3556dd5c99d350d4792fdc6b8cd2c547636820b268dd031c2e4c28e6486912271e395a5783494c006e61f6d4973975229fc0658493a8950616da7acaac965b000000000000000400000000000000140000000000000002092dfe11a7e752703b32e6255182844522811c1c85f0e06308736ae55deab09c14cca23eda612efc0723ffd5162b486a0fe97d7e87e194a10be9610b00bfd71600000000000000020cd606cefbb3178bfacd0dcde6d569a2fd08cdae454bfa8dd50cd68ba10bdfe90308b13e57d49f7f90bdce2960ab0cc6f389dffbcc45e5775c69072d46de2f1b00000000000000021a7eedce552ccba8795d8e2f1273455fec0a12ac0bfb45993335e7fe50b0b8ae23513c8603735e1a9efed69e6ccba98c370dd2846f9f9339fc189c0184b5df2f00000000000000013e59f0dea678b0d1e571a6639f2822a02536823f73ad9870ed6b05b4ca6b71f4000000000000000128a8b542cb3bac2d73bf41657af2f73e526545c51ff18afd5e141d8e04c4d11000000000000000011069c7d823b64e006933436eed90dfd8a53cb28fea2d4c95d2e8763bf83fdd1a00000000000000011dd3b504994973a0940f538d2ac7ab8d28efa63c12843f5ac9aad83a36272a9700000000000000012b3cea2fcd755a9d1d85e2f869db7f3ef17e2acfcd1c43ca412add132441eeb300000000000000012ad180fb72eed58304b882c54eb7466d9f9091b325388fb1acab9f47eaffe96f000000000000000123e920b592faac87968bc0871a5b8056a0f2625de5e3e37035b8a7892cc623b2000000000000000135113b35c3bee04c39c1a651f2c6155c4d0d408934c8f75a9137a7e88769b11e0000000000000001219b0375f9bc9f589027e53279c41722f819ccaf984a60d1a477154e10346fc30000000000000001235615284726ed2008d38f28c2ff00664cc42d952f9b66bd06f3cd642381ac2600000000000000013ee46fe8ad788bf4bd359643c2a28448b4b84806349e76e624728dfa185b924c00000000000000011b417ae52b50e9d71863dfcd46e513b5cd51be7ca861a185517b1b5b2d66a81000000000000000013140780eea5e7f08bce759c9663d443f964b5c1391b33b8b8d342c33e075bc32000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000201870dc8da4ba272fc6bcd8782e68131d3ac1964c4eeb8268ae7cc26ab516b642a83cd98d06901dbade0112dad2c104ec1d45fd7197406c5cce0bf20d57dfaef000000000000001100000000000000013673849abc3ad3248cf9143936489769d85eeea29ba5e8d52d213cb41dca91e900000000000000010e512adb90bcfc7718e247f532b5730502b250e1ef393f0d0dba6e64db32ec0c000000000000000115e5a9b50a05b40f44ae13372ff9aeaf3ea6802e1494f60733b96f05192307370000000000000001332ee304f3edf4a6786f4bccc7f74b47da5853f586bda3b8032742156df250aa000000000000000126f04c001f169bfd946d8389c6b23c85ca0e93a7aac9d83011ea56dbcbfd8cb600000000000000010837ef2da11024f50386ca64c1f238141a3d317195c4a3bc3269d6c6e93019df000000000000000123cb5c7a944782c0e306734fbb6d7c908f17e49bfb785613703a34f6ab2df8c9000000000000000114fec17d27a9dc5a5882425ff5be738233d84d721fc28f35f311bdbdcf5b5ccd0000000000000001235557875d4e3bdd07e38823011e4c9e2a19f549119fe8275becbf2f9cfa5d2f00000000000000010bf54274db9d13be11274a91d61c0e36a09f56d54aad1ca18014b7c17e26aa72000000000000000121eac2d94ddf272953119816e7d7c99df2908993353b3635f574031a199a16b000000000000000011fe452b6c76c506e69d331d7e5997d2a6f188956ed25b152fe14bec76ecc315f00000000000000011d0217352a33028e77c8121aa65c7771ec8f5ef0b7e492af1c59529f124b591c00000000000000010b5351993ef504e1d4eb9c113cc9dc2fc3fbb1bf3984921ca5ec3e86c6210b1b0000000000000001345159f954f4fc8b434a98d572ca94534b86d4184930ee423d10de0a4025c09f000000000000000133e3b94a0e00f6290d5172bc99d479374a0c18b3b9bf38407381e631e605e28000000000000000011cf27c5374a427bd92e0b24ff82ec18e1182696f5cb7a941d9b9ec0877aa4b64000000000000005700000000000000010b3556dd5c99d350d4792fdc6b8cd2c547636820b268dd031c2e4c28e64869120000000000000001380ab252cf012094265def4e19c01dda64f108a37c0c510f8ce77ccc7f6a0d5a000000000000000118357b9e0b05a2e4bfd5ac8680c095436f9ac7414709b0df5bd0ac4a7d1242be0000000000000001390b6a16371c2e77bf2c5ea083c2ea510bbf4b4a59e37b4131e62c87715b4db500000000000000011d39126f138ce856bbddd92292ce9394b1a214839c3d83d794ca1af136c884850000000000000001121d5c2b61c089b1ab553dacde08e1e7339d3499fa99a0feb59824dc11ea969700000000000000011a92ccd8e8c2b07858aa3460562c6983dfcb6e05dbb32bddf2cb875f5994f0f2000000000000000104de003c8bcd7259bb5305e1aede0f931a6bf42537e5e91e8b9f4302bfe8b4b800000000000000011856012ebb033bc0a89f1d686a564ddf841bc4ba177d8d98ba1c4f0dbf8b8798000000000000000139ae05e9a7102ac34b1b930a13af855d72443ea66c26cae009605a57bdb9a5f7000000000000000120661d904350d5d07789df32626d9ad2b23ad54ff78e11f1ca2d0002b4a03dcf000000000000000121fe93d150942d1255b15bfbec24061d3698f897c32c6781c0869e3387213509000000000000000129f8e31692e4e15bac76cbeb9cb41e91cc6fa8febd4413519046b527a3a6092b000000000000000111dc6f70de7866ca5e51fb9a0f8498d8975a8205966d754505d9f6ff323e2dd40000000000000001194e2d34585a01f3d799ea024d96fc3ad27df11fe6d6513d8414a20efb36e52300000000000000013e86e205b9c209c33601920b83f2ed25fa2f1ca378e29d17fb39f95de81279ae000000000000000138a26a1ca0ca30d00e07da3993bea1bd59d12b4137392d09836d1b21885c606200000000000000011b2c128f23f2f4104627431fe2b928b237fb7455eee9fcc12c6cc3f3a9cde1e6000000000000000107dc5ccbb3bec4515ec44f9f6d9dcb7ad35c13b597f7fd8eabc571e85105697c0000000000000001274dcffa82b9d596d9d58e1d2414f96620cc628bf7d7f3c95adb3989951b0f6c000000000000000104850fe48da12bf2412bc691b468defe3d2a21c7bb50d79bfac08ce8e9874d19000000000000000116994f76c425dbbb45dae0d8860c5af731d2a8e6a894360be5c2c08c8fa4817d000000000000000130fe8d51d4bd4aa85d46643a9e3dc6d3d6d6b3854198151fe3a091d1ce368770000000000000000134f8c29927b27549d25ff5251734e222cb5db6a62c117e4ca69b46520710a52d000000000000000108dbccfdc67c4a711bdfc9b974086aad6fba2d4eb7239310dc539be6235339dd00000000000000010731f88f9c95f7a21343eae59dabe640474475b3895063da7652f158246b7dce00000000000000013f1bf716f8660e7573cfa304e4c195cd1399d0a228e690321e0e43400ab6596100000000000000010890fc98456a744157faf8f7338bd02c914e751e700c481d477e4ae4b65568e70000000000000001390b6a16371c2e77bf2c5ea083c2ea510bbf4b4a59e37b4131e62c87715b4db500000000000000011d39126f138ce856bbddd92292ce9394b1a214839c3d83d794ca1af136c884850000000000000001121d5c2b61c089b1ab553dacde08e1e7339d3499fa99a0feb59824dc11ea969700000000000000011a92ccd8e8c2b07858aa3460562c6983dfcb6e05dbb32bddf2cb875f5994f0f2000000000000000104de003c8bcd7259bb5305e1aede0f931a6bf42537e5e91e8b9f4302bfe8b4b800000000000000011856012ebb033bc0a89f1d686a564ddf841bc4ba177d8d98ba1c4f0dbf8b8798000000000000000139ae05e9a7102ac34b1b930a13af855d72443ea66c26cae009605a57bdb9a5f7000000000000000120661d904350d5d07789df32626d9ad2b23ad54ff78e11f1ca2d0002b4a03dcf000000000000000121fe93d150942d1255b15bfbec24061d3698f897c32c6781c0869e3387213509000000000000000129f8e31692e4e15bac76cbeb9cb41e91cc6fa8febd4413519046b527a3a6092b000000000000000111dc6f70de7866ca5e51fb9a0f8498d8975a8205966d754505d9f6ff323e2dd40000000000000001194e2d34585a01f3d799ea024d96fc3ad27df11fe6d6513d8414a20efb36e52300000000000000013138b51ba4a5052975d09af3e78bd9b67f09ae5f6cb30c609971ad4d42dca76f000000000000000138a26a1ca0ca30d00e07da3993bea1bd59d12b4137392d09836d1b21885c606200000000000000011b2c128f23f2f4104627431fe2b928b237fb7455eee9fcc12c6cc3f3a9cde1e6000000000000000107dc5ccbb3bec4515ec44f9f6d9dcb7ad35c13b597f7fd8eabc571e85105697c0000000000000001274dcffa82b9d596d9d58e1d2414f96620cc628bf7d7f3c95adb3989951b0f6c000000000000000104850fe48da12bf2412bc691b468defe3d2a21c7bb50d79bfac08ce8e9874d19000000000000000116994f76c425dbbb45dae0d8860c5af731d2a8e6a894360be5c2c08c8fa4817d000000000000000130fe8d51d4bd4aa85d46643a9e3dc6d3d6d6b3854198151fe3a091d1ce368770000000000000000134f8c29927b27549d25ff5251734e222cb5db6a62c117e4ca69b46520710a52d000000000000000108dbccfdc67c4a711bdfc9b974086aad6fba2d4eb7239310dc539be6235339dd0000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000113bc27d2fdb80716931c86fc66ae091ac1e221fc728daa5d0e410f202e7026a200000000000000010f361ecb5465c60d172c96500beb88ef33a2dede394a082f1456110ee763b1f400000000000000012c65f1183f79f2e11147dce8f5f37c1d8d922320ccd98e300d31c923e8a0e725000000000000000124aaf27a0a4281b33caf9af879ab073308baca8c3a4323f5d1e7aa08717062c300000000000000011a9481123393fc554149c960569937dba44f18d76c2802747f5464da3e83105300000000000000013993e8495c4902ab0c45fbaadb081a42747ce68b75bac9501bdedfea682b08bd0000000000000001099c1b92b6035176156d5abf139394e5926de2e73fbe9505a823a5f06f803c6d00000000000000012ca1377a78c310f698cf1ded746dfcee5831cbb9d05ef680a3a24e099216137c00000000000000010c96f0b8ab2b91c5902b9834f3872b242afcfd0b2aa5561459a444428f3d4ff700000000000000012083e711966507dddba2324d33af93b2d3fdd0bfdf127ba0491438d5c762d8a000000000000000012db9509ca398153ab4fbae3c912ac6117e56f058fa984ff043b95200a4c245c300000000000000010df0d96bb10463550c1022610eb71441dce6059b7053def0cea2e7c02a16d17900000000000000011e573637cbf99449d54f51d42a4e26fac337b912d79db933a31bba785216916400000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000001271e395a5783494c006e61f6d4973975229fc0658493a8950616da7acaac965b00000000000000012f4db0bbff9fcc3866a2b279b79d21b0963576dd173658d35ab54e37a51e7e6100000000000000080000000000000020c886a02ce0b1a42230f846472ad618acf67e18a26c53eba10603f862885b44fa00000000000000206e0c1b5988657a47d854922c73ab64c2d88286f5ac575e36076636d612f0679f0000000000000020b239bb3b8a9af14b51206f5a61b7406dbd91d16fdeabe67ef94603a03c69028400000000000000208335e799c46b6700689448cda83d01521acffd0f69339ee0e32d3ef0c1128cf9000000000000002041cb30eaac493f7a017e8093333df561794d1d992f410c6672b0b50e970e33430000000000000020cd1905b3241dc994698b46bc66f993123f6e340863b7029b42ce123c35f36eb80000000000000020a14856a12d1efa640085deb279b1b28d8fa5be5903da7519621dcb57ea08b6c3000000000000002079547b3ab2426744532fdf65964f9841d2fb782e1adf6e22553fa7d31fedddfd0000000000000002174fe68e52350810c3f9328f34050f4fa0ee668912b76aa1de48eed16047fe8e238def2c39cf8151fe9febe78dedb263ab621799fb3f33f727d7607ecad709c90000000000000002000000000000000400000000000000740000000000000020dbb8ea2962827e315875cbaefd8e8d62374c60969a60df024204e4ee376286930000000000000008000000000000000100000000000000010000000000000020757abdb1fb2ba25da50a9943f9d10283140976a89af82b317a33e849ef8a2b8e000000000000000100000000000000010000000000000020ca87b86013863218ef1ad4b614c005872a7deda393539ab41265a50ce48c72b60000000000000001000000000000000000000000000000202bb365d2dbcd485b7bc9206feb37ea98188c08e2a9bc896109c930fe19b97122000000000000000100000000000000010000000000000020edcc9ef6eaa9c2d61f48dd073c536fdf7b7b0ad50b389cf529c142e1a6e0991a000000000000000100000000000000000000000000000020f82de94d4d2d30443167baf5d3bf76a779af6e197216d7fa1d5d137ddcdd6e9d0000000000000001000000000000000000000000000000205c4cd2a6f1fa1207057d7481c00a5189f6ab62f1c2ffd110ceb25ae0b7f056240000000000000001000000000000000000000000000000206e08091005a795eebdc0b8c56648aaeb0d4bb3f5d03d936468914fcfe2e9ff4a000000000000000100000000000000010000000000000020d26725d8d1af7f5842b31b25ef1c81dcb3cf5f8adb1acd96b75742b161ec6e4e0000000000000014000000000000000200000000000000280b17dc2edc619f508fb220d335cd904806f32a3f863e2226becacc408bef68d1219116810bab117ee37a1dc5bdd8bc241c99d086fc50da0cf41c570620fa51ea26c1e8c439447dc2007e3f8649e12361e791b0ceb612864ad6dc3b812d8c03cd1c17633dab87d4457b1b311bb901e3ab6a9ce2ff5b8fe6b1dcfcd3a4e5a2240b2ec77d828e0579532311d53ab9b46e4e5ceb751ad2a06822c456790dface6fa50b4689ed0885cbc79c16dfe6b62fbb4fd1e8da36c607440a6799ed55726536540608cb55af3c491268e6df57b1ff9e40c11558da9a90e6e642210c0711df9c9d2025c6c075c8fc72a906028557937312a3e863abc5d8b3dfa9101384142adf4b25987270b4f1213cb654230cb72d2c93106eaea81362849ddedd6204fa4b46c22187b92b8ef5a47b01745ce32e8d359154242ebbcbf2770a62fd7d25cca0697f2c3490b257009ee6904fe5585bba33a782e042a524e680e44e67421ae2471e462eaddde72f56dab3d9fef42c3a3ba1a78ac232686b5839e79c19608b41940fc5233478e60a783f9c80c44fa23da586bbd7887c53a8d5d6875023c9712167546a2456b96e6114df7277e8c351038d0d13b5bf499df210ac8ae19e44ede481e8f503589f5f034e1ad30e832eb5e7d999dda67919205e5f782e8e859e3b6f77f44e200497e6247e55ccb23e7510770b9a0bb841363f67afd37f53aefac1814d14c10414bc2292082a0547d92482c7b2eca73a8a405bb18be229092711097f8618b538586fd09fb3a411a7dc147bf619dea93acf6defeaf736013d012f5a333a72920eacbade3b77f3e6aa710f4062b0a5ed3d2725d2599d97183668c80cf88306191c9b84c5ff7f58894e39e645c6101244bfa622aa026fe471219a6e95f00514d62d7a98005c2722ac40f40fc2aea991b6a16157930683efc17be07fd2936bb7eb074b37ba71fd1e5f9915f75ebac6050b05855dcecdc05f3cbf8f491902a2335b07898f161094b909c47665f3dded21043ffa1f7075ca99cd503a0d101360c2dc1d0d8a0b39bb338d3b05707095c5ba2da5ff727b0c630d20d376dc1ff3df09e90ca7ee27778febd62189f85f2c41712f36d364f9e417298d6b19e1f66ac95f710479c6ba6304818c75d6ec25dd7c37edfce418f7d4ad8764dac29ae03d7117140574b6db7016ac922733222432ee144d63cf204684957e7a7e18440e9af33bf01584d8159618a200c6a6669c76d2b6f7241a164fe857abd880fcdc710e771a660c59b7b08c099bc61715a757d7d137887a0685302793e22405087e28220b35c112ba2c0b095d8c6419ca383ece7f738992685491d1f6cd44e11f5f6d1fe00028000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000740000000000000020b4fee05047444bbd624b6694f31978609ccc0aad8579e6a7e732a93312ffeea400000000000000080000000000000001000000000000000100000000000000209a303d17c754376e72aedeb219540e2551f42c963097b7ef6c47cb1fe2235569000000000000000100000000000000010000000000000020aacf2b76ea4eac79e74f530ccdd0f54011e33a44c7e2ca67ad669d151f9dcde50000000000000001000000000000000000000000000000208bde5c48b55cab6f217296064808204b3b7b41a448e1e3ec9ae08964318f7b9d000000000000000100000000000000010000000000000020931b47e9085f78c76f76bfd45042a40864032c034cd64037f0cb4b6796851d7800000000000000010000000000000000000000000000002024574aa82bf8ec3b44e1849da5148d23bab053d9bff40c5ddc7b2071c3d8f73900000000000000010000000000000000000000000000002006fb9b456514732ef9076cb25392986de54b2b38a966a623f9ebc1fc329cc83f0000000000000001000000000000000000000000000000206425ae75f76ebe765a7a87b28632e4224d5ea003e796c0b42c1473d11a54d3c10000000000000001000000000000000100000000000000201771e7da87c9f49bf2b828eeb8c5c23635d364b71c85fb1f553fab59ad60389c000000000000000100000000000000020000000000000002338848d185db2917039e939583adf3ab10aa2fb364f2980555f0deb9fa541cb50dcf4b1fa3fae62998099e9f9dcfea1e9f4190f5054f69bc6dcac9e9a652b225000000000000007400000000000000200936f421815fbdc630c2f2a116f428c09ebd29f7b28ac7fdaef251ae99369a980000000000000008000000000000000100000000000000010000000000000020430211c6da27c8fb6022fa53051c9456b0ac33da2400ef6c9cb42ad9c02e8f5b0000000000000001000000000000000100000000000000200c2be7d4f72ae0e55a9ef3d14e548fda7ad5be0e56af24fb6a45e915e063cb8400000000000000010000000000000000000000000000002048e9351092b901232234c716574abd44325fa64a373828a8fec262c79b574f2200000000000000010000000000000001000000000000002063d0ecd5c1963d7920940e930744fc1d01958b62b48a9e33ffef28ee23dcf1af000000000000000100000000000000000000000000000020ae62f340090ebd015e74a9e7493b89029a707704aea4f41c07cf692470d13964000000000000000100000000000000000000000000000020ab400ccce03f3e61702a05e5fd55ce57f28735c7c140db0359f56379e3e21e4e0000000000000001000000000000000000000000000000205d6731164ec288c8c3ab38553bad20d44625b6719d410b165a2823afc6413773000000000000000100000000000000010000000000000020e7d8a9722188772c9044aefe296f79f6643d35bce7522c9b4520185b518cc3e30000000000000011000000000000000200000000000000222d8a4f67f3ec6a6222e44aafc5a51f9e03835b7f3e522ae61122dc947a7c9441217b6f1cd269e9a46d4b7df8e15b08055f1da0c7256facce9177dd7dcb65af9e3f1dbeb76dfeee1eb616cb9addceb8c33c5a3c4d7445fe75e5de181f012e19620a984fecbf4ef89aab8467160df2bb9d8820ff57cf0cec83db3e7cc770ac59b4218cdcf0f0227d273793fc8209594c8d9c0e2687ee8f2855f3ee84603ad3d636303809064307b3a045699550618e9a8d4de9002cb3015dd9508df86ee822ffef06a455730a9e6d6c33154e9c48e1ba5bfe89ac0027bb99f83cafa0c13c05fccc200dbe12da8e94ae3a7f7554d659c3db5ec5d4c85e76926240cce2b86c41f0193cef6de2858d8968d1bdb9bc3ef316e43f508a090cd1fe593a7a6adb8572fa353f4716b994066761d183477ab21bfa247b32763275472504ed50f8c36128ef703c0f8d359f851be32eb9be3126f1280728c425f2a7f15fbd399bd4bc65931efc1f24f895490e605b0d773d8fc43c4a921c223db2bf1595eb9e390d5f0ac637c712a2abc96da1462b8c5b135e92624b7e15e13033a339d9162b32680fdf2c45481c1fb0eacad4e967e0ac6b214311f5fb1dc108b25df89fa73412f7d77968a1f4357191f9fc6b9332bfe13353a6ed09d8b779cfd2f0f3fcdc0c59a5305ae069bd341c3dffa8d98c128a85475fcf8249b7a85e99e9eea14a08be127e1627a8e0923e7456af3b18d84d3a85d406203e94b103a5c0dcfc4275b45a0d1c5fbbc1aa2111f09263e568599748a1b15ea50f75699d0dde57bae9436bdba162d0dd18dc643c7b9c93972b4b1fa46090c3be529c5d5c6c1e4190df0a09ef6d83611722ad872699bd093fa6c442b897626385f24871ed5e95b352622b7b1b0702cdecd53df925bb185e9b17b17659b7534f84e1b28c4c54489d4791ae2cca52387d33c00709016638d5d1a995fc0ac1e69958334a81a3d4c7a6c02a3e0b3f121c8eaf23a305180ec787d6198d8cf55994814ea4adc89c1bde97af4d1152fb466deeb7f2828d1906173631df7051a55e8fabaace6c82b967443d9683ae3396ea9d276423f7eb3bc7640c5efe0b5b89ff445adc27dedda738d9072bba133607546d2f59c4690310e53f13a5fc84098f83afbd618aef932b2f96b0e7f7627bc1735f53f472f5be28e81d7052bde6ed4e176dd4b543df7d1f309c2140ab3073c9d27b6c77f7668a3b5d26b2a9500823d68249cd452101da76bcb9022cffe6da0f8be9ff275e795f24c3317b74fb5e7965fdc72f95af9e5f740b46e516dd19f9bdc530ace6ae29960ced57834b9beb942503dbc660781ed9ceae4005e42884f3a7afc372db0e069f2fe3d0b161aee6430fca3fb34fb1646bd171bc48f757c65e3bb7916b78290f23052434d14c73a1793b63d257722dc368bdb0962ee72c320d5cb2d52656f21686180449079fdc5327519a9b9896e8a86a560a9381c77544583cfcabba96cca3d3390f84ab041ab10fa512148a80c36d73b9536b61be5522d391b54dd3e22ac9b600000000000000740000000000000020fb9e8f5396b5854c2b36a7d3d70649350640eeb9f326aa0a391fe02ddb1828140000000000000008000000000000000100000000000000010000000000000020d9d91943d121972eccab6741fd8878672adc2490d4c29227750d5f33b5d3d657000000000000000100000000000000010000000000000020eb0beee4b9d1f5fa626d12e63e200f8981516ac82bafdcc890bfec142e2e90b4000000000000000100000000000000000000000000000020b90a035968e02457add48da4dd44084cbfbb9f2d870006c1553016e8b15f3f5200000000000000010000000000000001000000000000002057f569b8685a794e6bf72dae6705d042346e7a75f926a40b116812912a12e193000000000000000100000000000000000000000000000020b752396143cf29a47e39c4ab7df5f9b4e7d73c25cd403a79186f82e055f2256700000000000000010000000000000000000000000000002036869ad71b96e7d6b83dde72e5c747be0620280c8eb77e84377b3c20bd0b7a360000000000000001000000000000000000000000000000203878b02c58a12d424b25b4ad5dcf47167832abce5e05dd55021016dca46e7301000000000000000100000000000000010000000000000020ac21ff28b032fa1ea86518ec8118a0d499d3406706aae9718010ff72125928b10000000000000057000000000000000200000000000000ae00a31cd9ef8679794deeb656fd6b01c97550149e556476b314244fb708d44fc33f5ce32610798686b21149a90294fe36acf6845db3e882688508e135f72bb03e032f9041ada05f5e85a98fb2f31708ef4a906717aaf6517f64b58e932c258ecf3cd06fbe525fa0a17a56704d0ce8f710d7b631e45e56a79c3477a259d3da71320fedd1486421dcd89c4fce7ebf732cac74d2037656cf977cf78bc8dfdcbbca0b30122eb79bde232763b03181408cd353ad749585b27d619ea1a1680d234435f60fa51669f4a9503b0d8f0879bd3fdf5e25d37853a8c0fc553c8dbb724faaf236305ae9960b56afc4f270f78642c020a1fc7320a8608bfcc65c9f757ab0550dcb0e397011c74e912743cb2a60b23f5cd69adac0a64277f48e9597784e8e56bb0d31c68fee38b16ed8bc34d59f4dc0a329876bd855c6d5048d0395b89e71a944f4071f3058e488d5c452f7d3e37b3cd030e3ff2a43430acdad52c8289bc7b1a74038e0cfa71b772a3bad082c1c84c32fcf3e476eb8c6422b6e46650851384e58c1239bf1bc76ac2cd59ed72371683010f473fbd3504f3604629de8cb0ae67844401c640e438953d32a6128dc8e97cfef0bae4ac5abba16f4b8fb4465e21987bbc1320bb8ae515ce02c1a33b13708f054c5ff5dee99797423b5e331955c8059553e0df44751aea31fd3e5cc4ec8f70fab3a22e8aa628fd8d565b5fb9b907fa6aac33a3a9b6796d060dc830276132cb1a7dd9601de0b435dc73aa470580781beaa3305c56498692f9f237cfd89ecd34e58228c44baf0c5ef31e0f4bcd8e57e4155ce23250905f211e44e8f0c4e5fdf78475364eef2482ba0ffb6d17cf47188b952fb1cdaf6fa0dee1bb170f3b1a02087b8acbd57a6b3ddabf964c7b03c7b7746ad062fb92d1dba597588cb3d87df5d5964a0b41d8970c78b0c5ae516645dab9e9ee51046d2e245a68a7734c27820a2a69b5f6e290f8b41c1ecc0b416cc8f5461611c2e9de194a3bf4babf833a75cd2bef7231dbfe43fc9d05273ade8630d5a191a7611621e6b5c40b45407cc58a32d4108dd0486b4bc3f7ca6a7eb44cddfa5e6e58b291567e732bc7a5bd90244d01dbad3af2debaa4ad52ab0ef9a025c7bc27d844b16ea9818cd4385a426fdbb2fe2452c50f45aeeb13422482bff2ad4713d827bb60d6b0783fdae63cb3d0b581094a6226b7ec688820dee895b36843ba3cc7395743294f87c02519c34c2f4a7ef6b59dd94a3801079fb5e6fc062a8f549338c6a8d03172593f467f2f83138b852e73eac19579a118e3c5bb5ac7767f945fe41eb433ce8da6c0b980d07cec747ad18c153e6caac876dccf1436f21c537a701be14be0f73bbe3c607bed8f61b999e84395c7eb60257c72dca8c5e5507de5df749984f308c441c39f8412709e466617bc6a3816c444134db826cbd4425528f08b667b20d42ab72de26ba3cce8a0018951ece796bc51de7dba7c4bc0ffa26e8d46ff98a32bd548d21d945c33175ffe76ae13186b6817b142da5345f89330a042b900677024d593e56c1a33008b2007ae99a085ef892fc8b40f9de90b6b5919f262fdfb13db2a6c1a93e5ccff74dff851665f7a129b39c70c8531a8ae2779f4dd9d020500b82be37b1c82ff02b7a0266900229dadadeeeb844e158d3918bd81bbeef5e75347d41c84e37d00fd485fd996ffdd6254767aa43c46ba04807a158d14110a18c398db71678e8efb0d9620c00d00ad146465aa9995866bc21d7bb388abaacd849067248e98717104f269df3ff2ff52eb9dbebef62b0e63cf9c171f862455327b81fc493705c8cae743eea3c041036165ed6aaec0e94cdc83ad1f35701a5603969203b6c8fa373518bc115c3fbefc9e9a14b9baced747f30e0c739d9eb5a9fc6981ed6e131cebf68453a932c14510e6fd9ecc96a50d56af6eee766512e3ae11f0b21291ece314097bac56cd3ebaef19026357d2eab33e2022cb1c6dfbec51ee0f61a3265f909bd095a24dfdc6595482f415b61e19c187ce07352a5340d26659b3525cd9a06f642f6a5db20239a6ab7d0bec6e4b75ff0d018a84687fcdfd99a64cc02fbfddd30b12ec2b85f4dfbea68ec46845c361467d670096adfa267bffc08073d040222cf4ed13d47a0b204159713b99dea62e7a17689122e4d8e854003f7fa0eebf551f375e9cd99dc85eb940c9d6095cd0e660730302f165e2c06bfec282331140aae0c8a163266237a146bf3629f8c798a96021cc8ec82cf04e64013d7de00a31cd9ef8679794deeb656fd6b01c97550149e556476b314244fb708d44fc33f5ce32610798686b21149a90294fe36acf6845db3e882688508e135f72bb03e032f9041ada05f5e85a98fb2f31708ef4a906717aaf6517f64b58e932c258ecf3cd06fbe525fa0a17a56704d0ce8f710d7b631e45e56a79c3477a259d3da71320fedd1486421dcd89c4fce7ebf732cac74d2037656cf977cf78bc8dfdcbbca0b30122eb79bde232763b03181408cd353ad749585b27d619ea1a1680d234435f60fa51669f4a9503b0d8f0879bd3fdf5e25d37853a8c0fc553c8dbb724faaf236305ae9960b56afc4f270f78642c020a1fc7320a8608bfcc65c9f757ab0550dcb0e397011c74e912743cb2a60b23f5cd69adac0a64277f48e9597784e8e56bb0d31c68fee38b16ed8bc34d59f4dc0a329876bd855c6d5048d0395b89e71a944f4071f3058e488d5c452f7d3e37b3cd030e3ff2a43430acdad52c8289bc7b1a74038e0cfa71b772a3bad082c1c84c32fcf3e476eb8c6422b6e46650851384e58c1239bf1bc76ac2cd59ed72371683010f473fbd3504f3604629de8cb0ae67844401c640e438953d32a6128dc8e97cfef0bae4ac5abba16f4b8fb4465e21987bbc1320bb8ae515ce02c1a33b13708f054c5ff5dee99797423b5e331955c8059553e0df44751aea31fd3e5cc4ec8f70fab3a22e8aa628fd8d565b5fb9b907fa6aac33a3a9b6796d060dc830276132cb1a7dd9601de0b435dc73aa470580781beaa3305c56498692f9f237cfd89ecd34e58228c44baf0c5ef31e0f4bcd8e57e4155ce23250905f211e44e8f0c4e5fdf78475364eef2482ba0ffb6d17cf47188b952fb1cdaf6fa0dee1bb170f3b1a02087b8acbd57a6b3ddabf964c7b03c7b7746ad062fb92d1dba597588cb3d87df5d5964a0b41d8970c78b0c5ae516645dab9e9ee51046d2e245a68a7734c27820a2a69b5f6e290f8b41c1ecc0b416cc8f5461611c2e9de194a3bf4babf833a75cd2bef7231dbfe43fc9d05273ade8630d5a191a7611621e6b5c40b45407cc58a32d4108dd0486b4bc3f7ca6a7eb44cddfa5e6e58b291567e732bc7a5bd90244d01dbad3af2debaa4ad52ab0ef9a025c7bc27d844b16ea9818cd4385a426fdbb2fe2452c50f45aeeb13422482bff2ad4713d827bb60d6b0783fdae63cb3d0b581094a6226b7ec688820dee895b36843ba3cc7395743294f87c02519c34c2f4a7ef6b59dd94a3801079fb5e6fc062a8f549338c6a8d03172593f467f2f83138b852e73eac19579a118e3c5bb5ac7767f945fe41eb433ce8da6c0b980d07cec747ad18c153e6caac876dccf1436f21c537a701be14be0f73bbe3c607bed8f61b999e84395c7eb60257c72dca8c5e5507de5df749984f308c441c39f8412709e466617bc6a3816c444134db826cbd4425528f08b667b20d42ab72de26ba3cce8a0018951ece796bc51de7dba7c4bc0ffa26e8d46ff98a32bd548d21d945c33175ffe76ae13186b6817b142da5345f89330a042b900677024d593e56c1a33008b2007ae99a085ef892fc8b40f9de90b6b5919f262fdfb13db2a6c1a93e5ccff74dff851665f7a129b39c70c8531a8ae2779f4dd9d020500b82be37b1c82ff02b7a0266900229dadadeeeb844e158d3918bd81bbeef5e75347d41c84e37d00fd485fd996ffdd6254767aa43c46ba04807a158d14110a18c398db71678e8efb0d9620c00d00ad146465aa9995866bc21d7bb388abaacd849067248e98717104f269df3ff2ff52eb9dbebef62b0e63cf9c171f862455327b81fc493705c8cae743eea3c041036165ed6aaec0e94cdc83ad1f35701a5603969203b6c8fa373518bc115c3fbefc9e9a14b9baced747f30e0c739d9eb5a9fc6981ed6e131cebf68453a932c14510e6fd9ecc96a50d56af6eee766512e3ae11f0b21291ece314097bac56cd3ebaef19026357d2eab33e2022cb1c6dfbec51ee0f61a3265f909bd095a24dfdc6595482f415b61e19c187ce07352a5340d26659b3525cd9a06f642f6a5db20239a6ab7d0bec6e4b75ff0d018a84687fcdfd99a64cc02fbfddd30b12ec2b85f4dfbea68ec46845c361467d670096adfa267bffc08073d040222cf4ed13d47a0b204159713b99dea62e7a17689122e4d8e854003f7fa0eebf551f375e9cd99dc85eb940c9d6095cd0e660730302f165e2c06bfec282331140aae0c8a163266237a146bf3629f8c798a96021cc8ec82cf04e64013d7de00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000740000000000000020c886a02ce0b1a42230f846472ad618acf67e18a26c53eba10603f862885b44fa00000000000000080000000000000001000000000000000100000000000000206b905061bc467a643fe6aaaf90a4719f629c6c1ce36c4db775a187b734ee3e26000000000000000100000000000000010000000000000020d865c771082ae77f271b5ba189da9ff8294881c2690e8ba4a5e607c9c79ea513000000000000000100000000000000000000000000000020d4f4183ad64679e6c1d6166902b51d87d4a8e88fbe20edf63a311d8a2edfef1700000000000000010000000000000001000000000000002017315022099b9673e25e7b642b00b0c071d2f2dfc7a84c84cfce7a1205c55e3300000000000000010000000000000000000000000000002016f995263fe25ba1a24094cafd76adcddda2e90fdc2488cf213d6b83581da5be0000000000000001000000000000000000000000000000200c6406fb44f3d9fb3674e5859244f053352c3c19d290abf0ff0aea016523b79b000000000000000100000000000000000000000000000020377664f85fdc53ab2138c7efea5466c1b4c26af47067249719669094db0ef9b8000000000000000100000000000000010000000000000020889d96eed54e3fb71064cd5c8eb8574adfe592d2f8f041b8b296b52d068366ae000000000000000229db7dc4805d2b0b92696fe537a614e28b1532fb87c48f6ecce635c8f22ec1eb3f9a5da4b55d972b9670fca0b19095298748c01f16592999e077b3463ae242e9000000000000007400000000000000206e0c1b5988657a47d854922c73ab64c2d88286f5ac575e36076636d612f0679f0000000000000007000000000000000100000000000000010000000000000020b8bb1e9c6a9d5189208ac7951117e3d466e82fd5cecdf878ce0c3bd370fa5d61000000000000000100000000000000010000000000000020c571f2053d8dad590f6e1a5cf4ad2c7974f41618da428146d2b5d564f56fb59a00000000000000010000000000000000000000000000002029cfe2b0983de20522f0f48d0c3661a83f14088e044f25cf4b6e52509fec20670000000000000001000000000000000100000000000000204de494529bf76b7d4a19ad8d1eaf61a104b2a01b47d3e72d776be35e6548645b000000000000000100000000000000000000000000000020f906d68b1aec4751eff22ca27a9cc9fbadf4525a8d8effd6375c69c1662a7346000000000000000100000000000000000000000000000020bd8c7b1541154d14a01cac621cb9c623c242699a1c501d586184e064c196ea15000000000000000100000000000000000000000000000020a126f3646f80e408f6d39b5c8b9c4457e6568f1c19c63999024c6b6ecb595a0b00000000000000023b6a592dca4110dcbf18c8e3e18703492337c2febe7096ab57cf21dd19da2f790181bbf4707605f90ddc398ba76d87b4d06085d30a87899bce0b2013850b4fdb00000000000000340000000000000020b239bb3b8a9af14b51206f5a61b7406dbd91d16fdeabe67ef94603a03c690284000000000000000600000000000000010000000000000001000000000000002060ed2c61f28a56b71f35ccaa3f17636dbdd460260ac6ef6a9103c4535805553300000000000000010000000000000001000000000000002003bc4d50f5383367347b9a263f1ed60addad3a26e3bcd1fe1465c643bb90d29c0000000000000001000000000000000000000000000000208ddef0faa0daec8c98ed9ba8d478d448eff835b4488789c072d0c0896c5c4381000000000000000100000000000000010000000000000020fcb85e65db7fda24fb300e5ad9fcb85af686c7359de303c1d88a994cd572655b000000000000000100000000000000000000000000000020e9e37a167a594ee64fd27363c92a7b3c617cdb53cf45baf4574bc4a929f0894e0000000000000001000000000000000000000000000000209c02282607533e844a93303c03ae12d0d43008aa930b062a6becd16e89c3e45d0000000000000002124ced84ac08082755b587958551214ef10d8f31cc09bc3f9a7fea8da448e5bb07a5db6570677518205dd47a6175567146e49539970b0774af3604718ebcd661000000000000001400000000000000208335e799c46b6700689448cda83d01521acffd0f69339ee0e32d3ef0c1128cf900000000000000050000000000000001000000000000000100000000000000204ff9d5c76c7f79b1662b96383f2312086278edce57252eb6f928e3294ee52a89000000000000000100000000000000010000000000000020509e9b3257167027fd76f4e66edfc25b3cb55299c0041ce1ba5b37075d575afa00000000000000010000000000000000000000000000002095d22b5f2fd98fcc3ac947e6cd3f8fb1eb796542c29da1d61f9a94faaa30bb07000000000000000100000000000000010000000000000020df656e977eb1939832c5ea2c2c07badeba547a98fa51a33c0e7d1466e571efc5000000000000000100000000000000000000000000000020b932f3c246cd3b0c593eb7bfe0e802e2e4a22cb9ad7419a8a5875902080922f400000000000000023e9ff3dd32b280da4d7c2e815e47d3734c7828256a27027501b04a030716761d16090bb88253b7ffd10e2b4852d4309897b120b57d8148c6e85741cfa0e3b1690000000000000004000000000000002041cb30eaac493f7a017e8093333df561794d1d992f410c6672b0b50e970e33430000000000000004000000000000000100000000000000010000000000000020c92942cb91e43281f116df073a71352217fcf571950c0b96bebd9b66c5fef089000000000000000100000000000000010000000000000020ee6b79db8cd1b886678cf6cf570d3bddc54646b7b98d677f8f846588bd255fe30000000000000001000000000000000000000000000000209d3cea8f53e32bc43e0faaf664dff5c97c168d5a93812d9d63bd61f6366adcd3000000000000000100000000000000010000000000000020bdc9ea634ff8af88ebc50a2bfdeeba9bcfbd1c83eb5a5c9bc5992d98fd45c2c50000000000000002199e2c89359b3a68d097cf17bb420ca753f42a5e031022f4373ae8a247b0da053c252afb43ccaa1df4aee45dfe96badd5dc4fe26b140cabdbfb57c2887be5b7f00000000000000040000000000000020cd1905b3241dc994698b46bc66f993123f6e340863b7029b42ce123c35f36eb80000000000000003000000000000000100000000000000010000000000000020a4e99c071f6fedf7fdf99893104789bdc90f00a4a297e805fcc4a01e6baea38b000000000000000100000000000000010000000000000020d13dea1b4c0f8a3195779df2a2ab635e876cd2f3b027e30fe6313ff388e41a33000000000000000100000000000000000000000000000020ef4ffa2e890f9abc61365c1e17c2c3cd7eabaa707b8311cbb6cf8bf252147347000000000000000218104a25a106adadd213932c8760a06e824d8a4290c590cce81159217e74c88a158fa46e35b509c3c4caee3df0d2ed7f230c1e2db24f0064f42fcac3b9afff1900000000000000000000000000000020a14856a12d1efa640085deb279b1b28d8fa5be5903da7519621dcb57ea08b6c30000000000000002000000000000000100000000000000010000000000000020dd2475d029077edb40a739e0d85c58c6f2a53f145212504d0bff0dafbf2b1495000000000000000100000000000000010000000000000020c6f9b4470600d458d6def8c86576c9596a8590c97712a75719e7f38a781367e000000000000000021ffa1fa255f257b90ed1bb3156fe68af140ee18fdda869caa661f0650a86cb4612b610b6d80a222a0dfeb606dca78bc77869c6371fc295b3dbd058bd2cf90b290000000000000000000000000000002079547b3ab2426744532fdf65964f9841d2fb782e1adf6e22553fa7d31fedddfd0000000000000001000000000000000100000000000000010000000000000020286c7b37cc723e2a5ddbbcbd375d9724915e3dffd7ed4124cacdcea5ef8e695300000000000000023addd5ba8c048962c2991e76c1f2c1b34c507e230df69e9906204f502b1f085733c1f762186586bec55946a7a6175cec17d2e7eb20c52fc64f9ebf3f9570f4c6000000000000000400000000000000810000000000000020dbb8ea2962827e315875cbaefd8e8d62374c60969a60df024204e4ee37628693000000000000000800000000000000010000000000000000000000000000002091908d5346373f0c53a41d8edc1011c2dbbf277adc829dd5899d38273e3a8a5500000000000000010000000000000001000000000000002047e156be75872a9aad972ae904b2fa3dbfa5ce37826776d9de1a6fcaf671faf300000000000000010000000000000001000000000000002003643d7c7ea301101055063ee03c9945711b1e3263ee22f31f3313850155bee8000000000000000100000000000000010000000000000020a3408dcbb5f470570794d34b2d5ef959788ec3c27b208a608820715e8a8b6ad40000000000000001000000000000000100000000000000204ea31f4bb2ff88535a0a01648c65e8f297b9215c8753995f11d88a4e6cc2fc950000000000000001000000000000000100000000000000207696a8c9d2a54d8dac8837114c140c4df782c34fd033f983d078e458d68563e500000000000000010000000000000001000000000000002032cd53e3062b1047d2b1cdea5f1e708b98c7f9086373dbfd4d59a6e5279cbefd0000000000000001000000000000000000000000000000201f9c27080e94c09e72cd023f1517ce08841d10495871c080af1b53757b17b9a900000000000000140000000000000002000000000000002833837aba9b56e1f6725ebb631f9156b5a7e14660c80a8e72c239b8280a0415803a13f20b3e8a6bb43f1927b71d7921f045ba4bd0160dd14bf5a4c7a9483470ac25117b62cd03ffad5946b82c845c50c5e08f4d4e92ad50df189126e5bf0b87f805214d99150e6ffc5bc55ef27d411a0f347740a1efd0f2c7397d7a89a17cb4b03e0f31dc35d78d6ea3ddc02ee7b8b48686675588964cff675fb3ccec0e73e39e04536a2f0e0710c986bdeca6717e4224bb60a9e3fe75b5ca8fe913c098b516743f34e9a1b53a345a8318c30d8e9576d60cd0c09a3d77337b6e119923ad92a1aa25cf1843dbd8eae6254a38554a9d4cb605a6dbe403de95bf631ffaf3ffb0af971dd5a4ea35a96fb3d30573b72b7748df18d10f88833dd462758664751e8454eb07c11054c0ac217369b224acd2e03c12cce89c037c4875867b1e3afc34dcb9e20297826b94a01cd9a3cd02be9c14967ae7092b991f2c6b05b3ff7c29c2f716173ddeb703ae0bfaf6d6e2c6f6ba15a125f963319349c8a9dae750503435c7919e3d34f30c09d6a5a89a76452b1d67b4b44ab31a2f941e9cc03f08672cd0f4f7f3370a317286256bf9fd7cdf604c70b4025d977a92f05d4dacbcd74b7b74ab5ebb2c79e42884b9c9063615c15b48dc09896c0a2e64b27f1b356032f16b45004e0e0d8b2fdd7e53597ae7addc20cdf3ac00f8940a080a47b2c4d165b6a46a4862470c722b37a861f00e1602e25d5a681ee42ad29c5a460de324fdcee763e2ff464a2ce2a8dec6d75ea35af35f93e666a501c4fb3de7b9d952ce99cfc3e07d1612a01fce18fcec2be372a52b921d6b451806d0da23f4560513b33ab3ab1d9973d75a21838d62d795b6f532f3979ba8421c2f84049cc2f66ee3108eb56cd95868adbf34dd2aae8f687ffc84398270a13ff4245c8b568c257e8b6b1a223d2fdad6b0430e0dabc58893816be67329931b1043e077756aa729840a05431b8b1f87085e381ec70d83727574eecef38043d15d66a8049dcd7564ada67ac40c28f58d105a4036c3ca15c956a90e71776d344345aa6dfebec672a06686fb29eeff891dee631e0c366495c972f6de424f8e767e5d06b2de9c8ddf5d2bac672172bde1861a2cce19769982562543cc448e7535285d7d3e1f2164bc77b613930ad7da206620611b3b74ea1afe8bced47a4e81b8fa338b1c78bfe877a00eb825a2f07802457c42e235a01ad5443ff59a08e7cea234ed995d8159a7213705de07e7be27282897c5543338d07d8a6c75926988649cab2cdd051edf3483daae45451cae9183d5e9829a072f70a44c493d5d01c9515b561f9fce2842ef76adc47da6afdee7b866e11d6b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810000000000000020b4fee05047444bbd624b6694f31978609ccc0aad8579e6a7e732a93312ffeea40000000000000008000000000000000100000000000000000000000000000020138df3726aa5cf0aa758ae44e0eadb6db34dccd0b2e19046e7b612fee12a1a7a000000000000000100000000000000010000000000000020d3f4503159da66de53e13769905ce4a641fc5c55706101a004fe24a85cb7edfa000000000000000100000000000000010000000000000020f6c10c247ed2ab5c3c800e8f2fd735863513049cac777d5f789f375014f461a7000000000000000100000000000000010000000000000020c68a3d6334f38966eae5ee24ff22d806ebb0001f5c9f1b750cfb6c6a298a5460000000000000000100000000000000010000000000000020085d0d7374660c65c8f800d2a7e53f496a1c0ad21258cef14950e3a357f16ba2000000000000000100000000000000010000000000000020bfcfa1f9273cc6d6ca3e031dc6b4cefe6da85bfbc58ab2f86da182dfc091865f00000000000000010000000000000001000000000000002086794b33c111f3af6f961039a61b5e33201e370bb9776da8bbd0d8cb337139400000000000000001000000000000000000000000000000208cdc1c424315ba0501714d8c40d461b9eef5fd43a5c0926f469c01fa1ecf1869000000000000000100000000000000020000000000000002226c925f963d53e585350ac779204adb1448c3b87ae09591fbf89f82e32b5353234364f7b4b404f98d4f1b1e2e8de44fc70cd0dbcf451fbb33fefcc6dec95926000000000000008100000000000000200936f421815fbdc630c2f2a116f428c09ebd29f7b28ac7fdaef251ae99369a98000000000000000800000000000000010000000000000000000000000000002080a44365cc8381d2fb7ffab94ce49c142e7c3fcd9412ee121f5caa45f23543200000000000000001000000000000000100000000000000202daa4ad4ef63ad41d87609b155ff21f8a8905732ac79b8756ec37988a73dedd8000000000000000100000000000000010000000000000020b557e8f2ea2cc5f00ff17397454b4671fd0781ec67b994b3ab92a1f7cf8189ef0000000000000001000000000000000100000000000000203f84350dfbc3e135a6c910fb2be99bb16d7cfaf5840e02ae809e5481eabb80d7000000000000000100000000000000010000000000000020c6e1f7dbe2ecee68565b7a9fe85137ab8059a7b3e076ec62d8bbeb835006c6ed000000000000000100000000000000010000000000000020138121e6b66e1cd2568d19dd7cecc6f4537475d41febd2ee69dc1abc5b13e353000000000000000100000000000000010000000000000020194704c07cae0cf77fec9914981b9f8a73e736dc7444d72faadb1069b3efece10000000000000001000000000000000000000000000000207d256f025560b717115e75b83ce24aafe2679823be032ad47e11f64ef964e0980000000000000011000000000000000200000000000000220f641cf2d2bedae213c681d701cd919e24586adc43b791589340958a2b4ae13528104b20081006ea6f8aeb9303d9df5182c0a9f9dec3ba66fbad70a91bd3dfa916b6b9269e77dc2ae91d106d805fa7b4fa9e9f0758431fd33311967edb7ddcc40de752bb671a3ee82ff088bf2167efbc05c39e109f43951056d0f025aede3b522c647a0854a548182b4587e8eb053b34c8a767766e4b48089b38f6ac69eabb9c06294ecb53cb68974ee48c9d98a1e7f03a00bf3a1c7eafd170aa37e45461de143aac9f2461ede5a08ef5c5efde25ddca4d315ddaddacfec3bb1fbbfce66996cb02c373303ff7c9881a8925cc6527387a35611dd9bb97a1ba4c6633fde593782c0583abeb18cf4f69a15e8a7685c91006c3a884f7fea3621c972f904e873653cd37cfb0e37089117a3d974b15a319ce136b0a304053fe0111e3f4cf37480ff9091c2d9f7e759482647b7d7543086d4f5a0964b5627ecfd05e473e4c33ca8197f01156bdfdd9c4dcca36b816d3d5bf44c4e9ef6738cd421a069183d4e47600aaaa20b598126506e9f55b1b4758bb27cd028a7c744dfc5229ad1943cb4c615e2ce416f34a76544ed1c5e1da48fd05a345611f757caf0c77542cf7d540d8ebed983e3d03ac3ff2912e9e935d99d5804d6a0f8101ab9acbeb27fd6df43f3e28f819311c348cd599752d8baf3c28960a2992c310109aea45d5d86957072a985e4fc6f03d1e1fd82ccbd43e4577205e6958a3e367f4c04875b05d32e732bde71b4104832f9be40c628ccf92c4355042a805a4ef286f80b4b472a54c44eb39dda9d14e7725c4dad26c64cb63160741edd5d466d5ac20e689bf70422347484df6b7c5410e0c999095d809728a0d6fc35aa109d366aa8e8cabd8c92de321425a55e3f5c36c12ba3efe06b281f975b979db31d20f507dcd71c0c3d56ed081101d3d1095dcbb14fa1f14bf9d7e0cd4508997dd31311715d33077b3fed29901a07d641fe87d3907ede550c7ace8ae36e27412c039a7c3d79ece2c3d9d370a84c62f0a14f8dff33bdf914a14737cf95fb591069a4f5850392b486aee453824b5d69dee1a8bc2343c0fd252019d9f13d225ef792eb0bf0301ec8cd9b7877896a4c0a7729c4df1a32840d896a984ab56ef1269d1483042e516094860a675462506eaa08ca40c3ffe20037da207eed1340caa23e5023fa9c7fca3e40d576047a37c1da39cce7e9de319e2fc7551b69e872b836a5f174e6f47a04ab57c5d53a789d6a7dd7f460d1ae9192f8549546b11dc544f040258f5231b609bd7627466ed43c7007b280f6c36170c519f3ed74703569c5d46a67a7e2677994e4093e85351da804d440865a96cec1efb17cc1c08015385556046275664ebf40e4df66d162c7b905562c6b2c86b49361751cac239a7a2e6b14cdd4ec49439568a121f2d4bec65e0641848623144ec38c88ad81a0b961e108e73d3ce0fddc150e48a4dc78b992ba8eceba348bf127f3c5ce548c852d29a17e1910689e1b0407d422f24739e4e578d0a8799425a74cb00000000000000810000000000000020fb9e8f5396b5854c2b36a7d3d70649350640eeb9f326aa0a391fe02ddb1828140000000000000008000000000000000100000000000000000000000000000020863f7951bbc97701f46f4609cd30d82a2fd46668c2cb7f0d7ddb8fef418bd1e1000000000000000100000000000000010000000000000020856f231d6cd94113f9815ecfdfcfba136ff5829aa81b776428cfe35dcc95a7e0000000000000000100000000000000010000000000000020e1521f7162fc7d0cb3e02a6e1591ffe393782317bab7c681df6f461b3845277900000000000000010000000000000001000000000000002082d78b1fb73679d8df532ed4ca6fc196ce6d8ba57bee3f63b888d9476ab270be00000000000000010000000000000001000000000000002006bcd68698123e511a8660d27edf44b3bd03afa1f584198c0d441025017895400000000000000001000000000000000100000000000000208928962dd0a2a2f196c579708750f44df36b42ccc291131d26b7e2e4ca999137000000000000000100000000000000010000000000000020d717a48d6274296f9e62dcf37f1bde6ef06aa003302664ca89b0749af03675140000000000000001000000000000000000000000000000209e5639be8311672dd7887027f19f5d77a809ea81bd860f171da4c6ac0d74dcba0000000000000057000000000000000200000000000000ae25fa6c3b3589127df0293ce4dcf4525cbe339710dbacadaaa517bd42d9e419c01a0593c4ca76ed820fd6c31b230bada3641301eb2da04b70f41573aa261be6413de41d280bad5c75b0ce307850c59bcf7274c15c37c5721e071c5074417480be021be2d7f452a38a4f31cf87af3a6430afd1d79fd18786fd9210e078be8b7f43357491c83a62ce4c7406f25993dc0b0cb32d62dcf1a75627bed8ce91474683b20a8b6e37c59d31b38bf90da66c23f4f36f19361f17a5a2f3da54625bb8b97c4f0b46d8e923ee077e4422bbbfe34c373ef6c88a609310ca58558745226460927634b92716dc11f881bbdd44401cb3c8c12b7e0e9b763c2ec343a5ebca9b9f6d8b38623c8db3a6257754adaabf707d143ad1eab3e2df53f3b9aba459abf5e2dc4e079dc3724c59da88ab5255408f82ebc5505be51929f90561ed88d7410a1d23b319eb2ec4823ebb54a76455bd32716525907b1f7e376fde31f580fca7cd6e4d822614d13b7dc144ab589baa42cd8e9ada91cb797dd1dd1ae9a3ac34453291b27f0197e9d68b39a8a744f5acb1fc36f9bb8dda6b7f029564c2992a8d6d032783883e68162974c65758bb0a534e03c90644946c2d7d06b794590002a37ffcd87c7907f79130b8204b4458cc5f79ed12e0a9c544197b0ceaf7ccfdd4c3210fc591a838086ecf47dfb4bba733a08612ed1f565d027f80fc62014e9b586dcbf03a6e5927d5d5f398a17855bbfddd61a15e6350da547f674096d700f527cfa54edbd848182a2a0c675e87aa4402229e5ea19caf47f21994c8b6221aa4056147b12427b9072d2dc1fb2759acabf552e826d7f093dcd2b210270b47b1fe3f7b738a4b396538d2d23e04d8a653540aad17d9280f6c4573e6ebe241b1699aedb57975b4c69c23e1e4c9e7c4c05f5bca9e88c237b2e3501d7a50c3386679f73d6941b3781ef91c1e1b36183b3fa0a43561773dc84d1cd2291eab461492a1a1efc7ab4c87e108336977f186d7c1dccaf518abcb167e704c06319bbd800e2aa1d8ac6e81589adb0c96880e79283e23350ae75434e9818fd64067604bcceaf0f754847e7ea76526010f57b7a236c94ff6c97b5af7707830f304941a8e4c6266c4869a7486bb06433ef0a8485dc936b0093684a5088f87cf2f4204e17b0096b4d4a696787944f9be054cb6962b11ee8fd1ef68c6d53258f4bf16e484c77dec01d6a10446a1a71f4f3ab34969d4ee11702e1097392acda70b632fb47741cf0d19c28c2ca65e58e0b21a7f90eed759a8cf19ad0be229fbbcc7bb727697e5759c093125156128439c8b25806f1128a65730e652f41dd604433866d4226423d75d1268081b8bd7bc6376047dd4aa34c04c0b80613b6ad1eaafe664af1eff68b219f6c35f090bc9520eb53b822b55cb3fb3f47f9ec4952e155019bd9779fca09adf24d5ce27e136adf14c1675275307c17c3981e6291619956f7ff76b9afd0b7a81d1d0db2d3aee9a4989298ad8acf83e83c67e19d6e9e66a90802adafdfefdd27749c85203b21165b6783049c49f26c76d1f897ecd6e7feb2d7fb2d36df530178ffd7b1ab139a9036fac0fb63b60d93892e0768132918014d2806f732b06d935691e1e127fb356fc90553170d71bc1e5219daf7a03287f97e37e174d5ad5d48ee4a09bfde3594d112e590e8f28e43e1ade625085fcd780681c820af93e2634be147afd2f4d93b2eed1a83734338ac979a8146d620fca7df771760daefb390ae38bd0406dddf78155e7ba08cbcc75368657eb929df03582088e8a14979dc2fe696d4b58bf52f57eaa1847140501b5ef60486622ea4ef475d5374dbb50842d113dd6a2dd70922186ad869e2bfafe4a109fb799dd15b10b8a2ac8b266f614cef80f2278bbbc9ecb795279632419088dace169feae938ac64d2a1484864bfbe54ce83812ba05a9baa163a1151be6f772531e9601516c7539b2d5eb7b9bfa9d16bc64c108df2787325e9c5eec347d2ac4606711f968e1b5df81d266965aeeb9826def26266fc1eecb26f225670b82d53b9f98ee06971e4a207e2d9969c757df799b5dd2f5296b4221d90dda9a0671d5d5e20359df0c688d5d891c00ef3d8f3b9c0077da51ca14e643c2babaff398e2a2a1dfca620f39772a276e3ff10e4b75d6008d51ec9cf184aa93d45450220392d2d6a10c15b3e0ac2d3ad8c04ac33cc2a0c02574398f2687f52cda5a6fb1fc6d2d295ef3ea4c1f53d2c5273fb53ee7a6ef006f5b582a6c4b19a325a590625fa6c3b3589127df0293ce4dcf4525cbe339710dbacadaaa517bd42d9e419c01a0593c4ca76ed820fd6c31b230bada3641301eb2da04b70f41573aa261be6413de41d280bad5c75b0ce307850c59bcf7274c15c37c5721e071c5074417480be021be2d7f452a38a4f31cf87af3a6430afd1d79fd18786fd9210e078be8b7f43357491c83a62ce4c7406f25993dc0b0cb32d62dcf1a75627bed8ce91474683b20a8b6e37c59d31b38bf90da66c23f4f36f19361f17a5a2f3da54625bb8b97c4f0b46d8e923ee077e4422bbbfe34c373ef6c88a609310ca58558745226460927634b92716dc11f881bbdd44401cb3c8c12b7e0e9b763c2ec343a5ebca9b9f6d8b38623c8db3a6257754adaabf707d143ad1eab3e2df53f3b9aba459abf5e2dc4e079dc3724c59da88ab5255408f82ebc5505be51929f90561ed88d7410a1d23b319eb2ec4823ebb54a76455bd32716525907b1f7e376fde31f580fca7cd6e4d822614d13b7dc144ab589baa42cd8e9ada91cb797dd1dd1ae9a3ac34453291b27f0197e9d68b39a8a744f5acb1fc36f9bb8dda6b7f029564c2992a8d6d032783883e68162974c65758bb0a534e03c90644946c2d7d06b794590002a37ffcd87c7907f79130b8204b4458cc5f79ed12e0a9c544197b0ceaf7ccfdd4c3210fc591a838086ecf47dfb4bba733a08612ed1f565d027f80fc62014e9b586dcbf03a6e5927d5d5f398a17855bbfddd61a15e6350da547f674096d700f527cfa54edbd848182a2a0c675e87aa4402229e5ea19caf47f21994c8b6221aa4056147b12427b9072d2dc1fb2759acabf552e826d7f093dcd2b210270b47b1fe3f7b738a4b396538d2d23e04d8a653540aad17d9280f6c4573e6ebe241b1699aedb57975b4c69c23e1e4c9e7c4c05f5bca9e88c237b2e3501d7a50c3386679f73d6941b3781ef91c1e1b36183b3fa0a43561773dc84d1cd2291eab461492a1a1efc7ab4c87e108336977f186d7c1dccaf518abcb167e704c06319bbd800e2aa1d8ac6e81589adb0c96880e79283e23350ae75434e9818fd64067604bcceaf0f754847e7ea76526010f57b7a236c94ff6c97b5af7707830f304941a8e4c6266c4869a7486bb06433ef0a8485dc936b0093684a5088f87cf2f4204e17b0096b4d4a696787944f9be054cb6962b11ee8fd1ef68c6d53258f4bf16e484c77dec01d6a10446a1a71f4f3ab34969d4ee11702e1097392acda70b632fb47741cf0d19c28c2ca65e58e0b21a7f90eed759a8cf19ad0be229fbbcc7bb727697e5759c093125156128439c8b25806f1128a65730e652f41dd604433866d4226423d75d1268081b8bd7bc6376047dd4aa34c04c0b80613b6ad1eaafe664af1eff68b219f6c35f090bc9520eb53b822b55cb3fb3f47f9ec4952e155019bd9779fca09adf24d5ce27e136adf14c1675275307c17c3981e6291619956f7ff76b9afd0b7a81d1d0db2d3aee9a4989298ad8acf83e83c67e19d6e9e66a90802adafdfefdd27749c85203b21165b6783049c49f26c76d1f897ecd6e7feb2d7fb2d36df530178ffd7b1ab139a9036fac0fb63b60d93892e0768132918014d2806f732b06d935691e1e127fb356fc90553170d71bc1e5219daf7a03287f97e37e174d5ad5d48ee4a09bfde3594d112e590e8f28e43e1ade625085fcd780681c820af93e2634be147afd2f4d93b2eed1a83734338ac979a8146d620fca7df771760daefb390ae38bd0406dddf78155e7ba08cbcc75368657eb929df03582088e8a14979dc2fe696d4b58bf52f57eaa1847140501b5ef60486622ea4ef475d5374dbb50842d113dd6a2dd70922186ad869e2bfafe4a109fb799dd15b10b8a2ac8b266f614cef80f2278bbbc9ecb795279632419088dace169feae938ac64d2a1484864bfbe54ce83812ba05a9baa163a1151be6f772531e9601516c7539b2d5eb7b9bfa9d16bc64c108df2787325e9c5eec347d2ac4606711f968e1b5df81d266965aeeb9826def26266fc1eecb26f225670b82d53b9f98ee06971e4a207e2d9969c757df799b5dd2f5296b4221d90dda9a0671d5d5e20359df0c688d5d891c00ef3d8f3b9c0077da51ca14e643c2babaff398e2a2a1dfca620f39772a276e3ff10e4b75d6008d51ec9cf184aa93d45450220392d2d6a10c15b3e0ac2d3ad8c04ac33cc2a0c02574398f2687f52cda5a6fb1fc6d2d295ef3ea4c1f53d2c5273fb53ee7a6ef006f5b582a6c4b19a325a590600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000810000000000000020c886a02ce0b1a42230f846472ad618acf67e18a26c53eba10603f862885b44fa000000000000000800000000000000010000000000000000000000000000002061fc5d6f0ae8787d834ee53243ac046f57048a9893f260f54f2814516e236ed8000000000000000100000000000000010000000000000020f3468629a9e4f1f57e784e3280bba2c1f6f3a759e8c653d5fd68bed2b9029a33000000000000000100000000000000010000000000000020ef4539106a242faba2f9d42edaa7083f6bc18c0d8bf8a8311508599582616fcc00000000000000010000000000000001000000000000002071b93b89fbcb6acd284d6495245079da7c1c40a9f54674fa5f02c2c9749d9bcd000000000000000100000000000000010000000000000020ba41d5f4735301927dac23573aadec2ed05ecb9a6807060540379d04beb37b260000000000000001000000000000000100000000000000201884c4807c21819d60a8d145aa2ff93342a5d611d2a8b4bd00b022106a6eaecf000000000000000100000000000000010000000000000020e5ebe0ce86f35d9af4750c9cb9253a18347b71cd84709d49174f6da7df993b3d0000000000000001000000000000000000000000000000202b05687796b6965770201d9a4960870a1ad9aaa7169bb072cb1b96830926d05000000000000000021de3f3fa49b8a41bbe6cdd8cf55d0ab3ee270420ffb107b755cf9ae214d1dd0d13a45b786508eb9fd300066c25a805d53ef00a90115db95d12623fcf88236d4d000000000000000100000000000000206e0c1b5988657a47d854922c73ab64c2d88286f5ac575e36076636d612f0679f0000000000000007000000000000000100000000000000000000000000000020804838e636a420faf87357de3c9ef1b81c267fe5178b41ae2a746f49414db0c3000000000000000100000000000000010000000000000020726eda3f3455cef6c62aedef0ceb89054f2bea2e5bb89acd06dcebb8462b4aca0000000000000001000000000000000100000000000000207344fe67686aac2d040549f661d4411ead3cc4a384d6b21cb11afe510eef6c8f000000000000000100000000000000010000000000000020827ed44224894836227e77e2070e712335f5349a9ab5ebc65bfbf00b847d9f0900000000000000010000000000000001000000000000002042024765a3dc35c2741b67d260b0a463fd13c78492c07aa774adf53dd36557ae00000000000000010000000000000001000000000000002037893dee0ef9e5ed07fb254880866ced521d5a4beecaadaa822c1d57cc29eada000000000000000100000000000000010000000000000020c40b89a6fa2e3a1ec695dbe5765e86f5dc4b34c4b390d8c79278d466dba334eb00000000000000021c09d6d5d17cc1ce9027d7f7fab16a590d8d7fb35d224eac044655413956e9401d498126648f0f47ec1c1dcb1edb181a25e25aab64525a6302e4573f86f09c1e00000000000000010000000000000020b239bb3b8a9af14b51206f5a61b7406dbd91d16fdeabe67ef94603a03c69028400000000000000060000000000000001000000000000000000000000000000204c82901378e287f4125c4722990e3a18ba4cd460c7d239de37c9cb4d9d99eaf200000000000000010000000000000001000000000000002030aed15c83c77108ca446b58f111d0bc0f4337231c60551fbf46ee03c2165036000000000000000100000000000000010000000000000020743e76f418dbb97a02f53e5021e3a92473500b1b15a274c3a7b884c65c18c229000000000000000100000000000000010000000000000020c148d89ad72c71231a8e346f38d7fb23006c2f77a8e839d3bb529544ec4cc805000000000000000100000000000000010000000000000020ee3c795de2b968068b91d6e70092ac64b3fb23c0c884482854eea6a55ab9dbb50000000000000001000000000000000100000000000000206bbc5ff55cf56e1549b360440276875a3e12692f83a08d0c2f8491e7706e2fbb00000000000000023cc63de7d677239aa2d387914bd27df541b9cad5a279e70b336f4ef4c3455d2422e269e62636af981350d413d31ecf0c4c45d1b75382e08632958c0c3521ec90000000000000000100000000000000208335e799c46b6700689448cda83d01521acffd0f69339ee0e32d3ef0c1128cf90000000000000005000000000000000100000000000000000000000000000020444cfe5c2ab227d2e8b6d8032bbab931cd84d7fc1ff11bc0f1e1c35d2b6b51100000000000000001000000000000000100000000000000208c36dc19e1705406af58a108e5bb7e68603ecb05282be988dc03d20a4bb5ef2f0000000000000001000000000000000100000000000000208f68d4817f2824d688e3755207a032de5f21f6af7f5b50c8acf937c6f92e8769000000000000000100000000000000010000000000000020f560439b7e242a8ea40af26cf0871f60af02c9e2284516d1faa6bd9eb41d9b990000000000000001000000000000000100000000000000204416681512a9928b388ffa73c5b0eb8142a95f4b6d79ca25ad5f6487007a1f7600000000000000022acf4e46cddc37a9d7fba51d583ea6aa3cc91ccb1a73396ede5f0153fc9ab85a1aa00bc1d5bfd601d1a93881248d26490e7f2ee4548d09d79e069c78c08718180000000000000001000000000000002041cb30eaac493f7a017e8093333df561794d1d992f410c6672b0b50e970e33430000000000000004000000000000000100000000000000000000000000000020818a644a75472f424756c40e73596ef0e4cd8caa63b42fba6f10a9995492fde7000000000000000100000000000000010000000000000020a73bf9236f9e15cc771c6df9b26d0838c005c60756a2e1b50beee946715fb80c0000000000000001000000000000000100000000000000201f07202e08d660ccf26d125a0ce777fc67a44d05763d8e9dd80c3944cae59333000000000000000100000000000000010000000000000020bdc9ea634ff8af88ebc50a2bfdeeba9bcfbd1c83eb5a5c9bc5992d98fd45c2c500000000000000021a38a59a759376fdbd2fed201c763772b63c49843a97d9ba895d12588e0b79781691c314deccedeacda908857ce93b02e60d80aab04a5a793d20c620871fa9f600000000000000010000000000000020cd1905b3241dc994698b46bc66f993123f6e340863b7029b42ce123c35f36eb80000000000000003000000000000000100000000000000000000000000000020ba273f6f8c79d3162baa002ad32e6e8f10d99795dc7d0c5055d94fb0f2433b4700000000000000010000000000000001000000000000002063255cf9ee3f7509d027ee0d0544d5f02720ec098d1c8e19da268799098efa50000000000000000100000000000000010000000000000020e86cd91cfcb3c651d84ebec9f1cfb37763d4ea7e2d7a8889fb2014b745030fdb00000000000000022cde38e7d2a21d82023f7ab0ea55ed762cd401c8f5f593b05c136e278d79aea32bab401b6456ac476606af0113d439594cc0fa2ffcb8d11d952ebb6c7b18cdae00000000000000010000000000000020a14856a12d1efa640085deb279b1b28d8fa5be5903da7519621dcb57ea08b6c30000000000000002000000000000000100000000000000000000000000000020eb361c75c7233911ecbe4dd468726b1f7fdee356875b51eedef8623281df38cf000000000000000100000000000000010000000000000020c6f9b4470600d458d6def8c86576c9596a8590c97712a75719e7f38a781367e000000000000000021c66b7b0b106b1ffd8ece7a57d2efaec77e347c5f3f34614def6e6dcecc4312e347411c0be11bc1b471e5b4a81060994ddf9a5df9748618ebda550932e4f73630000000000000001000000000000002079547b3ab2426744532fdf65964f9841d2fb782e1adf6e22553fa7d31fedddfd0000000000000001000000000000000100000000000000000000000000000020b9b51a40b801fbe120bfc5dd9d0ae1c85ff8746d7e70603fe5e109ac1f1c1040000000000000000233c1f762186586bec55946a7a6175cec17d2e7eb20c52fc64f9ebf3f9570f4c63addd5ba8c048962c2991e76c1f2c1b34c507e230df69e9906204f502b1f0857 \ No newline at end of file diff --git a/contracts/zkllvm/merkle_tree_poseidon/public_input.json b/contracts/zkllvm/merkle_tree_poseidon/public_input.json new file mode 100644 index 0000000..f71072e --- /dev/null +++ b/contracts/zkllvm/merkle_tree_poseidon/public_input.json @@ -0,0 +1,113 @@ +[ +1, +2, +3, +4, +5, +6, +7, +8, +9, +10, +11, +12, +13, +14, +15, +16, +17, +18, +19, +20, +21, +22, +23, +24, +25, +26, +27, +28, +29, +30, +31, +32, +255, +255, +255, +255, +255, +255, +1, +64, +32, +16, +8, +0, +0, +2, +1, +0, +2, +1, +0, +1, +0, +1, +0, +1, +0, +1, +0, +1, +0, +1, +0, +1, +0, +1, +0, +1, +0, +1, +0, +1, +0, +1, +0, +1, +0, +1, +0, +0, +0, +1, +0, +1, +0, +1, +0, +1, +0, +1, +0, +1, +0, +1, +0, +0, +0, +4, +1, +0, +1, +0, +1, +0, +0, +0, +1, +0, +0, +0, +0 +] \ No newline at end of file diff --git a/contracts/zkllvm/mina_base/circuit_params.json b/contracts/zkllvm/mina_base/circuit_params.json new file mode 100644 index 0000000..10b34c2 --- /dev/null +++ b/contracts/zkllvm/mina_base/circuit_params.json @@ -0,0 +1,31 @@ +{ "_test_name":"Test name", + "arithmetization_params":[15,1,1,30], + "columns_rotations":[[-1,0,1],[-1,0,1],[-1,0,1],[-1,0,1],[-1,0,1],[-1,0,1],[0,1],[-1,0,1],[-1,0,1],[-1,0,1],[-1,0,1],[-1,0,1],[-1,0],[-1,0],[-1,0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0]], + "modulus":28948022309329048855892746252171976963363056481941560715954676764349967630337, + "r":16, + "m":2, + "lambda":1, + "batches_num":4, + "step_list":[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1], + "D_omegas":[ + 21090803083255360924969619711782040241928172562822879037017685322859036642027, + 10988054172925167713694812535142550583545019937971378974362050426778203868934, + 22762810496981275083229264712375994604562198468579727082239970810950736657129, + 26495698845590383240609604404074423972849566255661802313591097233811292788392, + 13175653644678658737556805326666943932741525539026001701374450696535194715445, + 18589158034707770508497743761528839450567399299956641192723316341154428793508, + 5207999989657576140891498154897385491612440083899963290755562031717636435093, + 21138537593338818067112636105753818200833244613779330379839660864802343411573, + 22954361264956099995527581168615143754787441159030650146191365293282410739685, + 23692685744005816481424929253249866475360293751445976741406164118468705843520, + 7356716530956153652314774863381845254278968224778478050456563329565810467774, + 17166126583027276163107155648953851600645935739886150467584901586847365754678, + 3612152772817685532768635636100598085437510685224817206515049967552954106764, + 14450201850503471296781915119640920297985789873634237091629829669980153907901, + 199455130043951077247265858823823987229570523056509026484192158816218200659, + 24760239192664116622385963963284001971067308018068707868888628426778644166363 + ], + "rows_amount":131072, + "max_degree":131071, + "omega":21090803083255360924969619711782040241928172562822879037017685322859036642027 +} diff --git a/contracts/zkllvm/mina_base/gate0.sol b/contracts/zkllvm/mina_base/gate0.sol new file mode 100644 index 0000000..adcc72b --- /dev/null +++ b/contracts/zkllvm/mina_base/gate0.sol @@ -0,0 +1,1020 @@ + +// SPDX-License-Identifier: Apache-2.0. +//---------------------------------------------------------------------------// +// Copyright (c) 2022 Mikhail Komarov +// Copyright (c) 2022 Ilias Khairullin +// Copyright (c) 2022 Aleksei Moskvin +// Copyright (c) 2022-2023 Elena Tatuzova +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//---------------------------------------------------------------------------// +pragma solidity >=0.8.4; + +import "../../../contracts/types.sol"; +import "./gate_argument.sol"; + +library mina_base_gate0{ + uint256 constant MODULUS_OFFSET = 0x0; + uint256 constant THETA_OFFSET = 0x20; + + uint256 constant CONSTRAINT_EVAL_OFFSET = 0x00; + uint256 constant GATE_EVAL_OFFSET = 0x20; + uint256 constant GATES_EVALUATIONS_OFFSET = 0x40; + uint256 constant THETA_ACC_OFFSET = 0x60; + + uint256 constant WITNESS_EVALUATIONS_OFFSET = 0x80; + uint256 constant CONSTANT_EVALUATIONS_OFFSET = 0xa0; + uint256 constant SELECTOR_EVALUATIONS_OFFSET = 0xc0; + + + function evaluate_gate_be( + types.gate_argument_params memory gate_params, + mina_base_gate_argument_split_gen.local_vars_type memory local_vars + ) external pure returns (uint256 gates_evaluation, uint256 theta_acc) { + gates_evaluation = local_vars.gates_evaluation; + theta_acc = local_vars.theta_acc; + uint256 terms; + assembly { + let modulus := mload(gate_params) + let theta := mload(add(gate_params, THETA_OFFSET)) + + + function get_witness_i_by_rotation_idx(idx, rot_idx, ptr) -> result { + result := mload( + add( + add(mload(add(add(mload(add(ptr, WITNESS_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))), 0x20), + mul(0x20, rot_idx) + ) + ) + } + + function get_constant_i(idx, ptr) -> result { + result := mload(add(add(mload(add(ptr, CONSTANT_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))) + } + + function get_selector_i(idx, ptr) -> result { + result := mload(add(add(mload(add(ptr, SELECTOR_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))) + } + + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(0,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=get_witness_i_by_rotation_idx(1,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(0,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(3,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x113aa632e5e0d0977603751a0f88a80e1f9334b972d5301c3329337f6c9a64ba + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(4,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1aac4f73877aae401f9b26e3e814e1249be470c9dfd78209e67a28570f55c454 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(5,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1a58f904f0ca4d9f490d729e1f7d2c9593307d1a1473b7b827857a8dd40501b3 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(6,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x83fd7e02599b33dbb72f182288555fbad24487a8eb89e5caea0363dc11c6461 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(7,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2bfb77cded6e66747a7d153114c05635e8c5ad9764f9a1df3e8307dcbfa6c94b + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(8,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x58c01ca4e4229947f6552a154b84a37e74551fe8986c63be49057d21ee96c89 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(9,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1e483d4ca0288ef4f9dba8ee0d93f9ca4e647b172e3c1be125c33b4db972841b + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(10,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x27fc5f972da010d109ad375b7b855e75f875109d8d557944f5dfca9992f6352a + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(11,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x16e219e3a19d97dec88d3081fc37f3d19f07e17fb08893d2c7d489dd44268db6 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(12,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1cffbc5f23d20549c9f8341e463b7d02490e9b0c1c8668c0f42c0263454152ee + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(13,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1e750885fa3afd2c05cebb1030b85f0d821d746348408af830d6da7818789b0d + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(14,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1dc1d26b3e882d81f8e2aa8d62ec564e0bb13c8b06805e85aeed2b5e04af9eea + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(0,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x15e7da83ea52649017483a52ded6c6b1921a5cc40665c0294c4a3b6751a095c9 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(1,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x35908458a0de9bfc2d1b6bfb962e66b8d7e0ee9d113815b7986f51fc9ea72309 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(2,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x29641be39dd86a91010a4b32219a2ff2c4419a85a7d43b5467cbd47ea46c1ce3 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(1,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(3,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x11d70af565aa2d16e88bf7cf8d8cbabbe0c86ff1ec4e3d1a19119c1c8d70199e + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(4,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x30212072579ab5dd7cefbf3038bbcdb9d72f5a158323fb8b4fa8b0336fd0d7e8 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(5,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3b95c12679c2d28c622743616f58b902812d279938ac3a57be0e018cbd30fb1f + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(6,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1e61f74b9f3cfa4bd798f453547953e18dee91a490799ce57f7eb54b064d128b + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(7,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x744c95ed14313b2b178d714bc1c0ed5b412e6fc6806c5a2979fe2dabdb19d37 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(8,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x21655c01da2ee933042957033251f55666304ef85dce6404943e967ba041211b + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(9,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3cf0cc128f25b3d4047bb00e58aa747ea527d5fb2ec657b249ff7c9cb82a0e76 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(10,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3d7d4fbec8cafb6a54be830d3b8c7640ba2a5f05471f5ae48db239904341b450 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(11,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x364ead7215d14a42696fa47700fa020c415477fdebb927664fd984540137da11 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(12,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xff7c2444a154c6cee3857402a1aaa9827c04dc7a096fffb8ada9412fc261090 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(13,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3e815318c309839eeddc6340ae213f190d584aa177712ffafb6bb52e5a432f6d + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(14,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x850e2170ab8a45e9a46f072a9797c2ad4253b028aba718765bc61abe7bd7f6a + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(0,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x29008a6d7c95bacbf1390d4f0edd8c931e55dc43c939fff8f47289ae5f1990b0 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(1,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x25a67a2b4ca62fc219f4d12544e7ac0babb539104868e997f65b60e4b103c028 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(2,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1aa562b41464a15e754687d4e544d9805c8f25427e96a31e4be69a541e1e068c + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(2,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + + } + } +} diff --git a/contracts/zkllvm/mina_base/gate11.sol b/contracts/zkllvm/mina_base/gate11.sol new file mode 100644 index 0000000..794477e --- /dev/null +++ b/contracts/zkllvm/mina_base/gate11.sol @@ -0,0 +1,1095 @@ + +// SPDX-License-Identifier: Apache-2.0. +//---------------------------------------------------------------------------// +// Copyright (c) 2022 Mikhail Komarov +// Copyright (c) 2022 Ilias Khairullin +// Copyright (c) 2022 Aleksei Moskvin +// Copyright (c) 2022-2023 Elena Tatuzova +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//---------------------------------------------------------------------------// +pragma solidity >=0.8.4; + +import "../../../contracts/types.sol"; +import "./gate_argument.sol"; + +library mina_base_gate11{ + uint256 constant MODULUS_OFFSET = 0x0; + uint256 constant THETA_OFFSET = 0x20; + + uint256 constant CONSTRAINT_EVAL_OFFSET = 0x00; + uint256 constant GATE_EVAL_OFFSET = 0x20; + uint256 constant GATES_EVALUATIONS_OFFSET = 0x40; + uint256 constant THETA_ACC_OFFSET = 0x60; + + uint256 constant WITNESS_EVALUATIONS_OFFSET = 0x80; + uint256 constant CONSTANT_EVALUATIONS_OFFSET = 0xa0; + uint256 constant SELECTOR_EVALUATIONS_OFFSET = 0xc0; + + + function evaluate_gate_be( + types.gate_argument_params memory gate_params, + mina_base_gate_argument_split_gen.local_vars_type memory local_vars + ) external pure returns (uint256 gates_evaluation, uint256 theta_acc) { + gates_evaluation = local_vars.gates_evaluation; + theta_acc = local_vars.theta_acc; + uint256 terms; + assembly { + let modulus := mload(gate_params) + let theta := mload(add(gate_params, THETA_OFFSET)) + + + function get_witness_i_by_rotation_idx(idx, rot_idx, ptr) -> result { + result := mload( + add( + add(mload(add(add(mload(add(ptr, WITNESS_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))), 0x20), + mul(0x20, rot_idx) + ) + ) + } + + function get_constant_i(idx, ptr) -> result { + result := mload(add(add(mload(add(ptr, CONSTANT_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))) + } + + function get_selector_i(idx, ptr) -> result { + result := mload(add(add(mload(add(ptr, SELECTOR_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))) + } + + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(3,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x6ce96688c89efe6c3c0600302b1dc2c979a862e8db740494255bcdce9af5937 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(4,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x26e1c88b9d679a9c0254064dcad60837d5db78f0784b45768fc1668dc8867e06 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(5,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1f0765068dd086379f2dfa65f13df630e7cd734f01b42e6543408abd18c00c28 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(6,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x235a9751224d10c6e58387130efb2cd2a9eafc5ac3737ae6118f3d99b582e1f6 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(7,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1a21645f5c8b8d3c4b3f463c43da3440a96d807a5253aa348ae271e3fdeedae5 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(8,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xc6c2142c72cee77e38a7c411f819fa131613c9918fc6c4f6c06df602a971e12 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(9,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3c720d02e75728a9c7f9556266b59ee0be193cc295c4273e5ab47472baea3a50 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(10,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3a39afc00e11ab70dbca526eb728046b59246df30058b3c81ec6c9e88092afe5 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(11,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2fb377292f97d27d2c299b7d9236a9a27144f6db5ebd68c46a7598a6757d5d56 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(12,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x135529ef73f611951187ae4b5d2d2c485e7c5ca5614cf553520da02d5b539d76 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(13,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x35a8242b3cd87d937568438d7a06b43246b03784d4dde188d46fc06455fcac0e + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(14,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3eaaad06edbce747bcc2fe44ac45fb48079fa42ebc94002b5fd46b30416f707 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(0,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x31ef3ef3441e8e856bbe39d663b03f7860247870345269dfb2c0107709dc4aee + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(1,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2174dab3400d36d57c200e8d737e22dd78ef89a2fb037c68c2ed2cc0478656d1 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(2,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x27ed24328f3bbf9effa844022f33b2ce504ba383a53343e357688328c0d4dcaf + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(11,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(1,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x10000000000000000,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x100000000000000000000000000000000,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1000000000000000000000000000000000000000000000000,get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x40000000000000000000000000000000224698fc094cf91b325a61da00000002 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=get_witness_i_by_rotation_idx(5,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x10000000000000000,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x40000000000000000000000000000000224698fc094cf91abb73c9e9094cf91d + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=get_witness_i_by_rotation_idx(6,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x10000000000000000,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x40000000000000000000000000000000224698fc094cf91a992d30ed00000002 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=get_witness_i_by_rotation_idx(7,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x10000000000000000,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x40000000000000000000000000000000224698fc094cf91ad92d30ed00000002 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=get_witness_i_by_rotation_idx(8,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(9,1, local_vars),get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(10,1, local_vars),get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(11,1, local_vars),get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(12,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(1,1, local_vars),get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffe,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x6,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffb,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(2,1, local_vars),get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffe,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x6,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffb,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(3,1, local_vars),get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffe,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x6,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffb,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(4,1, local_vars),get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffe,get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x6,get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3,get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffb,get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(5,1, local_vars),get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffe,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x6,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffb,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(6,0, local_vars),get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffe,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x6,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffb,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(7,1, local_vars),get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffe,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x6,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffb,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(8,1, local_vars),get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffe,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x6,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffb,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(9,1, local_vars),get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffe,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x6,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffb,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(10,1, local_vars),get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffe,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x6,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffb,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(11,1, local_vars),get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffe,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x6,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffb,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(12,1, local_vars),get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffe,get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x6,get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3,get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffb,get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(13,1, local_vars),get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffe,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x6,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffb,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(14,1, local_vars),get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffe,get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x6,get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3,get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffb,get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(0x4000000,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1000000,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x400000,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x100000,get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x10000,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x4000,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1000,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x400,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x100,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x10,get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x4,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=get_witness_i_by_rotation_idx(14,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x10000000,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(13,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(0,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x10000000000000000,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(14,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + + } + } +} diff --git a/contracts/zkllvm/mina_base/gate15_0.sol b/contracts/zkllvm/mina_base/gate15_0.sol new file mode 100644 index 0000000..37b3e6d --- /dev/null +++ b/contracts/zkllvm/mina_base/gate15_0.sol @@ -0,0 +1,1234 @@ + +// SPDX-License-Identifier: Apache-2.0. +//---------------------------------------------------------------------------// +// Copyright (c) 2022 Mikhail Komarov +// Copyright (c) 2022 Ilias Khairullin +// Copyright (c) 2022 Aleksei Moskvin +// Copyright (c) 2022-2023 Elena Tatuzova +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//---------------------------------------------------------------------------// +pragma solidity >=0.8.4; + +import "../../../contracts/types.sol"; +import "./gate_argument.sol"; + +library mina_base_gate15_0{ + uint256 constant MODULUS_OFFSET = 0x0; + uint256 constant THETA_OFFSET = 0x20; + + uint256 constant CONSTRAINT_EVAL_OFFSET = 0x00; + uint256 constant GATE_EVAL_OFFSET = 0x20; + uint256 constant GATES_EVALUATIONS_OFFSET = 0x40; + uint256 constant THETA_ACC_OFFSET = 0x60; + + uint256 constant WITNESS_EVALUATIONS_OFFSET = 0x80; + uint256 constant CONSTANT_EVALUATIONS_OFFSET = 0xa0; + uint256 constant SELECTOR_EVALUATIONS_OFFSET = 0xc0; + + + function evaluate_gate_be( + types.gate_argument_params memory gate_params, + mina_base_gate_argument_split_gen.local_vars_type memory local_vars + ) external pure returns (uint256 gates_evaluation, uint256 theta_acc) { + gates_evaluation = local_vars.gates_evaluation; + theta_acc = local_vars.theta_acc; + uint256 terms; + assembly { + let modulus := mload(gate_params) + let theta := mload(add(gate_params, THETA_OFFSET)) + + + function get_witness_i_by_rotation_idx(idx, rot_idx, ptr) -> result { + result := mload( + add( + add(mload(add(add(mload(add(ptr, WITNESS_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))), 0x20), + mul(0x20, rot_idx) + ) + ) + } + + function get_constant_i(idx, ptr) -> result { + result := mload(add(add(mload(add(ptr, CONSTANT_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))) + } + + function get_selector_i(idx, ptr) -> result { + result := mload(add(add(mload(add(ptr, SELECTOR_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))) + } + + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(2,2, local_vars),get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(3,2, local_vars),get_witness_i_by_rotation_idx(3,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(3,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(4,2, local_vars),get_witness_i_by_rotation_idx(4,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(4,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(5,2, local_vars),get_witness_i_by_rotation_idx(5,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(5,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(6,1, local_vars),get_witness_i_by_rotation_idx(6,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(6,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(2,1, local_vars),get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(7,1, local_vars),get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(3,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(9,1, local_vars),get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(4,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(11,1, local_vars),get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(5,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(13,1, local_vars),get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(6,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(0x4,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffd,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffd,get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x4,get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(7,2, local_vars),get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(7,2, local_vars),get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffd,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x4,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffd,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(7,2, local_vars),get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(7,2, local_vars),get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(7,2, local_vars),get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(0,1, local_vars),get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(0,1, local_vars),get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(0,1, local_vars),get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(0x4,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffd,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffd,get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x4,get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(8,2, local_vars),get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(8,2, local_vars),get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffd,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x4,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffd,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(8,2, local_vars),get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(8,2, local_vars),get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(8,2, local_vars),get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(0,1, local_vars),get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(0,1, local_vars),get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(0,1, local_vars),get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(0x4,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffd,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffd,get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x4,get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(9,2, local_vars),get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(9,2, local_vars),get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffd,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x4,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffd,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(9,2, local_vars),get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(9,2, local_vars),get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(9,2, local_vars),get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(0,1, local_vars),get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(0,1, local_vars),get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(0,1, local_vars),get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(0x4,get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffd,get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffd,get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x4,get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(10,2, local_vars),get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(10,2, local_vars),get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffd,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x4,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffd,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(10,2, local_vars),get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(10,2, local_vars),get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(10,2, local_vars),get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(0,1, local_vars),get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(0,1, local_vars),get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(0,1, local_vars),get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(0x4,get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffd,get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffd,get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x4,get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(11,2, local_vars),get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(11,2, local_vars),get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffd,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x4,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffd,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(11,2, local_vars),get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(11,2, local_vars),get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(11,2, local_vars),get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(0,1, local_vars),get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(0,1, local_vars),get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(0,1, local_vars),get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + gates_evaluation := mload(add(local_vars, GATE_EVAL_OFFSET)) + + } + } +} diff --git a/contracts/zkllvm/mina_base/gate15_1.sol b/contracts/zkllvm/mina_base/gate15_1.sol new file mode 100644 index 0000000..fcb6287 --- /dev/null +++ b/contracts/zkllvm/mina_base/gate15_1.sol @@ -0,0 +1,345 @@ + +// SPDX-License-Identifier: Apache-2.0. +//---------------------------------------------------------------------------// +// Copyright (c) 2022 Mikhail Komarov +// Copyright (c) 2022 Ilias Khairullin +// Copyright (c) 2022 Aleksei Moskvin +// Copyright (c) 2022-2023 Elena Tatuzova +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//---------------------------------------------------------------------------// +pragma solidity >=0.8.4; + +import "../../../contracts/types.sol"; +import "./gate_argument.sol"; + +library mina_base_gate15_1{ + uint256 constant MODULUS_OFFSET = 0x0; + uint256 constant THETA_OFFSET = 0x20; + + uint256 constant CONSTRAINT_EVAL_OFFSET = 0x00; + uint256 constant GATE_EVAL_OFFSET = 0x20; + uint256 constant GATES_EVALUATIONS_OFFSET = 0x40; + uint256 constant THETA_ACC_OFFSET = 0x60; + + uint256 constant WITNESS_EVALUATIONS_OFFSET = 0x80; + uint256 constant CONSTANT_EVALUATIONS_OFFSET = 0xa0; + uint256 constant SELECTOR_EVALUATIONS_OFFSET = 0xc0; + + + function evaluate_gate_be( + types.gate_argument_params memory gate_params, + mina_base_gate_argument_split_gen.local_vars_type memory local_vars + ) external pure returns (uint256 gates_evaluation, uint256 theta_acc) { + gates_evaluation = local_vars.gates_evaluation; + theta_acc = local_vars.theta_acc; + uint256 terms; + assembly { + let modulus := mload(gate_params) + let theta := mload(add(gate_params, THETA_OFFSET)) + + + function get_witness_i_by_rotation_idx(idx, rot_idx, ptr) -> result { + result := mload( + add( + add(mload(add(add(mload(add(ptr, WITNESS_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))), 0x20), + mul(0x20, rot_idx) + ) + ) + } + + function get_constant_i(idx, ptr) -> result { + result := mload(add(add(mload(add(ptr, CONSTANT_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))) + } + + function get_selector_i(idx, ptr) -> result { + result := mload(add(add(mload(add(ptr, SELECTOR_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))) + } + + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(8,1, local_vars),get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(3,1, local_vars),get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(2,1, local_vars),get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(7,1, local_vars),get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(10,1, local_vars),get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(8,1, local_vars),get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(7,1, local_vars),get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(9,1, local_vars),get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(12,1, local_vars),get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(10,1, local_vars),get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(9,1, local_vars),get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(11,1, local_vars),get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(14,1, local_vars),get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(12,1, local_vars),get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(11,1, local_vars),get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(13,1, local_vars),get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(1,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(1,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(1,2, local_vars),get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(14,1, local_vars),get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(13,1, local_vars),get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(0,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(0,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(0,2, local_vars),get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(5,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffe1,get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffff1,get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffff9,get_witness_i_by_rotation_idx(3,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffd,get_witness_i_by_rotation_idx(4,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(5,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(6,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(15,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + } + } +} diff --git a/contracts/zkllvm/mina_base/gate16_0.sol b/contracts/zkllvm/mina_base/gate16_0.sol new file mode 100644 index 0000000..d65e9dc --- /dev/null +++ b/contracts/zkllvm/mina_base/gate16_0.sol @@ -0,0 +1,1110 @@ + +// SPDX-License-Identifier: Apache-2.0. +//---------------------------------------------------------------------------// +// Copyright (c) 2022 Mikhail Komarov +// Copyright (c) 2022 Ilias Khairullin +// Copyright (c) 2022 Aleksei Moskvin +// Copyright (c) 2022-2023 Elena Tatuzova +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//---------------------------------------------------------------------------// +pragma solidity >=0.8.4; + +import "../../../contracts/types.sol"; +import "./gate_argument.sol"; + +library mina_base_gate16_0{ + uint256 constant MODULUS_OFFSET = 0x0; + uint256 constant THETA_OFFSET = 0x20; + + uint256 constant CONSTRAINT_EVAL_OFFSET = 0x00; + uint256 constant GATE_EVAL_OFFSET = 0x20; + uint256 constant GATES_EVALUATIONS_OFFSET = 0x40; + uint256 constant THETA_ACC_OFFSET = 0x60; + + uint256 constant WITNESS_EVALUATIONS_OFFSET = 0x80; + uint256 constant CONSTANT_EVALUATIONS_OFFSET = 0xa0; + uint256 constant SELECTOR_EVALUATIONS_OFFSET = 0xc0; + + + function evaluate_gate_be( + types.gate_argument_params memory gate_params, + mina_base_gate_argument_split_gen.local_vars_type memory local_vars + ) external pure returns (uint256 gates_evaluation, uint256 theta_acc) { + gates_evaluation = local_vars.gates_evaluation; + theta_acc = local_vars.theta_acc; + uint256 terms; + assembly { + let modulus := mload(gate_params) + let theta := mload(add(gate_params, THETA_OFFSET)) + + + function get_witness_i_by_rotation_idx(idx, rot_idx, ptr) -> result { + result := mload( + add( + add(mload(add(add(mload(add(ptr, WITNESS_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))), 0x20), + mul(0x20, rot_idx) + ) + ) + } + + function get_constant_i(idx, ptr) -> result { + result := mload(add(add(mload(add(ptr, CONSTANT_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))) + } + + function get_selector_i(idx, ptr) -> result { + result := mload(add(add(mload(add(ptr, SELECTOR_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))) + } + + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(2,1, local_vars),get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(3,1, local_vars),get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(4,1, local_vars),get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(5,1, local_vars),get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(6,0, local_vars),get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(2,0, local_vars),get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(7,0, local_vars),get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(9,0, local_vars),get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(11,0, local_vars),get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(13,0, local_vars),get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(0x4,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffd,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffd,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x4,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(7,1, local_vars),get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(7,1, local_vars),get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffd,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x4,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffd,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(7,1, local_vars),get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(7,1, local_vars),get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(7,1, local_vars),get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(0,0, local_vars),get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(0,0, local_vars),get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(0,0, local_vars),get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(0x4,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffd,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffd,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x4,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(8,1, local_vars),get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(8,1, local_vars),get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffd,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x4,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffd,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(8,1, local_vars),get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(8,1, local_vars),get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(8,1, local_vars),get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(0,0, local_vars),get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(0,0, local_vars),get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(0,0, local_vars),get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(0x4,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffd,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffd,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x4,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(9,1, local_vars),get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(9,1, local_vars),get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffd,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x4,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffd,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(9,1, local_vars),get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(9,1, local_vars),get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(9,1, local_vars),get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(0,0, local_vars),get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(0,0, local_vars),get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(0,0, local_vars),get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(0x4,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffd,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffd,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x4,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(10,1, local_vars),get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(10,1, local_vars),get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffd,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x4,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffd,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(10,1, local_vars),get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(10,1, local_vars),get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(10,1, local_vars),get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(0,0, local_vars),get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(0,0, local_vars),get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(0,0, local_vars),get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + gates_evaluation := mload(add(local_vars, GATE_EVAL_OFFSET)) + + } + } +} diff --git a/contracts/zkllvm/mina_base/gate16_1.sol b/contracts/zkllvm/mina_base/gate16_1.sol new file mode 100644 index 0000000..b04d1f0 --- /dev/null +++ b/contracts/zkllvm/mina_base/gate16_1.sol @@ -0,0 +1,1269 @@ + +// SPDX-License-Identifier: Apache-2.0. +//---------------------------------------------------------------------------// +// Copyright (c) 2022 Mikhail Komarov +// Copyright (c) 2022 Ilias Khairullin +// Copyright (c) 2022 Aleksei Moskvin +// Copyright (c) 2022-2023 Elena Tatuzova +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//---------------------------------------------------------------------------// +pragma solidity >=0.8.4; + +import "../../../contracts/types.sol"; +import "./gate_argument.sol"; + +library mina_base_gate16_1{ + uint256 constant MODULUS_OFFSET = 0x0; + uint256 constant THETA_OFFSET = 0x20; + + uint256 constant CONSTRAINT_EVAL_OFFSET = 0x00; + uint256 constant GATE_EVAL_OFFSET = 0x20; + uint256 constant GATES_EVALUATIONS_OFFSET = 0x40; + uint256 constant THETA_ACC_OFFSET = 0x60; + + uint256 constant WITNESS_EVALUATIONS_OFFSET = 0x80; + uint256 constant CONSTANT_EVALUATIONS_OFFSET = 0xa0; + uint256 constant SELECTOR_EVALUATIONS_OFFSET = 0xc0; + + + function evaluate_gate_be( + types.gate_argument_params memory gate_params, + mina_base_gate_argument_split_gen.local_vars_type memory local_vars + ) external pure returns (uint256 gates_evaluation, uint256 theta_acc) { + gates_evaluation = local_vars.gates_evaluation; + theta_acc = local_vars.theta_acc; + uint256 terms; + assembly { + let modulus := mload(gate_params) + let theta := mload(add(gate_params, THETA_OFFSET)) + + + function get_witness_i_by_rotation_idx(idx, rot_idx, ptr) -> result { + result := mload( + add( + add(mload(add(add(mload(add(ptr, WITNESS_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))), 0x20), + mul(0x20, rot_idx) + ) + ) + } + + function get_constant_i(idx, ptr) -> result { + result := mload(add(add(mload(add(ptr, CONSTANT_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))) + } + + function get_selector_i(idx, ptr) -> result { + result := mload(add(add(mload(add(ptr, SELECTOR_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))) + } + + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(0x4,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffd,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffd,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x4,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(11,1, local_vars),get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(11,1, local_vars),get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffd,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x4,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffd,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(11,1, local_vars),get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(11,1, local_vars),get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(11,1, local_vars),get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(0,0, local_vars),get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(0,0, local_vars),get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(0,0, local_vars),get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(8,0, local_vars),get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(3,0, local_vars),get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(2,0, local_vars),get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(7,0, local_vars),get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(10,0, local_vars),get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(8,0, local_vars),get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(7,0, local_vars),get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(9,0, local_vars),get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(12,0, local_vars),get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(10,0, local_vars),get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(9,0, local_vars),get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(11,0, local_vars),get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(14,0, local_vars),get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(12,0, local_vars),get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(11,0, local_vars),get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(13,0, local_vars),get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(1,1, local_vars),get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(14,0, local_vars),get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(13,0, local_vars),get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(0,1, local_vars),get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(5,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffe1,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffff1,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffff9,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffd,get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(8,2, local_vars),get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(8,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(5,2, local_vars),get_witness_i_by_rotation_idx(3,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3fffffffffffffffffffffffffffffffffffffffffb8503e0ce645cc00000001,get_witness_i_by_rotation_idx(5,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3fffffffffffffffffffffffffffffffffffffffffb8503e0ce645cc00000001,get_witness_i_by_rotation_idx(3,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x496d41af7ccfdaa97fae231004ccf58c412ebcb86019a410000000000000000,get_witness_i_by_rotation_idx(3,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(5,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x224698fc0994a8dd8c46eb2100000000 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(5,2, local_vars),get_witness_i_by_rotation_idx(4,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3fffffffffffffffffffffffffffffffffffffffffb8503e0ce645cc00000000,get_witness_i_by_rotation_idx(5,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3fffffffffffffffffffffffffffffffffffffffffb8503e0ce645cc00000000,get_witness_i_by_rotation_idx(4,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x496d41af7ccfdaa97fae231004ccf5908a01dc3992aebfc188dd64200000001,get_witness_i_by_rotation_idx(4,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(5,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x224698fc0994a8dd8c46eb2100000001 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(8,2, local_vars),get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(5,2, local_vars),get_witness_i_by_rotation_idx(3,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3fffffffffffffffffffffffffffffffffffffffffb8503e0ce645cc00000001,get_witness_i_by_rotation_idx(5,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(5,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x224698fc0994a8dd8c46eb2100000001,get_witness_i_by_rotation_idx(5,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3fffffffffffffffffffffffffffffffffffffffffb8503e0ce645cc00000001,get_witness_i_by_rotation_idx(3,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x496d41af7ccfdaa97fae231004ccf58c412ebcb86019a410000000000000000,get_witness_i_by_rotation_idx(3,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(3,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b692be50833025568051dceffb330a73bed143479b6b5fd0ce645cc00000001,get_witness_i_by_rotation_idx(3,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(5,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(5,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(5,2, local_vars),get_witness_i_by_rotation_idx(4,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3fffffffffffffffffffffffffffffffffffffffffb8503e0ce645cc00000000,get_witness_i_by_rotation_idx(5,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x224698fc0994a8dd8c46eb2100000001,get_witness_i_by_rotation_idx(4,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b692be50833025568051dceffb330a73bed143479b6b5fd0ce645cc00000001,get_witness_i_by_rotation_idx(4,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3fffffffffffffffffffffffffffffffffffffffffb8503e0ce645cc00000000,get_witness_i_by_rotation_idx(4,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x496d41af7ccfdaa97fae231004ccf5908a01dc3992aebfc188dd64200000001,get_witness_i_by_rotation_idx(4,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(8,2, local_vars),get_witness_i_by_rotation_idx(2,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(5,2, local_vars),get_witness_i_by_rotation_idx(3,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3fffffffffffffffffffffffffffffffffffffffffb8503e0ce645cc00000001,get_witness_i_by_rotation_idx(3,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(5,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x224698fc0994a8dd8c46eb2100000001,get_witness_i_by_rotation_idx(4,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(1,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(8,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(5,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x224698fc0994a8dd8c46eb2100000001,get_witness_i_by_rotation_idx(5,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x200000000000000000000000000000003369e57a0e5efd4c526a60b180000001,get_witness_i_by_rotation_idx(5,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1b692be5082e35c713e4bee4711f3ce08122ed4348e6aec5809f5aab00000000,get_witness_i_by_rotation_idx(5,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(5,2, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b692be50833025568051dceffb330a73bed143479b6b5fd0ce645cc00000001,get_witness_i_by_rotation_idx(5,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b692be5082e35c713e4bee4711f3ce0b48cd2bd5745ac11d309bb5c80000001,get_witness_i_by_rotation_idx(5,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2a1a93d689e9f8b44bf04c0fd60a0f9af9d508bd2e179c458fd2678ffbb69a75 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(16,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(2,1, local_vars),get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(2,1, local_vars),get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(0,1, local_vars),get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(0,1, local_vars),get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffe,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecffffffff,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ecfffffffe,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(0,1, local_vars),get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(0,1, local_vars),get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(0,1, local_vars),get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(0,1, local_vars),get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(0,1, local_vars),get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(0,1, local_vars),get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(0,1, local_vars),get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(0,1, local_vars),get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(0,1, local_vars),get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(0,1, local_vars),get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(0,1, local_vars),get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(0,1, local_vars),get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(4,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(0,1, local_vars),get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(5,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(0,1, local_vars),get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(4,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(2,1, local_vars),get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(5,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(2,1, local_vars),get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(4,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(0,1, local_vars),get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(5,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(0,1, local_vars),get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(17,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(0,1, local_vars),get_constant_i(0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(18,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(0,1, local_vars),get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(19,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(1,1, local_vars),get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(4,1, local_vars),get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(3,1, local_vars),get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=get_witness_i_by_rotation_idx(1,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(0,1, local_vars),get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(20,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(0,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000000,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(21,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + + } + } +} diff --git a/contracts/zkllvm/mina_base/gate3.sol b/contracts/zkllvm/mina_base/gate3.sol new file mode 100644 index 0000000..ce12d5d --- /dev/null +++ b/contracts/zkllvm/mina_base/gate3.sol @@ -0,0 +1,1008 @@ + +// SPDX-License-Identifier: Apache-2.0. +//---------------------------------------------------------------------------// +// Copyright (c) 2022 Mikhail Komarov +// Copyright (c) 2022 Ilias Khairullin +// Copyright (c) 2022 Aleksei Moskvin +// Copyright (c) 2022-2023 Elena Tatuzova +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//---------------------------------------------------------------------------// +pragma solidity >=0.8.4; + +import "../../../contracts/types.sol"; +import "./gate_argument.sol"; + +library mina_base_gate3{ + uint256 constant MODULUS_OFFSET = 0x0; + uint256 constant THETA_OFFSET = 0x20; + + uint256 constant CONSTRAINT_EVAL_OFFSET = 0x00; + uint256 constant GATE_EVAL_OFFSET = 0x20; + uint256 constant GATES_EVALUATIONS_OFFSET = 0x40; + uint256 constant THETA_ACC_OFFSET = 0x60; + + uint256 constant WITNESS_EVALUATIONS_OFFSET = 0x80; + uint256 constant CONSTANT_EVALUATIONS_OFFSET = 0xa0; + uint256 constant SELECTOR_EVALUATIONS_OFFSET = 0xc0; + + + function evaluate_gate_be( + types.gate_argument_params memory gate_params, + mina_base_gate_argument_split_gen.local_vars_type memory local_vars + ) external pure returns (uint256 gates_evaluation, uint256 theta_acc) { + gates_evaluation = local_vars.gates_evaluation; + theta_acc = local_vars.theta_acc; + uint256 terms; + assembly { + let modulus := mload(gate_params) + let theta := mload(add(gate_params, THETA_OFFSET)) + + + function get_witness_i_by_rotation_idx(idx, rot_idx, ptr) -> result { + result := mload( + add( + add(mload(add(add(mload(add(ptr, WITNESS_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))), 0x20), + mul(0x20, rot_idx) + ) + ) + } + + function get_constant_i(idx, ptr) -> result { + result := mload(add(add(mload(add(ptr, CONSTANT_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))) + } + + function get_selector_i(idx, ptr) -> result { + result := mload(add(add(mload(add(ptr, SELECTOR_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))) + } + + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(3,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xb57260badff5653d7fde8ed417e16fa8bcaeca3ff415a361d690dcda1346c97 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(4,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3686aa934c12341b0cc122df6b0ebbc4d6f7d237b19cb6c014c94964465d2327 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(5,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x15b2fd73f652c63cf9994874ba30522afaa736c2d1b0908126adce8686d8d9ad + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(6,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x33ce497097af4c428e01b17667b1d378e0f17500b45aaa52eabbede98feab4ce + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(7,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x25d835f46ac2c2459471fe30f828939f08257be86a1ef9c0d90943c8ab0d1271 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(8,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2f651683da29fdbd47928e96e692dded2fdddfa929739ee2619bc553facfce81 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(9,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x96736cd0d5e9084465453f7613d218658b0407a98c480b35c7ddd2257c5263d + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(10,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x381da1f537045c23ec9f07565605f4214437c6f92a3c483e16268ffcd521941 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(11,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x103afdc3a1b512a5582035f0ab6d0e49329b6862d33e2fbb75b81df8737a7588 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(12,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x13edb8ca0c06dbab904b0205d5fe71fc2d163528666479491372a3888125989c + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(13,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2d378a36486a6e5306fcc07493e1ca8efb824dd81604895cb853adac5cc7ddb0 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(14,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3256ca176a7a82c658247b895125a5b0f29e79665f9f1dbc548bcef77aaad74 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(0,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1e7148a905a0e2060e146dd107f4f7adc9bf1f54d2bebc1a8b3e1bda7ea278a8 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(1,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1c430efcd6a8fea10e8e044bcd6435f3ca710076b71dd326e8aa8d1dcfe3043b + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(2,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x28b8b3c495643efa8209b461b29d45245a531280cb75a1547d0dcb8afa284316 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(3,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(3,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3e67d93f11dd68d214be8ba2c42bed3d74094ce3b5edadbacf44bfff005c2ab1 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(4,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xf434e82029dd3b90cd8a0967ce649729a2fda2bd2bf0bd83a57175a43bc1058 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(5,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x427e93deb399befdd63042e0b5c5bd1b837160848785e11dcb1e4e8d00d36b6 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(6,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x376bc13fe260460bc37bf8a88c76864edb82e22a712a78326eda481cba9cc160 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(7,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x198f4073fe7dd1ce38f689d9627612a765ccebcc6c2ec7d5b9a424f4674a81ba + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(8,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x322ac4bea665187242c197649a14335b8e569e671bd69a2cd1d323b14dfbf808 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(9,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x397e882d6ca7a1f4737189575a9a3797882910155f9d5189787226caac0dfc3e + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(10,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xade90b8efbc799123cdb5272730f3388f481eeb49c5adfcae66b5a7e294d30c + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(11,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2029104dac9401ee13c8c91808bb73fe371c3e6bc79100d56760acfefb9b0952 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(12,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1367d38cadefdd7603e4b72503261c33ebf93eb8e4f59ad47752403deffcc39a + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(13,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xad08173899d27924638dd2b2f88877a9ad4e0c959f1433f5e1961587ae3e4bc + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(14,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x271c3f3e355a1c129911e5490aa5a37fbe6dcf4bd49eb14055e9dfa5eb61c82c + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(0,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xedb4ed214c82344c2693e5f72af8adc3f38951b77b79f5c6b8285c97bdd1523 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(1,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2bc40f210cebc814def6adff2d2bf9193cd420c8a10f61dadf6d6f7bcdea2367 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(2,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x214116debc0cd4b062656f529d47b7c38ad218858df931fc2d4e9da2710c70ea + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(4,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + + } + } +} diff --git a/contracts/zkllvm/mina_base/gate5.sol b/contracts/zkllvm/mina_base/gate5.sol new file mode 100644 index 0000000..dec0a86 --- /dev/null +++ b/contracts/zkllvm/mina_base/gate5.sol @@ -0,0 +1,1008 @@ + +// SPDX-License-Identifier: Apache-2.0. +//---------------------------------------------------------------------------// +// Copyright (c) 2022 Mikhail Komarov +// Copyright (c) 2022 Ilias Khairullin +// Copyright (c) 2022 Aleksei Moskvin +// Copyright (c) 2022-2023 Elena Tatuzova +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//---------------------------------------------------------------------------// +pragma solidity >=0.8.4; + +import "../../../contracts/types.sol"; +import "./gate_argument.sol"; + +library mina_base_gate5{ + uint256 constant MODULUS_OFFSET = 0x0; + uint256 constant THETA_OFFSET = 0x20; + + uint256 constant CONSTRAINT_EVAL_OFFSET = 0x00; + uint256 constant GATE_EVAL_OFFSET = 0x20; + uint256 constant GATES_EVALUATIONS_OFFSET = 0x40; + uint256 constant THETA_ACC_OFFSET = 0x60; + + uint256 constant WITNESS_EVALUATIONS_OFFSET = 0x80; + uint256 constant CONSTANT_EVALUATIONS_OFFSET = 0xa0; + uint256 constant SELECTOR_EVALUATIONS_OFFSET = 0xc0; + + + function evaluate_gate_be( + types.gate_argument_params memory gate_params, + mina_base_gate_argument_split_gen.local_vars_type memory local_vars + ) external pure returns (uint256 gates_evaluation, uint256 theta_acc) { + gates_evaluation = local_vars.gates_evaluation; + theta_acc = local_vars.theta_acc; + uint256 terms; + assembly { + let modulus := mload(gate_params) + let theta := mload(add(gate_params, THETA_OFFSET)) + + + function get_witness_i_by_rotation_idx(idx, rot_idx, ptr) -> result { + result := mload( + add( + add(mload(add(add(mload(add(ptr, WITNESS_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))), 0x20), + mul(0x20, rot_idx) + ) + ) + } + + function get_constant_i(idx, ptr) -> result { + result := mload(add(add(mload(add(ptr, CONSTANT_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))) + } + + function get_selector_i(idx, ptr) -> result { + result := mload(add(add(mload(add(ptr, SELECTOR_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))) + } + + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(3,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3009386b52e5055b6bf772a071193b84285e68e8c1c6d04bf9eb3e04ec7c1416 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(4,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2f5ef53c118f839d17420d324b653d32e3d2c07eecdd7cbbc0da152db7fb0ea + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(5,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x229efeb32c10f2782fc83a94205c8f58eef3df9ec21e4c02616e6082ce7fe370 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(6,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2dc1e7a4d1380f8daf853e1b18bca7646fea0920c2bec67d1b4bc765a06f3adc + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(7,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xf487f3f3e34f9f69dc8cd7db38afe8278ccfd1f8b4443f3de453ce31424130f + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(8,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2204c7fe4851b1df6097e6a9ed69a391eaa3ab9f175e0ade523f3a97290a5012 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(9,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x10211bd7fa4d88bf9b169c38beaadaaa20ac02ea76bf1ea90db4ffcee0fb6ad9 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(10,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xe4d49a3bceded12c90225aca726f32656f4cf07758d01febcb7cba7b81b5dd6 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(11,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x21c35fcc27bec49772485abc19d53d198c01d89ac14bc17e9aca36cafce61f12 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(12,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x33710ee97bdafd73ad5cd26c06ceceac3d17fc0aaaee3666cf2360d5cf252bcf + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(13,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x8738cc8c5c95a126b5cb08a1a218585c0beaecbf5cc0c202a130e1d7aad9c73 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(14,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xde75113dffb75a9bfea170dde9a8041d9aaf4f7315707c01690b67757a3d0bd + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(0,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xced10834452cebcf0df0cf6ce4f8fc885cf875ff12732c58c5a68c0089886b3 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(1,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xa9bb658ec7c98b39f805ce21273f3f2f5259db645e66049405e6354d245b875 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(2,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x333772e36eb7e2acdee8b1aa4b64db7aba1a1101469f45e982b310304a824ca8 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(5,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(3,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x22103342cc8bf7fc52d7b43b7546a60cd88d4ae331d9325ad3a2e5596f33cff2 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(4,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x12d9c33d1650ed92897261e2d40d340d01e2da78ec9ba48b9bbbc529118fcb03 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(5,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2ee1ceb24904e5d71dbefd731c2cb83afcedf5c09e3bd0c1012d36d1b8616964 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(6,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3d8bf6bfe16dffe2bcb345d797161c8eb214ff39d21fd52c668edd71aec0bac3 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(7,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1b57ad420634d570122a17a5a67982b70b8df3802bed743a94afefe58f000061 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(8,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1fa2e4f11ca609de7ba539b0081c7c5c36c4b8bedf2392c621e65ed1b8cd6293 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(9,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1a3cd81d336c1390f0dc4a1be36ce40463fa86218bf75669d010b71167d206fe + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(10,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x620c1dd2dd4f64bd9a25af10e8a6f633aa809f073b3192b7c35227c77b67d48 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(11,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x364f72a77ac27536f73a4eb1a1479ee4dc52895163b0403b9f9d7dde03205600 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(12,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x21319dc8b28618e824b59706322550ad29be49c295d73827d36b554263a85f5b + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(13,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x42f7648d85f11f71d9c05a1ca49e7249a6edc2e0608e4a5b52fe78964605e40 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(14,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x12158a0c85263036b36aebe404b8e633ab66439493bb4bd8611df7e584d502 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(0,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x9205e75645e4e6bdd7b6b575350f9975702ec52346c56c9e71e6daab2f19a34 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(1,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2e616724c0b6328034c4f9cda98263357cfd0deec832e4e3a3b0cb5dbe6ce2f5 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(2,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2eff4de3cf9b8a27e94c10328a3c51ecc5f1ebbf43e056f0db91b1a7192fd3e8 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(6,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + + } + } +} diff --git a/contracts/zkllvm/mina_base/gate7.sol b/contracts/zkllvm/mina_base/gate7.sol new file mode 100644 index 0000000..59ae177 --- /dev/null +++ b/contracts/zkllvm/mina_base/gate7.sol @@ -0,0 +1,1008 @@ + +// SPDX-License-Identifier: Apache-2.0. +//---------------------------------------------------------------------------// +// Copyright (c) 2022 Mikhail Komarov +// Copyright (c) 2022 Ilias Khairullin +// Copyright (c) 2022 Aleksei Moskvin +// Copyright (c) 2022-2023 Elena Tatuzova +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//---------------------------------------------------------------------------// +pragma solidity >=0.8.4; + +import "../../../contracts/types.sol"; +import "./gate_argument.sol"; + +library mina_base_gate7{ + uint256 constant MODULUS_OFFSET = 0x0; + uint256 constant THETA_OFFSET = 0x20; + + uint256 constant CONSTRAINT_EVAL_OFFSET = 0x00; + uint256 constant GATE_EVAL_OFFSET = 0x20; + uint256 constant GATES_EVALUATIONS_OFFSET = 0x40; + uint256 constant THETA_ACC_OFFSET = 0x60; + + uint256 constant WITNESS_EVALUATIONS_OFFSET = 0x80; + uint256 constant CONSTANT_EVALUATIONS_OFFSET = 0xa0; + uint256 constant SELECTOR_EVALUATIONS_OFFSET = 0xc0; + + + function evaluate_gate_be( + types.gate_argument_params memory gate_params, + mina_base_gate_argument_split_gen.local_vars_type memory local_vars + ) external pure returns (uint256 gates_evaluation, uint256 theta_acc) { + gates_evaluation = local_vars.gates_evaluation; + theta_acc = local_vars.theta_acc; + uint256 terms; + assembly { + let modulus := mload(gate_params) + let theta := mload(add(gate_params, THETA_OFFSET)) + + + function get_witness_i_by_rotation_idx(idx, rot_idx, ptr) -> result { + result := mload( + add( + add(mload(add(add(mload(add(ptr, WITNESS_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))), 0x20), + mul(0x20, rot_idx) + ) + ) + } + + function get_constant_i(idx, ptr) -> result { + result := mload(add(add(mload(add(ptr, CONSTANT_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))) + } + + function get_selector_i(idx, ptr) -> result { + result := mload(add(add(mload(add(ptr, SELECTOR_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))) + } + + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(3,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2a86e064415dec6c8df737d86b1499810cc798bfa396ae72191de52e1b15aee8 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(4,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x252414a163b2aea1302daf1411a95d580b5b5abe407724dad781ee674caf419d + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(5,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2040b8c77bb565db6513dac171bd9f1b773cb6901f234e1b786e226bc311343e + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(6,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xbe756d6aa913ae5f79ba644619c57de4e3f606f3ac9647ffe394d3cbcb150f3 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(7,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x36bf94a3c50fd6f0668bfa2f3ae4196add96e6bb34be0e6a25c056e8cd170063 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(8,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1c131a28f4c733362bc326dc1a1c1d09f52911bf780b0a19a091c30bcc90a43a + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(9,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x27ad2a8b1b92c8f5f4e19b093be11472e1770236e4a6cfb6330e01f48198dcb4 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(10,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x359a8fd833172b0dc715769221d8c48aea919094bf168cb4e5b49354d74f3171 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(11,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xb7d0675b913ca7ef7044497026b070d679f5c89cd9dd7896ea822a7aee0a5d4 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(12,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x9d0e9b0736fa4cca5934089ece2dbd200eb78132a131ae6eca072b13ab9c13 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(13,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x381c680afc063e315fd7b9a4d6af15bbd730d31153e52374fa8a9e967a96b211 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(14,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3bfa0e038ee78dc8c2914af5f60404fa6fd65e1b68980b632e3f7ed624e8578b + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(0,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x341f7b714c1f638fd8eef527bd3afdbc05aee95abec8b5149c2e69985da9a740 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(1,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x19487877026753fdf4536d2f1886d44a225992457174b1257b94e15ca2645791 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(2,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x702ace72c6faa37d0106422cccea5ac0637d4c5cae038b32927a9d9aa205a8e + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(7,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(3,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x7f42fc47bf3b73745c7cf1835318d0707f696da7ceb8686b064748482ade923 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(4,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1391a8223e2837e5fd6612b63c28b8a6e0dad0b99a1c166c430aa790ace4b1e5 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(5,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2e2c57e4d9d038910af91192771a66e3145dcd5e37ea1f9f407bbb0943ba7b0e + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(6,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x36494d7c1450ba044e1bb76965316419f767311e13c6e48941eb52365e458212 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(7,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2a2af6ae9b377a89c057c3208892bc9c9fc47ee44cf79575e236511f53afb523 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(8,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xbd8024035c315dcf9c14ec73afaa39374aa56a9570fe65a769a005e00826edd + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(9,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x18d0ed18cef8848bce810dabc3cc479e8d6b7b5612a5172cb8c7ca7a37e97a03 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(10,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3acdc07a21473f83e6c3c858c28909eed8df07c1dd701802033bad05960bd69a + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(11,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2a31bea1351b45bd4be815c5afe4bb98d5229fe2959fc510402276dc7ad2c29 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(12,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x31713e7384ad3aeb2bdfb80e0f4d56f36985d1c2ec53b17ec12fd4eee2c2470f + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(13,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3ea6e379a158f9a2abcfbae60744d9744487e9c10e67aa3ec912adae2f5610e7 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(14,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x12241111a135a2111b40e8763bca1ede065c1ea827408256bb8be4f03cee606 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(0,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1c96e38ff646d7c4d97899172b6e8e92e62d05151c58a03ca035ce3dc1caa8fa + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(1,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x193254d37c814153a415b41e290fb77fedb62587313297784a10e339682b3f66 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(2,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x12ddf98cf99b2a741f989252e011f16716204e87f8aa2b64e3d6dd2b208d10ab + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(8,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + + } + } +} diff --git a/contracts/zkllvm/mina_base/gate9.sol b/contracts/zkllvm/mina_base/gate9.sol new file mode 100644 index 0000000..4b01391 --- /dev/null +++ b/contracts/zkllvm/mina_base/gate9.sol @@ -0,0 +1,1008 @@ + +// SPDX-License-Identifier: Apache-2.0. +//---------------------------------------------------------------------------// +// Copyright (c) 2022 Mikhail Komarov +// Copyright (c) 2022 Ilias Khairullin +// Copyright (c) 2022 Aleksei Moskvin +// Copyright (c) 2022-2023 Elena Tatuzova +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//---------------------------------------------------------------------------// +pragma solidity >=0.8.4; + +import "../../../contracts/types.sol"; +import "./gate_argument.sol"; + +library mina_base_gate9{ + uint256 constant MODULUS_OFFSET = 0x0; + uint256 constant THETA_OFFSET = 0x20; + + uint256 constant CONSTRAINT_EVAL_OFFSET = 0x00; + uint256 constant GATE_EVAL_OFFSET = 0x20; + uint256 constant GATES_EVALUATIONS_OFFSET = 0x40; + uint256 constant THETA_ACC_OFFSET = 0x60; + + uint256 constant WITNESS_EVALUATIONS_OFFSET = 0x80; + uint256 constant CONSTANT_EVALUATIONS_OFFSET = 0xa0; + uint256 constant SELECTOR_EVALUATIONS_OFFSET = 0xc0; + + + function evaluate_gate_be( + types.gate_argument_params memory gate_params, + mina_base_gate_argument_split_gen.local_vars_type memory local_vars + ) external pure returns (uint256 gates_evaluation, uint256 theta_acc) { + gates_evaluation = local_vars.gates_evaluation; + theta_acc = local_vars.theta_acc; + uint256 terms; + assembly { + let modulus := mload(gate_params) + let theta := mload(add(gate_params, THETA_OFFSET)) + + + function get_witness_i_by_rotation_idx(idx, rot_idx, ptr) -> result { + result := mload( + add( + add(mload(add(add(mload(add(ptr, WITNESS_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))), 0x20), + mul(0x20, rot_idx) + ) + ) + } + + function get_constant_i(idx, ptr) -> result { + result := mload(add(add(mload(add(ptr, CONSTANT_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))) + } + + function get_selector_i(idx, ptr) -> result { + result := mload(add(add(mload(add(ptr, SELECTOR_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))) + } + + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(3,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1448b44e7ac8dccb5b10a092e71d131ae1bfb2d104b49b4404761f71f416de82 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(4,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x99daf016d73ba272a55ca0f5ebd8ab71a475ca2853cdf804092081f7ae4ddfd + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(5,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x279707ee7b7d394b5a59e57e375535ed98f3815fe855bed796ff9776423cb510 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(6,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3486fe398f1e28a28d914772fff6af4c58e2a8046282d4824d51293ed0874b2e + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(7,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3cd3b427548f1e0da508850a822cbf373b7df7fa2987103e95fbeb86246f4791 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(8,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x231c924ce01915c326cf724655bc5750c604f00b62fc5d1d983c4938793f5477 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(9,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x19a691561e6ea1ac25cb86162ec3c36e1d40b6b76b1aa10a99c0889701b48393 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(10,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xf0d695d967975803570a4e1d963fee9f1f8a5e4dff75ef48abbfbe32c592a25 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(11,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3da7769e1008768278149538dcaf1060cfe292b43d7ac7e50792979f02e6862c + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(12,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x295b61968de17f96f2be1f9dd61643d2674cf65014946592be08ab93abf629d6 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(13,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x28535fd3fae03527f8c30298def32bde81510710d02b4cdfbf251af93a25842 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(14,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x16642b758bf4886ff8ad97ced547f8d3b0047b1663097975b6d8fefd6ae7b84d + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(0,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2e59647982615dd13e4d0d71699e8ed63ed7a94d5f64e6afbcc2ee336f8d6fd6 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(1,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1a43e50c6e0c3e0dd7b56a256d4a77c3070c5882be29a068b1862122dd259b33 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(2,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x9e54c7bc0b272252121c627d44e57ef82bce2225f3b7d8c62cf4cb46a21f457 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(9,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(3,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x710c54a49e3ee85cb9a5fe8563745b3ffd03f47e96de4c99257678c0b622ba6 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(4,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x66d07c0d9ebc24242cca9fb5e5eb250febbb4bfe4b57525042e8196f5551df2 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(5,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xafd78688148e37e4ef132fc655266307859145bc64b2deb128f132505e239c9 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(6,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x504a43ed9fdfa79233345cd22fab3267e52e0c73eb680451900e83b25682914 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(7,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x28d483d27181b4f92e7c5da8a486f8b651af8ca772e8f12109d429c08d621990 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(8,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x114ac01c5d8797758fb6ba961ab5f0f2fbad634d4284615ca459c82b0982a81d + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(9,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3c8a51a94726cef2aac12882bf92123c320d5aa1d7318750aac2d535f874afcc + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(10,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x22b65f2ac43d66c340e04a2e256448903ddc28ca336724dbeb6ddc30e83e10c9 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(11,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2cd2e8478354928f82205e0fe20e8db54ecd41127f88a9fba2190ab6806acea1 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(12,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x39d25ad7f6b727393b5338195e55bde112a7d782650bb2a698cc72a1198aa07c + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(13,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x35b4b2a321ab568b15b1a811becd2d54fd35d5fb1733c844dd6e0fcfe5227f08 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(14,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xca90e04153b6c33548ad48f44127de33dad333a76c82170cbb434f90079b170 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(0,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x25642daf8a81d610b6a646410a64b19f403c42cb8be86733e1431140986386fe,get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7b55f6050c5b78c81d29b095fcf55dbf3d93bb6ae6857e50278a679df3af934,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d484fdf643cf7ff9b2a31b585fc9ac2a1233f549a628a5931b192e6193012c,get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3bd8de175633cdaa87ae014f1fe6f3a22651cde07a05259d1ac7f2260075bfa8 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(1,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3611a838f43caeddf4ef867c503054417aae305760a767dd747585f94b40c5bf,get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1f67666943d65692e897b2c52b37a67ef131727cd42a9b9d7a92d598c95dba72,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2b1c6524d1e8e51dcdee9be61180d9270927bb1363e9d68364b055783c4d1964,get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3ac264d9cc000ce35b03a8db3194bbddf0c5702e193461487744c1a53208b750 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(2,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28babbca8497809a56a6f3e209de7e74cdf3c327c7f37e8763ae1fc9e9109836,get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x356d9c23e5e62e83040ea4fe9944da08c669ca8e81f47139c3efafcd3d3beca,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x30e04108a2b549c4857ed07f484fc8c6f6a77299f927ccf4bc7af17f551eeb5,get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1982693515021a242c24e0f9974f6332cf1c760be8f864aa2eb4ced304b37fe5 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(10,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + + } + } +} diff --git a/contracts/zkllvm/mina_base/gate_argument.sol b/contracts/zkllvm/mina_base/gate_argument.sol new file mode 100644 index 0000000..743d55f --- /dev/null +++ b/contracts/zkllvm/mina_base/gate_argument.sol @@ -0,0 +1,119 @@ + +// SPDX-License-Identifier: Apache-2.0. +//---------------------------------------------------------------------------// +// Copyright (c) 2022 Mikhail Komarov +// Copyright (c) 2022 Aleksei Moskvin +// Copyright (c) 2023 Elena Tatuzova +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//---------------------------------------------------------------------------// +pragma solidity >=0.8.4; + +import "../../../contracts/types.sol"; +import "../../../contracts/basic_marshalling.sol"; +import "../../../contracts/commitments/batched_lpc_verifier.sol"; +import "../../../contracts/interfaces/gate_argument.sol"; + +import "./gate0.sol"; +import "./gate3.sol"; +import "./gate5.sol"; +import "./gate7.sol"; +import "./gate9.sol"; +import "./gate11.sol"; +import "./gate15_0.sol"; +import "./gate15_1.sol"; +import "./gate16_0.sol"; +import "./gate16_1.sol"; + + +contract mina_base_gate_argument_split_gen is IGateArgument{ + uint256 constant GATES_N = 22; + + struct local_vars_type{ + // 0x0 + uint256 constraint_eval; + // 0x20 + uint256 gate_eval; + // 0x40 + uint256 gates_evaluation; + // 0x60 + uint256 theta_acc; + + //0x80 + uint256[][] witness_evaluations; + //a0 + uint256[] constant_evaluations; + //c0 + uint256[] selector_evaluations; + + } + + // TODO: columns_rotations could be hard-coded + function evaluate_gates_be( + bytes calldata blob, + uint256 eval_proof_combined_value_offset, + types.gate_argument_params memory gate_params, + types.arithmetization_params memory ar_params, + int256[][] calldata columns_rotations + ) external pure returns (uint256 gates_evaluation) { + local_vars_type memory local_vars; + + + local_vars.witness_evaluations = new uint256[][](ar_params.witness_columns); + for (uint256 i = 0; i < ar_params.witness_columns;) { + local_vars.witness_evaluations[i] = new uint256[](columns_rotations[i].length); + for (uint256 j = 0; j < columns_rotations[i].length;) { + local_vars.witness_evaluations[i][j] = batched_lpc_verifier.get_variable_values_z_i_j_from_proof_be( + blob, eval_proof_combined_value_offset, i, j + ); + unchecked{j++;} + } + unchecked{i++;} + } + + local_vars.constant_evaluations = new uint256[](ar_params.constant_columns); + for (uint256 i = 0; i < ar_params.constant_columns;) { + local_vars.constant_evaluations[i] = batched_lpc_verifier.get_fixed_values_z_i_j_from_proof_be( + blob, eval_proof_combined_value_offset, ar_params.permutation_columns + ar_params.permutation_columns + i, 0 + ); + + unchecked{i++;} + } + + local_vars.selector_evaluations = new uint256[](ar_params.selector_columns); + for (uint256 i = 0; i < ar_params.selector_columns;) { + local_vars.selector_evaluations[i] = batched_lpc_verifier.get_fixed_values_z_i_j_from_proof_be( + blob, eval_proof_combined_value_offset, ar_params.permutation_columns + ar_params.permutation_columns + ar_params.constant_columns + i, 0 + ); + unchecked{i++;} + } + + + local_vars.theta_acc = 1; + local_vars.gates_evaluation = 0; + + (local_vars.gates_evaluation, local_vars.theta_acc) = mina_base_gate0.evaluate_gate_be(gate_params, local_vars); + (local_vars.gates_evaluation, local_vars.theta_acc) = mina_base_gate3.evaluate_gate_be(gate_params, local_vars); + (local_vars.gates_evaluation, local_vars.theta_acc) = mina_base_gate5.evaluate_gate_be(gate_params, local_vars); + (local_vars.gates_evaluation, local_vars.theta_acc) = mina_base_gate7.evaluate_gate_be(gate_params, local_vars); + (local_vars.gates_evaluation, local_vars.theta_acc) = mina_base_gate9.evaluate_gate_be(gate_params, local_vars); + (local_vars.gates_evaluation, local_vars.theta_acc) = mina_base_gate11.evaluate_gate_be(gate_params, local_vars); + (local_vars.gate_eval, local_vars.theta_acc) = mina_base_gate15_0.evaluate_gate_be(gate_params, local_vars); + (local_vars.gates_evaluation, local_vars.theta_acc) = mina_base_gate15_1.evaluate_gate_be(gate_params, local_vars); + (local_vars.gate_eval, local_vars.theta_acc) = mina_base_gate16_0.evaluate_gate_be(gate_params, local_vars); + (local_vars.gates_evaluation, local_vars.theta_acc) = mina_base_gate16_1.evaluate_gate_be(gate_params, local_vars); + + + gates_evaluation = local_vars.gates_evaluation; + } +} diff --git a/contracts/zkllvm/mina_base/linked_libs_list.json b/contracts/zkllvm/mina_base/linked_libs_list.json new file mode 100644 index 0000000..b729908 --- /dev/null +++ b/contracts/zkllvm/mina_base/linked_libs_list.json @@ -0,0 +1,12 @@ +[ +"mina_base_gate0", +"mina_base_gate3", +"mina_base_gate5", +"mina_base_gate7", +"mina_base_gate9", +"mina_base_gate11", +"mina_base_gate15_0", +"mina_base_gate15_1", +"mina_base_gate16_0", +"mina_base_gate16_1" +] diff --git a/contracts/zkllvm/mina_base/proof.bin b/contracts/zkllvm/mina_base/proof.bin new file mode 100644 index 0000000..52047f8 --- /dev/null +++ b/contracts/zkllvm/mina_base/proof.bin @@ -0,0 +1 @@ +0x000000000000002014cb1a286c58c4ab2ac59057c827929acd2caf324140fae2d2c0dd768bbfed7c0000000000000020b3799bb2b33db62682d33a18f7e53d7c6831a34944d341f9e28d32d59f24fe550000000000000020e8d97ac3b25abd10e6f572df58a247025f5ae92954ae5f0fe782d2662ff4a767000000000000002086717ac43b7d5f82c8302f3d130b855380f095945b7e69704f38362537aa44091cfabb054c12cd71a0e49d558454af35c6fa55fdc11ab3ba7e9386f5fea75f7a2a1a4bf5fed988d7b3a0d882ba1dd35487ef417fcf1ae607652c1631ae9ed09100000000000000040000000000000010000000000000000313cce3fbe2ffa151b5a9ead5bc4c0a1ec86f1fec6d6acfc0415761e29ea022be1067bbaae9780a6d25fdd013b4e2ec9cdef3ef1ead105fbb92b6690c8c8fbb542c9c23f6daee1371a349506109bd90da3c2fcadec128f1f2759f22e1b2bc1e6d000000000000000336f5c615752f7ee51c51f4f6529b02f98a8019e2eedc18a2a3c7b91e726376520324f1bee5504015518e9d7463f0ddadd993b324d2d917f5f8d2d11665d408ac3981dd9fcfd5fda17713ba27af721d1ab84e12772957ca3407f6e662fde7d00d000000000000000333ededad7f29694af337640b2db62bc7508f30441c64ace3e941ac2d3ff3014209bb76293c4c1749f575dab500620b54bda0bf84888053e370f350e78a46aa281ac1f3b817303e9f3d3a2a36aab4a8ec9efbf2e83bfa9f8411c761cfb331d0e20000000000000003212c7af8f01c4e46539a61dd6714e82f41a84bb0a3221077182fa0c4cfff47d522ae21015a789c482bd7efa40da3f64345092abe63f60fe5f901bc09f0bf949e35108299e90f77b5f7d804114e25e6fbec03097a142424c72d40616c79cecee50000000000000003264c84e3d6d8a7d9721a20cc0185bf07fb6ab61ea8459cd80ee992c8fb8a0e822ac960e6a1773743c7fac7bc3c64d383dd8f83034f06b35fd1108f68fdec24242f5dc6b6e3700bc35782356156b211714a5cbbb757cc069df4bda3a1a3e4b0e900000000000000032a996ab9875716152bcadc1ddb942435ece805d11b86266b57dd29cf4edce0c50d2f7c4a5917fd2410f4c94e311270b61eb0a56cdab2817d19f329f1d6807831025e55303c0dae69f899c103d68d36157596c4e777bb2ba694793ab7442502b40000000000000002098e202af58516e27b2bc679c8474220358373625925bcc479c85fe37cb4551310601b373bfdd61a910c783005e8fca4daadd32ee1c127570136e4853685cf350000000000000003322d15b75e8541d64520be70443466366772ef1dea0b0512e493aa0b9e9fe32412768525718fff265c79f8d06a511cbb3940b7df6ece6495e8f91d081ee8491a003b9d0eb64e989e9c6eb50778811ca0517020cb0bc7d59e423ad2fc75df827700000000000000031d6d1d0dea6c034c3f5ea2a9b9aa7a557fd81c36007aafa341c567424b8d1291267aa916eee51d77123414daf0f98eafa904f2f5bcb4a9854c1beb1ddb6717b52386fa4d10c90bbade5316ca76312a81e2f0f49ef77156fdc0e777d8efeba97f00000000000000032d11cc8f25a1875ae84531feacbb2247b133813fadeb99786230d53024762ef422e91d1707986d444b304e8c7e449a4baee35a858d36195f0b2f16cacb449b15027745bedb5f8c3e9127edc32907ede0117e40cafb12bb505e6dde86081b8c3400000000000000030ab79e3cbd068534985889abab3648697ddfb2d7d7b300d965f50396f35015ba1323dc6fc42e71c62dc39dfe458de5790ba6c72a4ac01c222cfbf31e85ebceb82371e3c3976dd9b06e2c38f6b0017caceb221c7a586a407299b95dfa5f1a27070000000000000003283ba6860a6f8bc8078cb68c9cfd7bef5574b58c29dc9a0c816207303df277dc15b305c55d90eb1e374af61a530e8240eb88e8b9239b91068a2954c8e43b07cb0013cb16d17fd69593446fff87c3a5da892f897858c173e9bef3f1a358ab6bd400000000000000020f264eb9bdcee242a45647375d412061aaf87458de3f68992cb43c14263588890857636a2d19e26e512e280ebaad0053e995f3b621c2d62f95d7674edbe0ee13000000000000000200374fa9569900a515bcfb4cc567bc1fd1d8dceeb263b575ea1ddc60e1c683e925e5f202adadd6c0b844876aaa1f864715a6c27bd5e9f1a4fc360a048a4d86a400000000000000023197307388b020679ec93ab82662d3010fe511e3ce705a912e62538c746125290ca7d4cffac824e6b5001a3678ad3841bf85415e6a877215f77f4be7788cc04900000000000000010034bb7b023343677744637fb03b6b74b71013065252908acd9e926e20f8988b000000000000000100000000000000020f55858c4757b0c4866f3134e5038c652bfdcf29e5f736f1ecfaee79eac567a71e7a81f69b4d36a4c3056e8888e4b7a0d0750414ba566541b2d5c9d1a829a86d000000000000001200000000000000012ff2d36117d2b6d1b710ded9ba86618ecf71ddc747f8424d971e4236d69004d90000000000000001133bf41c2efcb5798e985dbafb52cf5156a41cae929d74cea89a7d88c1048d050000000000000001250526e7e3be9978b3d7347d5e5179122401b6948426b7d25d1cfb387f56ec9d0000000000000001343f3e3df4d15f7e1ca5b26818f046178cddd0020897e25ab45d4479cd32cd0c000000000000000116ec5b9afa9fddb5a1444ef86be06debff776a722920898091c66a484af02f6c00000000000000011e09dd75b248d709e7bbf55f6d32bee4046b7b0fb72971cdf7c340a69fd0eca500000000000000011ea9b055ef6d81a6bf7f2de5eb2f51540845985d6cd83aa8007122416b146c2f000000000000000100290d14f1878f0cbbf08b2c7eb59871e4a16a3a6b49cfb2ed35202e15bf4380000000000000000126c84b8483bab3972ac06b8032ba0e7f38e3479985981618fcc472501e6eeda5000000000000000137ff0ca960b5b175425cc4f9de7413c7edb98a4f65bc3d38d3923a16b0009d51000000000000000113392ddda4cdb03f5f1e9d4fa524ce7040a35c97d4b9069e64a412d6e7b5d4fd000000000000000105cc297c54a8b1f95e9237737ad208b630611129730338f2b1a39e8de931332b000000000000000112668c7ef69ff5a9da88df2845479eaddea16ff4719d277121fc807c5e642d08000000000000000101db497a3b0980697c2c59d84f782eec84f271c34585bd7d38579197c3e426e30000000000000001009b323068a189cf80a3bb674d775d7c433e02f4a614b7444333a53b69866b3c000000000000000128cab0b7371e6f56d7e5a61f508732eff4d5e45e6f1ddb7d556b3485fe49acea00000000000000013340e839649c7d2bae604890e1986775914705f5f8b841aa71178c1bdf611f6100000000000000011fa35b582008c73d600a84a32e1e999185e764b606f55d083c88464e8d579739000000000000004300000000000000011cfabb054c12cd71a0e49d558454af35c6fa55fdc11ab3ba7e9386f5fea75f7a000000000000000110e5a71a7c5e0338247712ab95a76c0c9e567bfcb2eb906d468740f3f944dd600000000000000001147c43846dd61018b6535d59ec451c3ef569d2f3754cd906c77713d6de5852df0000000000000001266d5196252e507b8fa0d2c19d598d3aa8ca85c5413344064c26324557b99e5a0000000000000001002297eeb9e79269ce241dc812bfc224e520d1e62a1968ccb1376893b6a017bf000000000000000100acf7a9a185dc1106b494e85dbecab879a4197ed27f0bff76150ae2912076bb00000000000000010360d650279d4c552186e889d4b9f59a60347f7a1c7b3bfd4e69366cd5a251a7000000000000000110e42f90c6127da9a7a28ab127a1cc03e1067d628e682bf2880e10202c2b984300000000000000011474edd3de5c7450462cb575c628fc1342d9d9f0bebbe2a10f191fb3dcd9f94e00000000000000012648a52357ce45915edf8b4cdeccec602bfaa8b7b05e7409b2506d965041de8500000000000000013f6b39b0b7075bd6da5db8805a009de09758199e5f3e51f94937c2159149589700000000000000013d1820739324cb3243d49a81c20315626b9e1c27b703b570096206b7d66ebaef00000000000000013178a241dfb7f7fb53270488ca0f6aeb90fc28d66ddea6c1ca355de33029a6a70000000000000001375b2b495e97d7e89fc316abf24d16996e19013c09725676278342a8f0d04140000000000000000114c7d86ed8f7378b1ecf715bbb8170fe9d62a23c0a07cbe060db8998b411463c000000000000000127e73a2a3cd415b79a0d36caa98734f8f0a6923028da02464b1c7f0e84565f2b0000000000000001078422d330246c96024211f54fa408dc4c6d0ffcb05b200cac06e88195afdbd40000000000000001062253cae1b85eea3a277f8c73bc5ef54d408fb3eb87c685fc747c4fbc414b96000000000000000112a388a0a8a66ef623ae1aa6d3259f145722f53557acc6cf8c3f970a18f6e4b30000000000000001391c1a1e98354fb99382552e0d01c2f16e23677fc9760bbe7c504ac8b3859bec00000000000000010a3fe93ca50cd05808acad320c5c32bfa7dba62c42372fca0edb62a65aa8f22e0000000000000001252bddd5abc1004b218ec7121eed41638d3bf87630892581aa99cbfedc7ba5c200000000000000012e2c0ff4a8ab90988b76d03b44209c39e134a81827a71d6e08bd21b3170e8bf900000000000000013cff91dd1f05d40e129a20e17dfb548d389a45a21e38547aabcc0048d1a4520600000000000000011ae6ba2a815d3ca4cd606ac609b4cdd68beaa81e5aa0c1565409f18513bf848700000000000000012011da638aa120135d170576bbc3a40778863703e0189cb30fdb2983a9a6231800000000000000013f022e28f476709068a5993acddf620d070a27ad4151b16b47f83a379cf604f800000000000000013b0ae6ccc65032d20b3bfe26055cea409a186272216492aa03245f6210ce18d400000000000000013d1820739324cb3243d49a81c20315626b9e1c27b703b570096206b7d66ebaef00000000000000013178a241dfb7f7fb53270488ca0f6aeb90fc28d66ddea6c1ca355de33029a6a70000000000000001375b2b495e97d7e89fc316abf24d16996e19013c09725676278342a8f0d04140000000000000000114c7d86ed8f7378b1ecf715bbb8170fe9d62a23c0a07cbe060db8998b411463c000000000000000118cdce3d748f460a4029272116d086a00298619b61d1f7ffa1f254b962cbaff000000000000000013c016d06271907465b60e3d65ab60fb9c562e32e68613f9096f4a31f49483edc00000000000000012dbcb53a1d20faad054d31997e87f384d067fe86099316054062ff1b1d946a9b0000000000000001387d3c716cfca2ed1f59850ea5b8886e02db8792a7add5eb4bbe37ba6e25894000000000000000013f4d6b421651bbebccad7e6138a1e12ed4a2347604706ad333344f12c5eb82ad00000000000000013d037abd9a03aa19c2476186ea1be8ddebd050e3c320e2980414aa4b10cfa1bf00000000000000010ac2c9afac705e36fbc080cbd05bec9f24858d2be614e787fa936a4986fdd22b00000000000000010a82505c7328c9a443203dd77f1da1324379d21823ad492f4c3c1565b18c286400000000000000011a28037852c09bbd598e07952f15d596f0bc53b08b59b336f0ba35b2646926e40000000000000001325113e909f164be212ee2b3a7bf3c61570a45e0a95088e4e1a0d952debaa2b10000000000000001311c1f4d94c84f035b4d5d5a92727a761785bac5482f6c52f4310e0bb92e34a4000000000000000115d91f44fdbc0a886dcb0a0366631fdaca42b071ec59adfcbef6d0998a76f82300000000000000011c8d88c7ea19b2e7cd2af41ce6936798878b03540d262d60c15f4c92ec0f06b8000000000000000102337403f74e49f26e1aa3818b4b7ec6c6ff8149284cf4b2910144b7dc097260000000000000000120d147c26c3bea231f87433b51e25addc9dc32f92a0730dec2926a4a01e4207a00000000000000013c0b67d6684d5b65fef4deddd0622c0d9a5b6f1b6b65d550637b0513965f125d000000000000000117b01ad7ee7b9d7bbd889a439dbcfd3d1768af3578770787e37a8cfd303a2eb40000000000000001379234d5017db831fc42ebd3e3b4c0550a0b1552d95d0276de5b20e0cc64459200000000000000010bff1248a0bf01fb05bd309fd3d9e16cdf11cec1b96cfdb678d5082b82183d7800000000000000012794cd3e8f5ddf7547713bbabb96eaaf2c43646a375863099cb29ff3d8be260e000000000000000135a23b1cf43c40bfb5d65c77ca84f9081a34186d354d6afd2de831c24923eab1000000000000000114c820fa8ee93cb28488476694fdb87a1e847b0a7614d6b349357fd13774f10000000000000000011a11e4eeb66384f86dafb6b0547c0772281396731077a610171622ffab5a9ab30000000000000001369e6205f77aaeb2b65678bb102bc1dba52d8bfea1c6bba92c930ae9326660eb0000000000000001210678c1a7581ebb87f3f223ca2d58ed215b38f5dc6eda2f4a3f8e1bb1551920000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000012a1a4bf5fed988d7b3a0d882ba1dd35487ef417fcf1ae607652c1631ae9ed09100000000000000012c0f7faa98ced5cc2c21e9f45749e6eab5e99844595aa4e1ad73b380c415b50400000000000000100000000000000020979efed344d3af4abce365e81207d83a8d909f8ff4e32f936d87aa0bac7983d90000000000000020149a0577ca6898642f277429dadc5df8bc3a56e16f1b87a2f5c3e45116fdef75000000000000002015dec83b8a701e3a8dba34b8237dd2f7e4ab7565f8e81f3dc0fdae2a0c85ad100000000000000020d6e4a966a7c7f6f32f3a643421c51839b2ec8bc31d734b6a0e67c6ed4135f25700000000000000207ce51763167c2d5d61537d41337a8ef59fecef3bf2ecfe6d3b79b2fdc48c576a0000000000000020223b8f544e9763c5295ccaea6eb3b7cb1301419b4cdf939a065d9a9e03221c4200000000000000200fdd2b336f69dcfaa4e58a4dfd3181ca6cd4ef89828312e1ae53351bec7c5b520000000000000020fe5735b472609d52f50c9af7acebdf51b0136d833041e9902de1009e12dae8c60000000000000020d5705c7f7acb049c1d7cc974667c1b1f4224452d9f625be8d0a47b3b1840727e0000000000000020e950a5a0895127c95a36fe86863f28870b0157fa416b7c13fe721cf23da3db860000000000000020d48556dc18d572c1592a5fdada495a41b85b6468e628fefd1018d0bc3e2e35da000000000000002071e2c5d6bb501163893110a8ba67bf1fb5e3366e357f3f8390c7ffd8ac46d59f0000000000000020be4dc51a95106cbfbe2fb1855a7faca3c41c092b94732d454f4c5daa8545a7e10000000000000020232a105d258b8d50dcd3e46e1c13bcb3ab02dc1c373554ad086e3dcec0adf23e0000000000000020bee9323487a966666f79a4e3e054937b5315994054cdbd49852e71b19807fd37000000000000002060bd35c8f6ad3d0af8024557ada4a70f6c05f624b98bd6a000c08a4ddde8c7e600000000000000021ee7b8b67ffcdc5f05420e62c815466f6955536898b9d9f521e0660f514c67232564dc274ef7815eb78c3f945ebcb946d3ebf478b0162566bca6993a190510b30000000000000001000000000000000400000000000064ae000000000000002014cb1a286c58c4ab2ac59057c827929acd2caf324140fae2d2c0dd768bbfed7c0000000000000010000000000000000100000000000000010000000000000020d49549919a7e00dac71551dd4ee20a822fb1d9f44b0943a786cf645e7b81bdb8000000000000000100000000000000000000000000000020942eeec4d7ba4d74861c232192257077b5cf335ebab19ef9407de919304f4a54000000000000000100000000000000000000000000000020b167d17410d217772b41a0ab7c1f264fbb899fcd309f49a150f96b8800dd19830000000000000001000000000000000000000000000000202ff10ba9b2faeda05104dbf73e69a83a5fa48fde3776f5f0098d0b7373f914d00000000000000001000000000000000100000000000000208a977e44fd2770cbe3a7c5e5f604cb1f8094ad5466adbc660649b2d6eead31370000000000000001000000000000000000000000000000203a3e8a96840fcbca7e799217c1ba18a172721c0ff9e2165567cd07596b35472e00000000000000010000000000000001000000000000002075777ef2fb9ba4fddd10c4dfad24a2ac9e8c4c7385f824c78270582f53be906600000000000000010000000000000000000000000000002015d0d39a5e00da941550e94f971db47a78f03870ec3b4a4861b7bc86ec4fc3510000000000000001000000000000000100000000000000201663f21a1a689fc6ebebd71c1f3b6a77e29b1fc03e5ff9a81c9b499b5173593d0000000000000001000000000000000100000000000000206442b890248152ffaa37fc61acbec69b5db9ed38379e9bf5b8c3cb925bf31bad000000000000000100000000000000000000000000000020637a4203c0ea3d058cca3e35ed9b05288c1fe353b8bd40d1713761f780229caa0000000000000001000000000000000100000000000000200cfaeebc96978bb063ac14d8fbec0df7ca3c72e8472c1057e57db37e87e11af5000000000000000100000000000000010000000000000020b09ed4616df93a5293796f2d942e7363eed0a896123589cf1b4391efa0a2e2e5000000000000000100000000000000000000000000000020386ad29cf6b4c2b60bc236496613b7fc643b2ab118c971e0b38bc4e1f487c2ab00000000000000010000000000000000000000000000002031af884e42a815caa911b8b68c5c81bc80162de933f6df48c73b1f4b6b663e20000000000000000100000000000000010000000000000020a0631c443d2eda027eb66b1a243e3b9bc0454d1da2a989884880d8e9fad1b62f00000000000000100000000000000002000000000000002010272075b9910ed61e5c4b30ec20eab12358a071f519607578c0949f35777cc210272075b9910ed61e5c4b30ec20eab12358a071f519607578c0949f35777cc200a76ff255c3a0f15cf15814bf5df8ba6aa2ad2d219b47379d5a3a09b05e9ee500a76ff255c3a0f15cf15814bf5df8ba6aa2ad2d219b47379d5a3a09b05e9ee508c43954a3017746359f49010f84ab946d64dfd0a98c6ade849f024e3c15d78510d521a88acaddf74db588a98cf64af12fe9b59eaffaced942ffa8e0603c72a02fcc1510215860fe14cc28f98cc370b84effd6f642571402d76b540df23b21133b7e9adde53dfe77540b04b1cd90bbd2c079745041f69c47040dbe0906cdcf5a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001fe4efcf56610a39f327fa4a6f08f2db266dac334608303f5e1350ae3e01f9d4104c9744b376dfc2dd8b21d3607416b564a2054a4f23cd2c32c51ab48639c3ac15158c3b1f6f73439d588d76d1af7ba7d24a629eeb34d5b18918f0f665d5b3e1291766b9f5ecee8298348cc57d3c1886e524ea3847fc0964909fd1213eda3b5b141dc34b94c38465f526163a122f525e1c8aacf5a85cf41bb050f51a20d6703507ebb74b2e43d0ac181cee8f513de7b81a3bb61d24ffd9d0469042ae48abaa071fbfda6c4e56678a14ae4bbbe4c043c1a993c4e34ec7496be9c43ff4927dbb2822765f4d7df99c6a093925b4cdbb857b716e1d7dbe32436c0e18baffb0d0eb3a2b5d54dfc3bc3e4a89f94d5a3fc394e611c58d8127ce5fbd0ce5db314e82dd4837377f3e62e9c6b939f7064f800a9d583877736019602b5d09f0b1fb099cafbf196980d82ac3e398d1f395028f9a98dfabd9117a0b1bcdc12dc77d7493db5d3f285c2c0ea33d9bf3519324e89801ed7882c0f6fe9fc7746af3bee87606572c72355674f8b49e70150ca93d1ed655c7d1f11f746c5651bee8f81d11c846d35f021a7ed3d063fbc798d513a5dada262c6441499d9fb98a1a192bb6adda580640c72e5cc138680c92cc17c6b1bd6960c39285b57c7573953e18c1d52c6d34039db8139d42d8a9dc18fa879375f7425074b90f28c8494818d125da04cd2216ce894a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064ae0000000000000020b3799bb2b33db62682d33a18f7e53d7c6831a34944d341f9e28d32d59f24fe550000000000000010000000000000000100000000000000010000000000000020b8ec915946ec0754e58dfa0dd93b0fda0540bd70cbeb497ff915d0e1a7ae57b70000000000000001000000000000000000000000000000203967d6b8853e97049af066bbf189bbd82c20cab13fccea5a49366cc213ba98ee000000000000000100000000000000000000000000000020992b6350b148fac6f350ed764ff0b8247daf11eee0de168aea506cc5cb7a21190000000000000001000000000000000000000000000000204bd582eb35e26cc7bc7353f5cc7ede36c02fc22909928a48db4093126ac2f5fc0000000000000001000000000000000100000000000000209a37bd00dcef28dc2d8c2ebb50e64aa533b3036227d9d9e4a77300fc6eb884db00000000000000010000000000000000000000000000002043eb882e79308adad8ecc2bb626defe973f51157b075b8daefc783a227417e650000000000000001000000000000000100000000000000209581aeae9a64a9bcbdc47b6ccc5ca55c2183386bd70e121c6e983d7655d45ce1000000000000000100000000000000000000000000000020cde2aadec572cd76165a38ccbe4d2cb02896ff1182c1de4843be2a4c6f39e4eb000000000000000100000000000000010000000000000020df23174ce9f8f68cc9ffdb23ac8e6fa58b681cbba5f78da6f9f46b5435e175f00000000000000001000000000000000100000000000000201828b319bb8a50c9c59f893750eb864cff74ac82d589c3aa79115d35d13e5d71000000000000000100000000000000000000000000000020be121bd5730d5ec252df62d085bf48cd903e6849e9cff20077fcd685eeb226360000000000000001000000000000000100000000000000205bf55131faa55b6ad21a958dd22a46796cd5f99b13dd5e6fd3e5d8393aa75f6100000000000000010000000000000001000000000000002097734017d618d99400a2e4a7f51180b6deb42609b3caafe47d7017e47b7913ee00000000000000010000000000000000000000000000002047033ffd4b1a97ac782b129acc90603d77abce64191abc1554bf05d4472ecfc40000000000000001000000000000000000000000000000204582e1a214499058a4a77fd5de7518edbb35fc91e7b84e614548d4404611b94e00000000000000010000000000000001000000000000002010e5f08558c7683afc888014c3989accaee54f66bc8bf7b180654d0cfc03b61d00000000000000010000000000000002000000000000000231da5b9e01b13bbe092dcfc81cff7338e1183e0926af4892f583bdc4c1c4043332174c1d2ef84582964174300ff199c98762720dae82adec4d2798c74c254f2f00000000000064ae0000000000000020e8d97ac3b25abd10e6f572df58a247025f5ae92954ae5f0fe782d2662ff4a76700000000000000100000000000000001000000000000000100000000000000203e2092a0a6b023fa527e9167f7720422cb239636a6bc0abcfd59faa634240c31000000000000000100000000000000000000000000000020f2f9644ac33864db181fe9858b5c86a5e850da048a0be4df1ea04177b6bd9622000000000000000100000000000000000000000000000020197e863560fd1c03d65832534cbc510e569c6da5aaa1b8fb47d757803fbdaeff000000000000000100000000000000000000000000000020a4e6f0fe02db666dbea33ca82095d93ce9d54cfae8e3104a2fbcd699f60735d6000000000000000100000000000000010000000000000020850776d3f52c2338f29a11f57c195198c8129174582a6fd122d8cedf19b9e8090000000000000001000000000000000000000000000000200d22d7fc56d3374aacf2eac81a136ea30a64b8ed8ff3a300051754969745fd7a000000000000000100000000000000010000000000000020a0baa956d6504f75471511ed70444b751df1e788a35c050c948e6cab4bde79b5000000000000000100000000000000000000000000000020fd534a1666e163e5c5181e2cecccea05e710a37fefe015bcf52302fc3c424c9c000000000000000100000000000000010000000000000020f9099fe44068188f6e127d78cfa5ff116204c9514381f056a447889c1132204b0000000000000001000000000000000100000000000000205a4502a7ae298a328e1f116e5c9f66d3f5bcbc4ea4603b8b5f2426ff39eb0db70000000000000001000000000000000000000000000000205d9176a763d4e85fef4643a9605a924779d7ab9814c4c31c9b0076edffc0929a00000000000000010000000000000001000000000000002080131ca2d1bcf2c7e3dcc45dd68f8e6f43f08adab303af379aa6b461714ca5d4000000000000000100000000000000010000000000000020eaf9507d496f5c13d37eed733026ac07f4970b1d623daf31dd15aec0156216540000000000000001000000000000000000000000000000204f6d422d1cd92393dab45e23f9a18b5e2401147f4f069b23d023eddb9aa8e4240000000000000001000000000000000000000000000000205fd0b73bbe3b479016c615024b55d0d83b308125578070aa727bd181a30f796e00000000000000010000000000000001000000000000002038dee1f17eadf91cc84db949075cab1d85988517cbb11c3dc902d7ffa3ea0cc40000000000000012000000000000000200000000000000240330b2f07f11fefbd05d1668e18d641bec473c5dd6bfab279b3ba83e81447e8807dcd1d19820c3283829017fe8877201996f617555c7bf246563690bf49abebb0bd200b0b59175332a98269acdcb2b54a6e10b53cc1af3ef92f9abccd4167850007c9152c9cb4810fcf2ce49ee4667d66f0dcaf69319805a5b8877d29291635d14172daa47b68c4425fd881f412241c494c7fa16907dca36ba57ae1069bf9893316cc8ce0209ac748e9e45be48c9532c31b956bb0bdf0c540e8502643ead57a215e216a2d421b8d524e1ff03e2e888d0336af549d882e5acc1d6b2d6138fb03108daf59521fc50502fbedaf9ba5ddefd63a65af88eb8109a9183d9858601b18f3cf6fa2608eaaa00cac2a1a8a422c2abf0347519fa5e1f156f16304b60c6d5763cf674889db5b74aaf0edeabd910bb1da16a288ef8e1f163cbc1e06c447911910f5de915f06c37081fd2411ec5f6f943ecf12a179ffb408ea62dc6ae2b7a09512b123c161771e8b8433aa1a9569a03f5d778d782e34048d0b14875584eaa66952cd7615a81db6b54ff9331148f65f3f7d26f2fa49d9ea6a898bc660c624690ea0cb61d34b9e5e1cd932a444cecb39873666cbc0fc295f257d33ae4ec5855ff05031e29941262f695cec5506efa2bf4ba178cc2158f9f9b4e4291e18c3eec8fa5209eab75b83ebd63985dc06a0eaf303573c48c00bbac08bbc9aff81a29e890fe1c969fcc5eba298d95d9e44cedeed6fbc55675d99754fcc7d6c69a413a3453cb2ec8784948a0bf8b896e5b5b2530a0e1da82a71d249246b5c89aca20d2633ca42e24f43aaebb29c9e0b79c981b2fea563777c1bf2ce4154b6382488807f08edd1e90e834b584845b9e7d51045be078d5c1766ef75ee978938606ff66eaf5229d323ec2007a6e6216717fe073dd6793bef0d23ca1deb1d0cb14fd007870cb755606ed3744c7d0627068c2698dca3ce4bdccd0a6dce710c3e4dbac4d782baa164e2293a0182505143e275f762a2e42739a0bcd44d08e84661ad1214a7ef3679a112c33a7c1018492a203ac83659972255dde7c153166e63e208a7c6c2f230779bd3a809a1c51784bc756858c02f4da4fdd21fa89c06231fd860ee1e34f4392cf372abef22db6bb8a2cce60ad2902f5044e9b23d67f3f7284d161a0c9bc7e4bb0960f1896c3c02ccac1c005c47bd775eb36c9b9a08dbd33f923b7050662e347b1ac04497987611abaa3f1197ca79dc87059f61471c2b92df9e7dc4891231e3fb6e31e17aad475ebfa0323993beb6a5c27757e8097eecfc6c3f926abe1c3c167feb408fc2dd3bc41bcbf816f3ca96fc268180556ce1003265d52b472df5e8327293d06d0c578c1ef5e89a5eadfe30ee5ca019938dbf4dc9dbe351ad8a026744da4340d23a93fa88972e0fab65dbec99429e9525d8acfe47ee7e0af66a3ad7dffdb40365a08ee3f1895e58876bc27408a567ded77997b2f24fbd2038a408e3a4690ca2bd26ce78e3e775e3fec5853c6b106c237ec6612807d9594d528aca12bcb4b893569a6762da69a58f5a6643af7ab746f4bb2548465fe7817e9ee52dd713f23ca3989bc9a8e92f08e541036ec71dfaccba71532eed20dd81499d97da08d02b74a00000000000064ae000000000000002086717ac43b7d5f82c8302f3d130b855380f095945b7e69704f38362537aa44090000000000000010000000000000000100000000000000010000000000000020906bfa523ba810d5f46b30006db1b43e29c2c66b030ae4eaccaaf04c9ef8493c0000000000000001000000000000000000000000000000201b042d145ea3807991e568c6842ab079f688141fff5116de0291e4c41eaeb5ce000000000000000100000000000000000000000000000020a71dc7a66bdcb63aedd9736dcec42371ff5617e98294580b5fffffb4c565d8620000000000000001000000000000000000000000000000201ff13da5c534887124cd7211e908ad187e3f0b1fc6bb700ce495edcb5eb08c9f00000000000000010000000000000001000000000000002090be2df98f517f40b7e3a32e843f4b94b169648a6b3ee36a788e6acef94359c7000000000000000100000000000000000000000000000020e32566bc640cdc42a2d416dd8e9ebe7d9740c8477a96f47848d4e3454571fb9f000000000000000100000000000000010000000000000020f81cfad22771fd9adc4a1c2eb3d35d7206c8e61de47fec96cbfed9a8142060f5000000000000000100000000000000000000000000000020ec41974a8de27e23ea619631f2c48fc4c33979aca3f615a302231c1b01366a180000000000000001000000000000000100000000000000204dec308ae45410152d0c07fd5536a43b5ef2b3fb00b42d72731cd0f56a2f7a950000000000000001000000000000000100000000000000201643fe66e23782f873215dd147f0a608d1dd5162fb1a0ec8fe05a8d3d03dd06f000000000000000100000000000000000000000000000020f189451a8e6ad486f17fea63f8645b2dabf4216c1842358e7324933f81f7ea8e00000000000000010000000000000001000000000000002062065792a6c03983076f815f583d61ac0cd4b51fd65f5df4e80b4699bf2a1387000000000000000100000000000000010000000000000020b43f76ad68b950a3c7985b258ac663aba4aab7fd09d41309b4494ca1557d88cc0000000000000001000000000000000000000000000000208282c4eb352fa7af8ff2e54989de6e5ccd0146617a9dcc9487ee8e1b861008c8000000000000000100000000000000000000000000000020e4cab9b3d6b7cf6da1e73c16ffd4296568eab972c55ecc94c6d376d2d7a010bb000000000000000100000000000000010000000000000020e17990fefcbe5e3cdfbb605c96183b6be41e54a43f46f605683c0c7e49cfa3de00000000000000430000000000000002000000000000008620a15ed90ad32ab3b94a75f28f4310334fee79284a27251e7643539def058c4e1f5ea126f52cd54c46b58a0d70bcefccd2581fd3bf25d3fd22e9dd4f10fa73b32326da3d361fd5829e744dbccc4f51004b1b2bd16029c7611cf6403bab1bbd841cd925c2c9e02a7d618bb24333b0aeffd72b6d2aa92331ba7c36f0b154e4427d2fc243320e9f2b8d184584affd8c950132faa91ece36f2ae5e74df50578ab392103dbccdf160d472e7ba7b5002736afeef4befdd3b16066d3ab8519ca8754c6f2ecb4ffa491bd9c1795b976ff3bee905981182a5eb2bd2150cc0c9cab5b581d71134b005b6e4263e86a468900c4116fa8a3516561e2127068c6c67224a4a7e2a29f88fe36d8b40c75ec9f52fc2ba8d1b9183c2497bf42f16743c5e2e8c8b89301607701c9274bf38a1360ad03d4572e490c2d6b28d58ca0524f0d2be737476d111dacf7123b843e4d9f1c9eecda4c18970bf007b4fde001d79a64421beb9aded2e25308edc47bc1b260e3611325b3e76b1879880b96ef8fe1f86eccb4146521419460d35b299537841b8f1aa0437c7af1174696c86090777c71223bbb9a065a026b9f2ca4d66ac87be470e55fbc8385110d22f8f8343f1a3d21b0d31465f9a613e5e420c7cfea159489cb8521516e66b34ff762294e02c3b4a2d81bda021fc1f01a1bdf383015ea6b76347adeae91994ed4722d9746ccce04effaf2f5fde03e237d74a3e70f926be6b0f999a697280177fe2eabcc32cf8ba0e2ec50020a9ec970828b5c18f06d94194f06665968d7fe8a263ae3f462000618afe6becdf56136a1734733834ddc1b8174e00040f3c8074f65431bfaaacf733e235154ca3519eef28cb8cc7cb223e47e8b1fffbf0c37f8b2bf2673c5ea001e7b6f81ba05cae6112340640190854c898748600144c2e8248ad5e5fc24c13dae7d1dc399230981aaa0bf9bfe6f7ab37678b79ffebb3d17db774e83939bd391e33c750f75acf67e557041f407d29a7eafa469e00657ce88b6ad9bd7adb572f6218b4985c26f2f8854e3be0bf82d6581505b961ff9a8317749548891e20b21d9702e494d4c60d077ab3149c4271d04796e3611601fb708ab91640b36648b3ecea7b86f9ccc2beda9a862b63bd8e2fb8691c9ee9fe048f7546e9e19332b355600ea01233642a4125657b270d4c391165f270e56e09e932b59d6f213a666f7a539b4e09b3cee0ba45049d18f2b3c6ee9a0d8f1a91f616cd4a6291010c328c8ef95dcd8f79620c45bafb6403427d1d56fdbc347b26318dfd8c132b3f50353947bb1d3364fb779ca359170e3cbd82e2a90243cb84d9ce720273ecd4e2f663c2c191dbe83431b9505ca6e8f3104c7192b2f4ad0667bef7c5f3bc5fd83c910a1e66a79200f8e9560f30bd73462fb38e6d4d0b52f99841083a0c43a027e5b58edda2a5671aa043daddcf428cbb117e37dd7ec7612006bad6ddc2addf390c8e999bf7f8e0e943617d5ef3b3405d2e81c82281389edff94529223d5220c715b7ff601154183255cbb38e0c4cbfa403e28fd25cfefa1d85a1239becdad8920fc18080648fdf30d575184ad046d6ef3c1d702da30105e27a5edc641325276e1285187ba4bd19eac3b818a22fb92912136ccf1bd0fae2939c25b20ba0463ada4ec78281f6cf5bf42b497976116232ab2c9330e42f051d6c63da4df45fb9c525d37f167a127d9d276de3b776ee9dcd56350d86b9fe622c55af6aaacc3787e2c162f356f84a2ed600dd153371e2ef1f8b0af27946019dd3aa50955533c8781d3ebf534203bf1e231abc17fd7b1d10e0760943a1a1f7eaddac6d1555fd15a76dc665a64ee94db64995ecb53d856eab9db336bc5e5e0815225392eaaa02ea589239bca04a12bb96af85ac77f3679154624e1a563bd5d9a60f9acc83ca0ef81bf3f27c44dee73d27e3748ce78cbbdfabc6c225a9c42a2659f065337c35f107e40c0da601ba14cc2515a70c45a4312054393f3c2120950a80a2133e67efad424abc9383369d082b1fe53bff583c657cf2bd5a03dedf6af57f5decc1981052bdb5436c9f0ffbf3de2d13df99d4f487830d42a719460d35b299537841b8f1aa0437c7af1174696c86090777c71223bbb9a065a026b9f2ca4d66ac87be470e55fbc8385110d22f8f8343f1a3d21b0d31465f9a613e5e420c7cfea159489cb8521516e66b34ff762294e02c3b4a2d81bda021fc1f01a1bdf383015ea6b76347adeae91994ed4722d9746ccce04effaf2f5fde03e237d74a3e70f926be6b0f999a697280177fe2eabcc32cf8ba0e2ec50020a9ec970828b5c18f06d94194f06665968d7fe8a263ae3f462000618afe6becdf56136a1734733834ddc1b8174e00040f3c8074f65431bfaaacf733e235154ca3519eef28cb8cc7cb223e47e8b1fffbf0c37f8b2bf2673c5ea001e7b6f81ba05cae6112340640190854c898748600144c2e8248ad5e5fc24c13dae7d1dc399230981aaa0bf9bfe6f7ab37678b79ffebb3d17db774e83939bd391e33c750f75acf67e557041f407d29a7eafa469e00657ce88b6ad9bd7adb572f6218b4985c26f2f8854e3be0bf82d6581505b961ff9a8317749548891e20b21d9702e494d4c60d077ab3149c4271d04796e3611601fb708ab91640b36648b3ecea7b86f9ccc2beda9a862b63bd8e2fb8691c9ee9fe048f7546e9e19332b355600ea01233642a4125657b270d4c391165f270e56e09e932b59d6f213a666f7a539b4e09b3cee0ba45049d18f2b3c6ee9a0d8f1a91f616cd4a6291010c328c8ef95dcd8f79620c45bafb6403427d1d56fdbc347b26318dfd8c132b3f50353947bb1d3364fb779ca359170e3cbd82e2a90243cb84d9ce720273ecd4e2f663c2c191dbe83431b9505ca6e8f3104c7192b2f4ad0667bef7c5f3bc5fd83c910a1e66a79200f8e9560f30bd73462fb38e6d4d0b52f99841083a0c43a027e5b58edda2a5671aa043daddcf428cbb117e37dd7ec7612006bad6ddc2addf390c8e999bf7f8e0e943617d5ef3b3405d2e81c82281389edff94529223d5220c715b7ff601154183255cbb38e0c4cbfa4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000064ae0000000000000020979efed344d3af4abce365e81207d83a8d909f8ff4e32f936d87aa0bac7983d900000000000000100000000000000001000000000000000100000000000000205c80a48fe1da2736b446b8d3f7b163bde9acfee21ec77bbf6c672e3e72bbc238000000000000000100000000000000000000000000000020cede000a10c6ddda52b1fc34fa5eed11652f62f72594dcbed9b3938669f94fb2000000000000000100000000000000000000000000000020e3074e1c6f248776335e71ef670f13dbdbfed54970c93cf74498f28ca69c100b000000000000000100000000000000000000000000000020a83cd5b629af85d19e2f246be4c9728044c972200ea3a7bb7ac6584636758cb8000000000000000100000000000000010000000000000020e41629a5222a8dfad51ce46434c149d341e86ed5ba9c8ed7909c8739cdf88e4000000000000000010000000000000000000000000000002027093121b7d71b9cec8277ee0cfe99a1531646f0e74955b74b47561c29e090750000000000000001000000000000000100000000000000201080fa380f6cf860c82abab8650c2744ffb047255fc1b2d531d95c9ad20b9fef000000000000000100000000000000000000000000000020e8eebc63d0f1d26fe9c45ff2274e1fc349bdbb63c136e3897d9916c0c377c97e00000000000000010000000000000001000000000000002069a428e7f0a57c3285192e818bff134fc91dba3565bb2ee2e0abfe5382fa60c7000000000000000100000000000000010000000000000020400bf86d9170b6ccebba2a58cf15458e9d12958250c332896842f9e45e639c07000000000000000100000000000000000000000000000020a6b7c58eb9af99692f5538aaaa53551585364bf0ddebaf1ad4dfc54ec575b26e000000000000000100000000000000010000000000000020d5df49fc7f626d1dc2ac02cea912ab49cba8f1c5ef19fbd5c5d18fa8e1d497c600000000000000010000000000000001000000000000002060b07b4e39e3a836d3d63f9260472d1e747a194b94448ca7146936ef0bd57242000000000000000100000000000000000000000000000020c1669bf024e483f61f4fd7ba0c53aae3c07baff70e00b1983c8609d511f6c885000000000000000100000000000000000000000000000020123b82ecc0c634ff753754364c16de65ec617f492a60ed23d4b72ff3f69d44ee0000000000000001000000000000000100000000000000209ad26706ad8fa3e35cb5af76c70e9dd6124d3b97b383ef42a76a0fbbfa9d69010000000000000002120421c7b6e6d6c0a0484563919ed714be9e164757f81db01a62e934aaadcfff375bdbbdd5adb0d886012cd08e7809edc0e506ed246fd3729260beacb9f7a69700000000000064ae0000000000000020149a0577ca6898642f277429dadc5df8bc3a56e16f1b87a2f5c3e45116fdef75000000000000000f00000000000000010000000000000001000000000000002099e1e3f43e1e1e5af92730325a08b353fb0588de9e94a17339e74c86fc88a2240000000000000001000000000000000000000000000000206121a034f872d359d1a7421eec2e96acfcab2c2048d646a25a83311e131c0260000000000000000100000000000000000000000000000020a1bc5c222694c3a3e37c863091da7fb348f421dc1e1903cf3cc88ec643340e60000000000000000100000000000000000000000000000020a773d4db12d8dd5f7bc9d1b4f1fdafc9ff6803ac33bd7c3bc5c9bf0c72959c9f000000000000000100000000000000010000000000000020d770c055fde059843903735baf012233cf93978cf9f2b3a002ff8ba0ebddab7a000000000000000100000000000000000000000000000020a7df48eb2fd584b138a43d3eb668e69cbf083cee17b822174bef97741e0dafdc00000000000000010000000000000001000000000000002047b616c0cbfe2d78630a2b24584f392cad76b463661ea6b10387a6846894afe60000000000000001000000000000000000000000000000201ce0feed245649bf5bcfab8d8ca0338046d647632508506340f7d74e8e24a89100000000000000010000000000000001000000000000002045ae285c7f23df7622dc38f658e2147fb12bb76655a3f154e35e3c4211fb50f100000000000000010000000000000001000000000000002082938c68f8f81ff1bc8fcafebf8b083db1b17b088d93230d9fe75ed98d74cbed0000000000000001000000000000000000000000000000209dfe79525c6d9377a808ca1918f235bd833feacf26cda7ae91d8ddae3103c6940000000000000001000000000000000100000000000000206eaf865c04e43648a3deef4c121d90e93b402ee60d6e69bd2206751687de2489000000000000000100000000000000010000000000000020e29c6cdcc2dfee329b9e75efa45d88780ae2c751a9546aa40c75a70d3b69816c000000000000000100000000000000000000000000000020ee448efc1745abd0f3822d75f0a055a53984039529c02f9a96152cd28dacca04000000000000000100000000000000000000000000000020c938d64ce1b122f61c9e9c6b66220969b0be52d44112f69ed75c402ed8c74707000000000000000234e96076bce9d638ee017a28c13fe4e04f04967c3f5d22e2127ed033c77233701c56943a3130084c1b877adfe7a26a82a3e63d01baf864392e7c25d530ed2a7100000000000024ae000000000000002015dec83b8a701e3a8dba34b8237dd2f7e4ab7565f8e81f3dc0fdae2a0c85ad10000000000000000e000000000000000100000000000000010000000000000020b51084f8dbe646b9fc5e642e8f5cfca32150db1776cffc5fe31371a66b0c634100000000000000010000000000000000000000000000002071b8f19bee93d07dc17ed3840f4fd2bea8ad463b8901284fd91ac51c39ba21a9000000000000000100000000000000000000000000000020ad283e08a4f31a5d8400ccc26ce4154aefb92e1665224f13f6eb5f247929d35500000000000000010000000000000000000000000000002037fb6263fdb7bed138b3f1407fe4afb3311a191aeb545cdbaa417342eb72b0e2000000000000000100000000000000010000000000000020bf30665a658476f9c26f709b8fdfaa4fee76a7b13ee067d6e6583263b9691b2e00000000000000010000000000000000000000000000002084a457bdc60b39f20dcfcdbd240c55de33fc9a6ce504f56efe0ecda0ee8859fd000000000000000100000000000000010000000000000020d66e4684cae1f91d7ce4fadd526790544cb197406bafc38c71ecb6638a2f442e000000000000000100000000000000000000000000000020d13c1a2e6b53a4d990bffd0156e8d0bd9d1cca9b6e3e1b5f52e63e4f81db20e3000000000000000100000000000000010000000000000020d429dfe2599484c15584cfac5285b598c39405927fb545ac0191f3791ab6ed8f000000000000000100000000000000010000000000000020b7e2f7666a448ac8e7b128c5b031e9f3bca880d94f27a59ee7b2df0574face76000000000000000100000000000000000000000000000020b38fd66613dcb4f7ae2b6fef39ecd1282ab1f3f6916c3112067d4c60694aa23e00000000000000010000000000000001000000000000002048017e94c32327e42d1453acb0f979880bdd55f0deee3d6b3f6ad8eb07793edb000000000000000100000000000000010000000000000020e125a251c6be44e148d4d550bd3ef439e2b7a6b72c23671822268c61d49651cc000000000000000100000000000000000000000000000020eda843623c53145d1771876f402f14f06a4266f5c117def78c8bc72125b6410600000000000000022d42ab724576bba773e1b3fb750049c4e0966b94723a311c6b2be78c5e47b3621b3b5b128a6cd70f02272ad84eb287ee53ce3fdb781ca79faaa6758dfb157a6100000000000004ae0000000000000020d6e4a966a7c7f6f32f3a643421c51839b2ec8bc31d734b6a0e67c6ed4135f257000000000000000d00000000000000010000000000000001000000000000002085ff3485ee8cebe5ae55b20755004808d25cc1bac1c3719a4b7c4093a9a5f99100000000000000010000000000000000000000000000002030e7ea9c7ee472953eb98d252cd66048c5c9e961eacec87fe8dad2c92e92454c000000000000000100000000000000000000000000000020e52b9741ebd5b1be071a4a3db7c86ee0dad7a4ad45aed43d3d8b3cc56c9adce1000000000000000100000000000000000000000000000020550983ead7b328a107423651a35525c77ec42fc6377774e56297e73c363d0901000000000000000100000000000000010000000000000020ea9b313b0f525acd4b96e9064ae862a3901d97249433aee25fbba7b3093b200b000000000000000100000000000000000000000000000020bc8e7c13d79d50a8498a44a04fd7fb6f562a343900b33d83a17dd369eba5e4d200000000000000010000000000000001000000000000002042c1d637932a52974441ef718bec3fa47e5389f0a5ef8cf8de4683d82f8b214d000000000000000100000000000000000000000000000020537d6ba9cc90d5dd02f3858c4f4a2e71adf8eb88414a50cfa9f0ff712c70fd69000000000000000100000000000000010000000000000020fca50e3eef58da40a19577d0ede5712fbfb7f1eb9fbee104858374bfa8f01f53000000000000000100000000000000010000000000000020f8db98cf0c47a733484058635db670fda6fe46f27f7da22e36a0996778d3f20f000000000000000100000000000000000000000000000020e129de6e22913e92dc3044c7964f10bac9a1183b469210eab8f8c4e30b26c1af000000000000000100000000000000010000000000000020e273ee3b0f4eeb93605b5c92f828be9fa224e625e704fd8d5cf041f41b1d15a00000000000000001000000000000000100000000000000200c1ded992e0a23f5f77d4e8e34a9cfdb5bc7e56479fdedd2c60629b97d505ddb00000000000000022309214876443a012a878cd177fef5ec8b0a703be135e994e4dd3213931157b51fe462e9c154da6a77fb816940d73e2dc70b31d9d7a088f89d709e920431e98e00000000000004ae00000000000000207ce51763167c2d5d61537d41337a8ef59fecef3bf2ecfe6d3b79b2fdc48c576a000000000000000c0000000000000001000000000000000100000000000000209a0cd78f82b19b10d75e0569ba132f2137fa3ca7eeed37b1f0d9b3802d9d0881000000000000000100000000000000000000000000000020268d2811466a32901607226b5d211a4c21feed0bb1db88a422be1f76a7f235600000000000000001000000000000000000000000000000209ed525c2696e1c11770ff7c13d326521d00ee50d9d50b178486a23b2ff1d23ef000000000000000100000000000000000000000000000020d37bc33dd6f91f4270e790c64390b0b3886920cb907dfeb20c847636340de89a00000000000000010000000000000001000000000000002035bb14d060b0826f19e6213ece8945eb897cf285dac444dac92312ecc1b32681000000000000000100000000000000000000000000000020b10306f48627cadc5861455fa2dd78da13a89d044d10ba433a9a40f4eb4abd9d00000000000000010000000000000001000000000000002091471879e299d88332b5003434dd9f67888414954542f0cfe5a1f8f4e67df23800000000000000010000000000000000000000000000002014aeba002a7ed07b60db692b30338b3ce60b84468c8afb78d06eaa120410de2c000000000000000100000000000000010000000000000020227280c1575573f9c04c84fd29fa58ea5ed8cb020b9654cf1663b6163977092f000000000000000100000000000000010000000000000020aced71920c2c537bf4d4b6e8289d7c0f4c5f3d7d78bb34f558d7f826c5864a8300000000000000010000000000000000000000000000002024b0765265cc3cb702826c9bf2305bfd6afe3c3e0a996021ab0f1c744a228373000000000000000100000000000000010000000000000020e9fecd4d561e86cec3193691cc1096011df87a5506ed665b092613fb182833d9000000000000000236b4666b037a99112f0fa2c266cd529a2d3f400c316b480f376527443f3c0664088226c9971b5d62c236ba570f3ba0443d2255177dd56d7f2c98b0e08613fded00000000000004ae0000000000000020223b8f544e9763c5295ccaea6eb3b7cb1301419b4cdf939a065d9a9e03221c42000000000000000b000000000000000100000000000000010000000000000020180198656ee87e5ecee1ca9c07cf790b55cbb465747974654f01c81b8e65765600000000000000010000000000000000000000000000002028325f97538baf290495e47c009eb87dcd53707d098f5f7e2e2694307832f144000000000000000100000000000000000000000000000020f1a5b4f8ae0f39a6725f276cd4a262ce7a137ac88be51873936e1069c9293477000000000000000100000000000000000000000000000020cc62d4e66c9225adf6cb532ee7e674c4e6c4b1fe4d51160594a59069457359d300000000000000010000000000000001000000000000002065146b7fc636a1a21b984dc2b380be3b971b62fda24ec67977fe26cfcc03bcbb000000000000000100000000000000000000000000000020eda967e494814403749d47f15eabe4a0f24a551840465093141eea4a986aba810000000000000001000000000000000100000000000000202f2103cbb0f36dc4575768ebdce11e0429762b471fcb740d8a5444ef5fee4ec6000000000000000100000000000000000000000000000020a80040947724e7335d7d1bccde1be54e3b894c8ae2366c6df53223465582f6e5000000000000000100000000000000010000000000000020a44fe3b187738c0e789dcee354e53bde3a6e0b47db5f068d0b53c2e289f75328000000000000000100000000000000010000000000000020806a2863f4e7aa0d364bba4a0e6fbc77b3fb7ab3136c3423ad8f94e692a1c152000000000000000100000000000000000000000000000020ed55a640f0400452c44791e1c3b35db6b00b829511578fce7eb90bf71b2502fe00000000000000022eeb4a725d0a14a7067070e0ed6b03abd2934e700986ebf49edfd37be16499570220d34b1cd336c85485a5efc2d25f7c1c0a8bb734ca798c30417c025dbae6c000000000000000ae00000000000000200fdd2b336f69dcfaa4e58a4dfd3181ca6cd4ef89828312e1ae53351bec7c5b52000000000000000a000000000000000100000000000000010000000000000020b9ca710ad6f82c60d3e3b7c2c563b6f6e68ef5483b76e25bcce78069b4294f35000000000000000100000000000000000000000000000020dc7f62a65569622389798cf72542d897aeb8474d83ea04651cf85168bd28b2e90000000000000001000000000000000000000000000000206daf6767dc1c3e5b075eb54d814eba94183875a06ec3ed85dba07206410492290000000000000001000000000000000000000000000000201e8d4da69a04cf69c22d4f3b9fc8b195f3aba250dc04714043938db0f0a9e2a0000000000000000100000000000000010000000000000020b63cb2f08a0d5bc97052616e489d32620a8181ad29592b741a33c660541935f80000000000000001000000000000000000000000000000201662ba54109df28ad4dff17b79299f91c7d628c1a360d131c9ad47baa18b87f7000000000000000100000000000000010000000000000020159d5b0da6572e69a53ab68057d27f9327374f31b9a3b46ea69ea15b645f0afe000000000000000100000000000000000000000000000020e9c17d5adddfab763b64f47863654801856a70c61a99126384a7bdd8e3c3bebc000000000000000100000000000000010000000000000020be90e58560b0990ab555609d4773c22b7ac590e3abd02d0e9fce06aa113a78e5000000000000000100000000000000010000000000000020242ac4226db74f9713cc3cd135f58ddeeeafe9b15cafaf15fe6cd72de9b8cf1300000000000000023d7773ded6c72c1c58cea7b62bec71b1f06f1c70c8bb17d796b8febc416be8751a1cc82bbf8c84dcde79beb89330e5081c4a4e13024b05cd1abe11a48654fae100000000000000ae0000000000000020fe5735b472609d52f50c9af7acebdf51b0136d833041e9902de1009e12dae8c600000000000000090000000000000001000000000000000100000000000000203ecf2539f485e00e8c885c152be94116947aaee16619ce7eaabee887ad7cf1e1000000000000000100000000000000000000000000000020534f606006460496ccea949ea573bb009038f3cb9ed98addd607cee8691879e500000000000000010000000000000000000000000000002053ba0f223bb9b856791e453175cee53af76f0d1d3ff27016ca691a362b26174e000000000000000100000000000000000000000000000020663117ed350d231ae222fabf2e58d83e53f5f3b05fe2584ca325c63785885b960000000000000001000000000000000100000000000000206057da82d4e2fe7f1287e056b1d206ec9ac099eaf503428393eb54195a6888ed00000000000000010000000000000000000000000000002074ab66fc85c26fe82f3b866bd0a7a1ba41018d02978487c620e80f96cc99a7a900000000000000010000000000000001000000000000002082a9cc9918afb7ea6676c99b2e165b921909ff0ff5c3a55a8e3c3b7896c0e54d00000000000000010000000000000000000000000000002066f317543968efde2ab7bf48167d2e243cda6bd9060076b2344526860352ad3f000000000000000100000000000000010000000000000020e2da1e6cc1a336515e782c8b08b2e15bdd8ac7724d3119982cb34b94b1e000a600000000000000022147f0d444ead2c6ad3993978e25330e8785cd6acc4ad095311ab48f1bc985232ee65815b5dc44e4dd38b6a201d4d5efd6fa55259c4df9eee759df7dfa58c0ac00000000000000ae0000000000000020d5705c7f7acb049c1d7cc974667c1b1f4224452d9f625be8d0a47b3b1840727e0000000000000008000000000000000100000000000000010000000000000020d656138e339ecab11a042d60c53a24c6a42d6f9ee386d2ca70e617ce1e19b90d000000000000000100000000000000000000000000000020b46a0e46f45131c7f2bd5d63ee01667b44fcc601d8fa69af046ab86559558523000000000000000100000000000000000000000000000020468e2ec200dbaeb877f8073223c1377398c5ad31c1ca468249ffcca76a121b76000000000000000100000000000000000000000000000020196193018ab7d6827e85266cc067540ccc6fe93c8aad4fa284c073204888992200000000000000010000000000000001000000000000002039ab1167a6cedb27835753c98bc1d1e21bda1cb3766d11b2ba18c6d7e6dbe76a00000000000000010000000000000000000000000000002048c39c342a2ad067dc0bebd824f0c6c947e08712f47df58cd5c6234d57c296bc00000000000000010000000000000001000000000000002086b90f99cf4479ff51782e0b8db0cf6daa5296f8a84f11b00bebf5edad874e0f000000000000000100000000000000000000000000000020aec2dc54105f989a57d6732a8ce540e31fad645bdc891828db3c4db06dbaa6cb0000000000000002176a9e58df01e7cbf0d606a8091b70f05907d6e08e67faa95052ca6118f109653e4ef22975864ab7ebf308526afceeaf90c37000bd44ce1fe2b3b4b59a3df10a000000000000002e0000000000000020e950a5a0895127c95a36fe86863f28870b0157fa416b7c13fe721cf23da3db8600000000000000070000000000000001000000000000000100000000000000201979debbeb82f249d9ba45c4d122d1f4509ac71e59f489663cd75cc47e389252000000000000000100000000000000000000000000000020fed8e1f0e9515afe0df2b19cc9924ba8aa4becebc1f71c1dc05beeb6627baede0000000000000001000000000000000000000000000000206f1614e65bc210d2ef4c12d4537320895c767437921554473466d8baf56222c30000000000000001000000000000000000000000000000208bba5a4ab2d3e80a5244b59d45baac9605c9339651ee9ee7e24465435d70dec4000000000000000100000000000000010000000000000020b934ebe1d3287e8f86718fd75f888ae08e78e2bbd8119e1d48a1867a0703009100000000000000010000000000000000000000000000002065b826fe967ce7e7ab0a8afac7820ed75fd9bd07c9e10c8687be277864bd38610000000000000001000000000000000100000000000000203644241dd1406cfbca00c95a3999024121e51aa2dbb380d4180f011461fd9f5e0000000000000002380f209bc34822331832d76fec61ed19c0cdca79fa54e65a53a1286e9c77e0d509b80861274a332c45678a881228d8ddda5380af075f326db95ad5cd5a5a7208000000000000002e0000000000000020d48556dc18d572c1592a5fdada495a41b85b6468e628fefd1018d0bc3e2e35da0000000000000006000000000000000100000000000000010000000000000020d3d9dff3c8a1b07d7706f998c63019a1b7a5f131b60d9a13948202a256b26ee4000000000000000100000000000000000000000000000020c9fbe834fdda7270a06c19a11f098c9f4c94cacaef5f534a883732b4dc5e94fd000000000000000100000000000000000000000000000020f8378a44b31b31a3a5a4443a914b74966ad9bd0b38b5cf50dd10943490501128000000000000000100000000000000000000000000000020e80ab26e4b73bc13159c330ede6d7524094da97f4df608e8248a92e536e3c454000000000000000100000000000000010000000000000020f97b7253665bcb9e482c1bbca05493d13cefb79c915d3ab902c9c0dc09357aff00000000000000010000000000000000000000000000002055c5ef0b4af13237f9c2f5ca7ef75af861c82b30b96ffae906354b25f4c633030000000000000002388e2355516165a30fe58ee2308bcc1b90716073b104a4954ee48c3bd77054ee371943122f18ea857789bcfe633132386849c6148bfd796fc9a46a4d1a6c8c8a000000000000000e000000000000002071e2c5d6bb501163893110a8ba67bf1fb5e3366e357f3f8390c7ffd8ac46d59f0000000000000005000000000000000100000000000000010000000000000020e47b712064e2ae2151191099ad97240be2543de742d661a3df53059af10801cb0000000000000001000000000000000000000000000000201bba30d687b5522714f979b2c77f42c146fe4141e3c2d250b7ec6c6949b469ac0000000000000001000000000000000000000000000000209409d3f0ab184f0f1ffdc9df20456ba1cd643d87f7e809dea8fa08eb80213a060000000000000001000000000000000000000000000000203ab4a2297e7b1dff0b69481bfa4dfcbbb7fff5451853c502283375f27e0b02e0000000000000000100000000000000010000000000000020a863d1d42d49ea2713fd398e8b8d5048cb149e0efc6d7feb44617c5ad582ee2400000000000000022e3c38ae15e4ad881efa6950d0f9bd8146ef25795d67947c5749973aa1ab8de328645d0e1f14ea2409126960881e296c78b1a8ac9fe2a334586b5f688585489f000000000000000e0000000000000020be4dc51a95106cbfbe2fb1855a7faca3c41c092b94732d454f4c5daa8545a7e1000000000000000400000000000000010000000000000001000000000000002008c829a98bf5ec9c97230161bb36db8f557c91e0c7371344207ee3e4e2744e2e000000000000000100000000000000000000000000000020e337a65a766591a0bd46236b04857f733500a370a6f498263ffefa4f2d116d8c000000000000000100000000000000000000000000000020504f2108a89e3ec7cfc29dd0441d2939542ee0df4e6fa01b0d64b5e8618742a0000000000000000100000000000000000000000000000020e16038c5672c748f6a465b5ee971fe427aa1597636fea4bdb4db324baf86a250000000000000000202293a3aa80e04c72a8f1e4d1f38883a7b0d242ce10c629499444057504c5cfb37b4a7d4df26fb3aa72f649b1a39cd7d98fff4dcab3756b1075f164c7e679c4000000000000000060000000000000020232a105d258b8d50dcd3e46e1c13bcb3ab02dc1c373554ad086e3dcec0adf23e0000000000000003000000000000000100000000000000010000000000000020c8cabc2853cfe3e3baf3bd71e543d5571e59f97ba9ae36d21ce56816fea8c2b200000000000000010000000000000000000000000000002019eaccb94355ae2736211a001083da6cece1cc89aab7b31f28a356298e0fa02500000000000000010000000000000000000000000000002051c5e34e81f846787a36ce02631826170c999b1efede966386206635a5d3f95c0000000000000002326f09d71a6a51aeae5c153f1659f1a8b300525676b6bd1ca8c4a91c0ee3a12f34c8c366404d5c8a033c9218186ea0f7ab5b5670a881ae21c0243b357a424ce500000000000000020000000000000020bee9323487a966666f79a4e3e054937b5315994054cdbd49852e71b19807fd37000000000000000200000000000000010000000000000001000000000000002009941d05278a5038d4a444ebb8efd411da901bfea7c3b1ef19cd0507f30a31e1000000000000000100000000000000000000000000000020885d1d75dd6b39dd01476807cd5bb54fde37a29662e2552f3bc07e4f56b51f7d00000000000000022ef11f2cd900f75d4f5fa491a8d33c7bd1d37659fd3cbed52796e6cd0344114516ff72b7fa964c77b718877c8eeb3508ad2f2a2ceabd15ac6652f8b6534e2e360000000000000000000000000000002060bd35c8f6ad3d0af8024557ada4a70f6c05f624b98bd6a000c08a4ddde8c7e600000000000000010000000000000001000000000000000100000000000000205654f162b81764de2491138141b346f28727e9b9c58261139eb1b6119473b4e40000000000000002044c94ddcef45dbdbcce4df726d1ffb61afaaee53f8306404559ce5c6a5177d53982dc8f31055b004db5cece69588d28b7aff7ebf1f0ada9fe66fdc238475671 \ No newline at end of file diff --git a/contracts/zkllvm/mina_base/public_input.json b/contracts/zkllvm/mina_base/public_input.json new file mode 100644 index 0000000..b170c4b --- /dev/null +++ b/contracts/zkllvm/mina_base/public_input.json @@ -0,0 +1,2220 @@ +[ + 536307267370630539298338195126964433002751717398567478076440137023181728607, + 6350606115317347363597932062914653689968227049601191251399544021742333315801, + 9206053199246011959796170615713822591061443878941333442050858420980669939261, + 14740129327326773513706376027412103724016117082575227265638296913289837688665, + 16564188617731377495958671911696425695275378581995049413049576095561177082240, + 1459402852807505758425734344247095015933414476343367133158131410788220654238, + 21242251638009076263837244634368230761467306958555850127441516362380970601929, + 12203749473252097888620760620069661970513373965870653289692378370172397041706, + 17023493465725290563114958107734317727618578283425655729913140427175936881093, + 1936155109368356260975382811249765940798571310720921617932889803196752158590, + 103621606440074842298860884963915571932207341288263535593423136481465714735, + 15788549173524065965494601883186777788481348653774064682772925388513088490090, + 24556817602523355881516499979792133900107571660647950589146887762260618793917, + 27877693238368699060036114711784573917884144573735884619429498469219619672345, + 11234564435070499732454975362552446632170478857538103411195827103831435116233, + 19696299749020838390353550078371750498311472970779065939065311569663098844314, + 14517262859386139453784451163200306258051499950987773522261210512269809352845, + 3506626427158490422968215262589432741643846220942237170310331734825515353525, + 18069268462400661468610696004339177451605142972711247747649561988038830077480, + 5507660155854988480882870488214047829459690716587074899934498171658182288105, + 28457410572438330078821308920979844705352186400010383880085962843250813798778, + 8108297390764722756141847769797360582386321039345257614125873793480991280276, + 20124320677729289454999690616690540935773779635778809434556892654343604647116, + 13044952534009992039995558782137745127351569353144298644073197002281488426965, + 5230215232274022868876655682237984971968711937082497203529000768386957975735, + 17223408048033595784589867752479488104084710870580444852766688748153556732913, + 13895322178800660077904419440086966384584832307123209132094144476919771677515, + 14444519033973404085785571982069457327169209614674770596932793977588846117437, + 1951626661817030253380834120240476753433168575378435861745254676984613581924, + 26012723732502368831680148476347811354313116006085422714526800574855323968244, + 2633770197326005383994291008888134007953313769992494793298115970819953799551, + 10415822002257259745593431055103097617944110753033232043304507309339010959421, + 11263780663566442940102663026475130298267242212496519779436831085936563474433, + 24001492724708152128532429997821042794733165711390518030990799793503273770652, + 2633770197326005383994291008888134007953313769992494793298115970819953799551, + 10415822002257259745593431055103097617944110753033232043304507309339010959421, + 5040900544588789580974365328702256596367844112246930459775611110584529384609, + 7092990540603933664815469356867437650509190941873280712662268306777998721827, + 1632236563317719695008729730198640039589730357093745235039170824750146237889, + 16652169300131653910155327620443196436194395189880674769174827139951269808424, + 14598550966483932632179699829625452635379722126108567167784437138120564839693, + 20306811152595640487102896873781062881758172217344029389177003320477749831022, + 17615063836093256737955629948400920327309057610637709904337930541684950744769, + 14798706087105226074606349229441602290425368359035868450856280400310862649453, + 28031147615665011020930911005082492108678871605485404483348900045611591196311, + 15532493715187601323994386363282289724738343185567523989588586248496642181116, + 12041359299346150731048481304744395174490583711441368184999432627273256440686, + 20171731618420933500834961253195824667717468874553549616264926128987207238305, + 8338764408230191660527245826377997779612639045485062237039111734789114961080, + 5294331539823830733672999254846325010922370950178039865249043517923935509426, + 18435959350199775380114620204245952878086069683633699170084972263505788509858, + 22615148526584566799242163061587431118811910739826880691356321294024779114461, + 13387251220827799131227109087987416343197824277133295028171894951028026505281, + 11738929106979254231959056613143873320116689507622043160265926692283853746342, + 13613743547132375544885500166750052716752728822215140630873419471477277754451, + 1339611690990420540278786731507497749242942031555462573125402654511837247265, + 17105052652685226132611531645516305921125549921921507180983799052533433337175, + 8003116155905402883587551370708919713816665412050668715094540996621344573556, + 13237014921156363248028278992066160415289376873002924625503682306486968382723, + 879989897167692502558703701769869689978652442115869161216296653258044839176, + 23649885992080284997312069604332978301563782692138157527340510083884153447273, + 22305596436880978069271851214690861621748463192958815655075725048084982067791, + 1451425340494882348171623298484168190261021946727534425449231043858011779099, + 13855861360899403261371668668097018296504795522146493259926371290313972367622, + 6954257121974752499817653313065573376496279811943155027781831699812077531362, + 1501700599866379178767456661675876032711819578325185988564773555075595034857, + 26466955264302307921595417630865890420421228720181640202674052643355257452631, + 14265908045059649351496882675935071478448791949596618421430394148982110077229, + 1835963538184581316457052136272345646670210933134617850130259523299806420440, + 12632732625785708295002659476525976475587039274159117983119427358207881182441, + 25161523487982557524107721978549994408681739312886322295940265752344566818567, + 2231669083221570759849372489381528975575907999642295406502435353310537314214, + 18132938202273313584400203069339760887826004821533369850046712175295282198159, + 28844493535187237528607766499370579562016716687537589355847077364881382054575, + 16990021968239165978258248347288953632403006017094618984060145871772212764845, + 28739389448124712046605612111897468595410331225789460909768028672273371581958, + 14107226133254157459232109243408184982737245955824165190452122666034557202087, + 17632738392935955425340258349255871945983195243645267361432152426104670283788, + 22845320334288032708942171750631058332979977296202817781606709660795310336483, + 15701132467871919825018024875207012608028960342034422348766110610076860097859, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 16282821295661236479023912685539589269086626120234649164462902685519476656592, + 4295205064453230912872101449993170792905970401678754749988147216841537937620, + 28198697833219334189923816684717002543602920069910594785597266487498148523870, + 17891203830156453876956078996004920271036014021533417224170974067208216601703, + 5911229141700227144541715457557567697281122878785361348057987395367730692283, + 22708119636146901915922769433803693592137966281563094238309392462134696713324, + 15255289086154637723543383447202141216898127084181538793835838955534680243549, + 9822992368845619458542559122419135424964624477009905295720933437908812438194, + 28336751196692125825206280078298394562971507269177652352864439918563362023984, + 17798914835779426211970460006818900956839587778737086433910561148699936807427, + 12173487650256236567877294766780225205439671195087725509374927206658919988314, + 8546295955797864127010988341190793828517919678470921685302947319507151962335, + 15105854952902418834269591301217280524366983711045984608317191166708978127145, + 18491376365795350144503269408455530343793482052663015956178048715513611406203, + 16221864536502615631980979964668288450317317371147091060694095899151503639747, + 9519306118137437477296160681347787831718742786237537419021099081673273432077, + 1828375556492032543370630871599181680626054083827149513821341616496533931180, + 14532553130399504128864273815175983572681327963499643450830578683158045051088, + 13806143828658920604653811214459745160526156299899194105003039829404281939236, + 21677366383028409741651124301672889055915143610106128174078188209337480718539, + 7497365406686591516136275799519851738056433500165297000450415380901841834738, + 11082673892088893582121464103698089526189574961395186300560026072577686710261, + 21840051173290088750377335154124032240668643658355954102158068406791911456411, + 17351682675035183551436994752568730447765316333728829284275431639098039334512, + 14022762599686302176026646914549540717100346176029056416113460334917709226744, + 27978245190056279229692763190303424169549043084254373363906247160646199594515, + 14461461771799677654017777117338945851377547219104322838600220560516293427356, + 17564757440118220600675489280590254151923712940706892869478972769840418457635, + 21815598907196777691445920277857002103959228082570912063323130218788538733193, + 7358237762751057012424941296608466274034817842087745360389357379284117549732, + 11810626818371604294708453458309753376008077755506945420564072757415239409545, + 26912748767395245377771123936593955842239086573241116606529426101611852107474, + 28045754565497567218313815510153164850160812290001533322256204556878672210685, + 4430614918184468006846751296134493176588839662954289976354926108393111505348, + 19872404709285819095020477536140820966231416330563398437289255091306661382284, + 19326322450955066267758337560000055419883224223428472906580812324929588841264, + 27674068120067053785042736434998263020785858204524681324028670844064644633023, + 27412857330835622333013445447634112239898888873844827807756556432593637880726, + 24682236218499316256116184057935956900066450357800305437458989367500718714833, + 27180938934433927690377545371633915753075499681300196017879714997797679192332, + 25629315461974072970256979424923440745009227427597797969419480653812297129276, + 1016868605640715040040077111084256295412989295229805290627862796628513565389, + 12174451344901867371747121143916474287913641433558421954298894775115636105605, + 12378066171942160329149126580141604161241179887990644873241995425596885988734, + 7354720043741565412245146949416661672231346925994487137406963541785007652002, + 18137987077150694625815400585246393656498160562154344002755317004470145216091, + 20176380948677499445673804755402884536434103092222401927043369592526199334698, + 26639113406603762994997253872861268998287702768326719951107939705363924703049, + 16207127342744662697004906974217699328124928520738315414896942451468679742680, + 10042405468630587369024209399619359647876676370159830003746139596973255635041, + 2106392139716826410921444012744773412824354042372186953626000304539450302912, + 17561438246294780941275031774356204175014323179177294715496325182731868568910, + 4292031084185452020905940016648601803499113748499572807208798084208217009321, + 16797976570717345665130946180893310089564099546398446160344589290942425835566, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 7306136642597923897555791151863996660212462335849450287367524537095180221634, + 295836087001599150219965185724981361284218003091634650488121505386715848421, + 3] \ No newline at end of file diff --git a/contracts/zkllvm/mina_scalar/circuit_params.json b/contracts/zkllvm/mina_scalar/circuit_params.json new file mode 100644 index 0000000..ea53023 --- /dev/null +++ b/contracts/zkllvm/mina_scalar/circuit_params.json @@ -0,0 +1,29 @@ +{ "_test_name":"Test name", + "arithmetization_params":[15,1,1,30], + "columns_rotations":[[-1,0,1],[-1,0,1],[0,1],[0],[0],[-1,0],[0],[0],[0],[0],[0],[0],[0],[0,1],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0]], + "modulus":28948022309329048855892746252171976963363056481941647379679742748393362948097, + "r":14, + "m":2, + "lambda":1, + "batches_num":4, + "step_list":[1,1,1,1,1,1,1,1,1,1,1,1,1,1], + "D_omegas":[ + 27089958442152501875810132276080823478704708607790900112361486996955217465106, + 4962941270686734179124851736304457391480500057160355425531240539629160391514, + 24698565941386146905064983207718127075873794584889341429041780832303738174137, + 19342635675472973030958703460855586838246018162847467754269942910820871215401, + 5032528351894390093615884424140114457150112013647720477219996067428709871325, + 22090338513913049959963172982829382927035332346328063108352787446596923585926, + 25165177819627306674965102406249393023864159703467953217189030835046387946339, + 20406162866908888653425069393176433404558180282626759233524330349859168426307, + 24118114923975171970075748640221677083961848771131734379542430306560974812756, + 25227411734906969830001887161842150884725543104432911324890985713481442730673, + 2799975530188595297561234903824607897079093402088395318086163719444963742400, + 19366951025174438143523342051730202536500593522667444600037456491292628123146, + 4855188899445002300170730717563617051094175372704778513906105166874447905568, + 4265513433803163958251475299683560813532603332905934989976535652412227143402 + ], + "rows_amount":32768, + "max_degree":32767, + "omega":27089958442152501875810132276080823478704708607790900112361486996955217465106 +} diff --git a/contracts/zkllvm/mina_scalar/gate0.sol b/contracts/zkllvm/mina_scalar/gate0.sol new file mode 100644 index 0000000..3746627 --- /dev/null +++ b/contracts/zkllvm/mina_scalar/gate0.sol @@ -0,0 +1,536 @@ + +// SPDX-License-Identifier: Apache-2.0. +//---------------------------------------------------------------------------// +// Copyright (c) 2022 Mikhail Komarov +// Copyright (c) 2022 Ilias Khairullin +// Copyright (c) 2022 Aleksei Moskvin +// Copyright (c) 2022-2023 Elena Tatuzova +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//---------------------------------------------------------------------------// +pragma solidity >=0.8.4; + +import "../../../contracts/types.sol"; +import "./gate_argument.sol"; + +library mina_scalar_gate0{ + uint256 constant MODULUS_OFFSET = 0x0; + uint256 constant THETA_OFFSET = 0x20; + + uint256 constant CONSTRAINT_EVAL_OFFSET = 0x00; + uint256 constant GATE_EVAL_OFFSET = 0x20; + uint256 constant GATES_EVALUATIONS_OFFSET = 0x40; + uint256 constant THETA_ACC_OFFSET = 0x60; + + uint256 constant WITNESS_EVALUATIONS_OFFSET = 0x80; + uint256 constant CONSTANT_EVALUATIONS_OFFSET = 0xa0; + uint256 constant SELECTOR_EVALUATIONS_OFFSET = 0xc0; + + + function evaluate_gate_be( + types.gate_argument_params memory gate_params, + mina_scalar_gate_argument_split_gen.local_vars_type memory local_vars + ) external pure returns (uint256 gates_evaluation, uint256 theta_acc) { + gates_evaluation = local_vars.gates_evaluation; + theta_acc = local_vars.theta_acc; + uint256 terms; + assembly { + let modulus := mload(gate_params) + let theta := mload(add(gate_params, THETA_OFFSET)) + + + function get_witness_i_by_rotation_idx(idx, rot_idx, ptr) -> result { + result := mload( + add( + add(mload(add(add(mload(add(ptr, WITNESS_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))), 0x20), + mul(0x20, rot_idx) + ) + ) + } + + function get_constant_i(idx, ptr) -> result { + result := mload(add(add(mload(add(ptr, CONSTANT_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))) + } + + function get_selector_i(idx, ptr) -> result { + result := mload(add(add(mload(add(ptr, SELECTOR_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))) + } + + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(6,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x6819a58283e528e511db4d81cf70f5a0fed467d47c033af2aa9d2e050aa0e50,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(1,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(7,0, local_vars),get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20fffffffe,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20ffffffff,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x6,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20fffffffb,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(8,0, local_vars),get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20fffffffe,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20ffffffff,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x6,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20fffffffb,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(9,0, local_vars),get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20fffffffe,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20ffffffff,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x6,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20fffffffb,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(10,0, local_vars),get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20fffffffe,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20ffffffff,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x6,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20fffffffb,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(11,0, local_vars),get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20fffffffe,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20ffffffff,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x6,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20fffffffb,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(12,0, local_vars),get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20fffffffe,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20ffffffff,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x6,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20fffffffb,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(13,0, local_vars),get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20fffffffe,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20ffffffff,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x6,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20fffffffb,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(14,0, local_vars),get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20fffffffe,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20ffffffff,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x6,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20fffffffb,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(4,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20ffffff01,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac18465fd5bb87093b2d9f215ffffff16,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x140,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1555555555555555555555555555555560c232feaddc3849d96cf90affffffab,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1555555555555555555555555555555560c232feaddc3849d96cf90affffff8b,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xa0,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac18465fd5bb87093b2d9f215ffffffd6,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac18465fd5bb87093b2d9f215ffffffc6,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x50,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1555555555555555555555555555555560c232feaddc3849d96cf90affffffeb,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1555555555555555555555555555555560c232feaddc3849d96cf90affffffe3,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac18465fd5bb87093b2d9f215fffffff6,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac18465fd5bb87093b2d9f215fffffff2,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x14,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1555555555555555555555555555555560c232feaddc3849d96cf90afffffffb,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1555555555555555555555555555555560c232feaddc3849d96cf90afffffff9,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xa,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac18465fd5bb87093b2d9f215fffffffe,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac18465fd5bb87093b2d9f215fffffffd,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x5,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1555555555555555555555555555555560c232feaddc3849d96cf90affffffff,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3555555555555555555555555555555571e57f7cb2a68cb89f906e9b7fffffff,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2000000000000000000000000000000011234c7e04ca546ec623759080000003,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac18465fd5bb87093b2d9f21600000000,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(5,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20ffffff01,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x80 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac18465fd5bb87093b2d9f215fffffd96,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1c0,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1555555555555555555555555555555560c232feaddc3849d96cf90affffffab,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x40 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1555555555555555555555555555555560c232feaddc3849d96cf90afffffecb,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xe0,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac18465fd5bb87093b2d9f215ffffffd6,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x20 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac18465fd5bb87093b2d9f215ffffff66,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x70,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1555555555555555555555555555555560c232feaddc3849d96cf90affffffeb,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x10 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1555555555555555555555555555555560c232feaddc3849d96cf90affffffb3,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x38,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac18465fd5bb87093b2d9f215fffffff6,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x8 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac18465fd5bb87093b2d9f215ffffffda,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1c,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1555555555555555555555555555555560c232feaddc3849d96cf90afffffffb,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x4 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1555555555555555555555555555555560c232feaddc3849d96cf90affffffed,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xe,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac18465fd5bb87093b2d9f215fffffffe,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac18465fd5bb87093b2d9f215fffffff7,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x7,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1555555555555555555555555555555560c232feaddc3849d96cf90affffffff,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3555555555555555555555555555555571e57f7cb2a68cb89f906e9b7ffffffc,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2000000000000000000000000000000011234c7e04ca546ec623759080000004,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac18465fd5bb87093b2d9f21600000000,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(1,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20ffff0001,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20ffffc001,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20fffff001,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20fffffc01,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20ffffff01,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20ffffffc1,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20fffffff1,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20fffffffd,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(0,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(0,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=get_witness_i_by_rotation_idx(1,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(2,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + + } + } +} diff --git a/contracts/zkllvm/mina_scalar/gate10.sol b/contracts/zkllvm/mina_scalar/gate10.sol new file mode 100644 index 0000000..fef877c --- /dev/null +++ b/contracts/zkllvm/mina_scalar/gate10.sol @@ -0,0 +1,1008 @@ + +// SPDX-License-Identifier: Apache-2.0. +//---------------------------------------------------------------------------// +// Copyright (c) 2022 Mikhail Komarov +// Copyright (c) 2022 Ilias Khairullin +// Copyright (c) 2022 Aleksei Moskvin +// Copyright (c) 2022-2023 Elena Tatuzova +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//---------------------------------------------------------------------------// +pragma solidity >=0.8.4; + +import "../../../contracts/types.sol"; +import "./gate_argument.sol"; + +library mina_scalar_gate10{ + uint256 constant MODULUS_OFFSET = 0x0; + uint256 constant THETA_OFFSET = 0x20; + + uint256 constant CONSTRAINT_EVAL_OFFSET = 0x00; + uint256 constant GATE_EVAL_OFFSET = 0x20; + uint256 constant GATES_EVALUATIONS_OFFSET = 0x40; + uint256 constant THETA_ACC_OFFSET = 0x60; + + uint256 constant WITNESS_EVALUATIONS_OFFSET = 0x80; + uint256 constant CONSTANT_EVALUATIONS_OFFSET = 0xa0; + uint256 constant SELECTOR_EVALUATIONS_OFFSET = 0xc0; + + + function evaluate_gate_be( + types.gate_argument_params memory gate_params, + mina_scalar_gate_argument_split_gen.local_vars_type memory local_vars + ) external pure returns (uint256 gates_evaluation, uint256 theta_acc) { + gates_evaluation = local_vars.gates_evaluation; + theta_acc = local_vars.theta_acc; + uint256 terms; + assembly { + let modulus := mload(gate_params) + let theta := mload(add(gate_params, THETA_OFFSET)) + + + function get_witness_i_by_rotation_idx(idx, rot_idx, ptr) -> result { + result := mload( + add( + add(mload(add(add(mload(add(ptr, WITNESS_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))), 0x20), + mul(0x20, rot_idx) + ) + ) + } + + function get_constant_i(idx, ptr) -> result { + result := mload(add(add(mload(add(ptr, CONSTANT_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))) + } + + function get_selector_i(idx, ptr) -> result { + result := mload(add(add(mload(add(ptr, SELECTOR_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))) + } + + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(3,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x32b861e624b9790a34e10657cce5e549a180c584fafa0e5311dc25917ff93c77 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(4,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xb6b09130ed2a3c28a73ac7f9adeab1db2c75c737c5e7a38796c5d5e9a03cd51 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(5,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3c8126cbc433b9524bcff0c2734773cf0ec392e4f911458bad7649da217c869b + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(6,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xaab741eb1e3434282d3f173b56a1a03f9b2be41d57b29e97011e039f8d321b3 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(7,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xb1a7cd810172be47e499493c052bdb4f24d987877040d247d95dc18b9d46676 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(8,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3f0aa3eddc540afaff3b53befc09862323a1aa40d307b28e98a0ac3e8eb97b92 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(9,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2e22b54e8cb08f96b6733c6f5be4821cac6e026f1d02f3163f57530e1711831a + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(10,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x21cbb0daa283a1ac8bc618a063b159b25048f74b71064c5a29e6959b6c964bc5 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(11,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2b82465052d2d083bdb6ca8a780545667ba30b5a99aaee689d17ab5b5f7870bd + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(12,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xe88b31d62ff0a9942b660e7eae820dd065f78a003ad56601aa522844f17be5a + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(13,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xd4209f5997a99a78e09abe966690af763bf88326a5501e941cb264e3da04029 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(14,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x10a9807b13ec8df9ee6ff3b4617cfc0fd5b9d3368bea5b47b258ea8bebdfa19c + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(0,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1242d869de1a6e25a80abba60be9f221f2ea201790c299ae44e367f2fec43f82 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(1,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2d8a04a45ac482d4acdd19c0f65b7fd94bc2625f7b8284c30bc66579754c5c98 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(2,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x222f41456da01e20ec08cd4fcd783526deeffb991d044f2dc97ed91aaa168289 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(10,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(3,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x35c82871c6d5a37bbe06716242ae56eb03cd9d74910ebc25069667d4af3015b4 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(4,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x214481da6dedd32e92d81ecbef4d4b72d0390a6236088b56dd3c29eb9a201479 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(5,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1b59bab4f5963a66e929b0acd4a9dd9094fd0267d6dcd7edc5d0f5873c4249b2 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(6,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1969974c187ca20d07a47d161079b83bf040b162f637c27466daf5c1f8bb7df8 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(7,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2a378c8a2baeb442224027b1ae0db9bbb32b8240b0d75d039216f5a295599faa + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(8,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2e319d441edbdccb3d9f5987e8416f758e23bf4242a6121d84d3ee5803afe24b + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(9,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1fcb748294c7e402c536dc29f469af794fc4c055b4e749ab7b7473a869be0169 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(10,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2c672f6f02eebb2e17b8671c5f1056bd764833f2c1b0050de83cec0c4abe0518 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(11,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1b9e5e5d291c5f4d1ae7a51937bb01d5e719131c57c51fbe8fcd3ca022889414 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(12,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1e0e216b3b50ff7e7745a1510e256548ab3caa71bef3d27e72d44c427f777a6 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(13,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x22119152f8043f0177c0b2c6866b28a47e819ff4e8ad5dfab233e4b53c5823c6 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(14,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1782f9c694349caaa34d00bf715f8a30e21b8858438ca4a07f5407b8a1391d54 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(0,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x927b36ac2a7b9f8b87259e7c23b258e6487257ec3995107e70b3d5fdc51f8e5 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(1,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1b3702ec2d9785606f39e25d97dc2b6cd7118c01c10756590a0d4d10958f538d + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(2,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3ad1fad595b6cba836b89333b0266db1c5d451427b3c050de5be2a28ceb41599 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(11,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + + } + } +} diff --git a/contracts/zkllvm/mina_scalar/gate12.sol b/contracts/zkllvm/mina_scalar/gate12.sol new file mode 100644 index 0000000..7c84c8b --- /dev/null +++ b/contracts/zkllvm/mina_scalar/gate12.sol @@ -0,0 +1,1008 @@ + +// SPDX-License-Identifier: Apache-2.0. +//---------------------------------------------------------------------------// +// Copyright (c) 2022 Mikhail Komarov +// Copyright (c) 2022 Ilias Khairullin +// Copyright (c) 2022 Aleksei Moskvin +// Copyright (c) 2022-2023 Elena Tatuzova +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//---------------------------------------------------------------------------// +pragma solidity >=0.8.4; + +import "../../../contracts/types.sol"; +import "./gate_argument.sol"; + +library mina_scalar_gate12{ + uint256 constant MODULUS_OFFSET = 0x0; + uint256 constant THETA_OFFSET = 0x20; + + uint256 constant CONSTRAINT_EVAL_OFFSET = 0x00; + uint256 constant GATE_EVAL_OFFSET = 0x20; + uint256 constant GATES_EVALUATIONS_OFFSET = 0x40; + uint256 constant THETA_ACC_OFFSET = 0x60; + + uint256 constant WITNESS_EVALUATIONS_OFFSET = 0x80; + uint256 constant CONSTANT_EVALUATIONS_OFFSET = 0xa0; + uint256 constant SELECTOR_EVALUATIONS_OFFSET = 0xc0; + + + function evaluate_gate_be( + types.gate_argument_params memory gate_params, + mina_scalar_gate_argument_split_gen.local_vars_type memory local_vars + ) external pure returns (uint256 gates_evaluation, uint256 theta_acc) { + gates_evaluation = local_vars.gates_evaluation; + theta_acc = local_vars.theta_acc; + uint256 terms; + assembly { + let modulus := mload(gate_params) + let theta := mload(add(gate_params, THETA_OFFSET)) + + + function get_witness_i_by_rotation_idx(idx, rot_idx, ptr) -> result { + result := mload( + add( + add(mload(add(add(mload(add(ptr, WITNESS_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))), 0x20), + mul(0x20, rot_idx) + ) + ) + } + + function get_constant_i(idx, ptr) -> result { + result := mload(add(add(mload(add(ptr, CONSTANT_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))) + } + + function get_selector_i(idx, ptr) -> result { + result := mload(add(add(mload(add(ptr, SELECTOR_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))) + } + + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(3,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x102cd45175bf54b670945d6f8cc447db1d687d1486d2daed5263ef58bc5fe1af + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(4,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3b17182cbec37373301eab23ae0ce3899fe41c8a0f495802e11ef87c2d9dc15b + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(5,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1f3e92ff6831414c7aaf749f9b784550e69947a060f3ef659aea361ec6be71c9 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(6,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xb0e209fca5538adfbc97eda4f3b313f1a639f11098f57606570d9e2e0c99d90 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(7,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x8a68c4a61284b424cc9bd2df19c9b0ca7b2696bf09dec37e085e41bb7ebda21 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(8,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1961736877fc1ae2bcbc6483e73bd9f1a0a88f1430cbd5568600af657ee39675 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(9,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1e41e6ec078b0c124775e09f32ea8034ab4778471e810e2f6beb90f99bf6787f + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(10,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x85f57457c2477b08de3dafd82e773856a7f14f091344182586521e2bfdc6d82 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(11,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3a92f1980218864841a0cf75c31ee61de44195152ed6ed0873ab36d339590f5d + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(12,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2bb8dcbc95cd625a9bb33169011b6ad51be606389dc380a4d74716f8c3017d3d + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(13,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x313f4a0eb45af55d4fdd2f90446df5d572923343419c891c730fd0d44495300a + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(14,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x397a21e7265cb95ca3bb5d5b538d7c2924184e5e493beb8a15462efc6ad8e8e0 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(0,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2872348b4ab95215be502a26c10a9b34e76b8a06e992a702a23740d0d9447345 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(1,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x23e234e10930a0fc951ffcf40870e9bc5e0d14c2afb733e3635cb4bd8ca336de + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(2,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x33051936666b3a08fd345c4cd5b1c70cac04913c21c70ce814e3afdf7bc15ec9 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(12,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(3,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x17c75fdaa78e92d4b63f904cb3b6327e137f7a75ecea157e4216acdefcf51c22 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(4,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x13e6bb0c13d7ad1294af043b544370d7daaee591e5e1870b1607f695e5a5fdef + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(5,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xf5de7532ef60fb9a86ab17d0605333baad379b17447b03179758c63baf16236 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(6,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1b772105baac05a42a5044a02d75e1665cc0d306c7ce84af1c24d56eded3e2de + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(7,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2f3628d7ddba3889255e9aa968057863dd5f68c3de0ea375c9debee5b0fb1b1 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(8,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xc553b9adb0cd0caa912e95f6ed10d8b9f83e9313d990f0eb2c3566a3f1c89a2 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(9,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x27a75a0abc54f58f34c6a81f77b4eb94df7a60980defc8a977ec3a843882bd74 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(10,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1262905197100d186c699e8df81d7245e4cd5dddd25ad5ceedabdabcb1606634 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(11,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x28b8054f8b4c833e35824082923ec98c12e97219067af5860c7e52a1edb83553 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(12,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3c706fa24aed70db1b671c957b20a5a7350a8ded30a115a6a0cdbe6acb07947a + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(13,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3f0001bd31b5785f4c5614181120e93f5493fc666e264f8de1dd2aae83917da2 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(14,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xeb3cf6f32f5b9a256a502aea3f88e8fe3f7b6531ed61939866bf263b6431ba9 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(0,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1a048e26f8e39a73c6019bc6d16f453bc88e96c9759414cbf5f0dacbf31f957 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(1,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x160184702f555c8605841f2429bcf6a1a7a3dfbc245b27688d604ef6fd16734 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(2,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xc11b089006a428ca139fd1190b2e99b575a7154455ebe09d77e0bb44ae0fef3 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(13,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + + } + } +} diff --git a/contracts/zkllvm/mina_scalar/gate14.sol b/contracts/zkllvm/mina_scalar/gate14.sol new file mode 100644 index 0000000..794d43e --- /dev/null +++ b/contracts/zkllvm/mina_scalar/gate14.sol @@ -0,0 +1,1008 @@ + +// SPDX-License-Identifier: Apache-2.0. +//---------------------------------------------------------------------------// +// Copyright (c) 2022 Mikhail Komarov +// Copyright (c) 2022 Ilias Khairullin +// Copyright (c) 2022 Aleksei Moskvin +// Copyright (c) 2022-2023 Elena Tatuzova +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//---------------------------------------------------------------------------// +pragma solidity >=0.8.4; + +import "../../../contracts/types.sol"; +import "./gate_argument.sol"; + +library mina_scalar_gate14{ + uint256 constant MODULUS_OFFSET = 0x0; + uint256 constant THETA_OFFSET = 0x20; + + uint256 constant CONSTRAINT_EVAL_OFFSET = 0x00; + uint256 constant GATE_EVAL_OFFSET = 0x20; + uint256 constant GATES_EVALUATIONS_OFFSET = 0x40; + uint256 constant THETA_ACC_OFFSET = 0x60; + + uint256 constant WITNESS_EVALUATIONS_OFFSET = 0x80; + uint256 constant CONSTANT_EVALUATIONS_OFFSET = 0xa0; + uint256 constant SELECTOR_EVALUATIONS_OFFSET = 0xc0; + + + function evaluate_gate_be( + types.gate_argument_params memory gate_params, + mina_scalar_gate_argument_split_gen.local_vars_type memory local_vars + ) external pure returns (uint256 gates_evaluation, uint256 theta_acc) { + gates_evaluation = local_vars.gates_evaluation; + theta_acc = local_vars.theta_acc; + uint256 terms; + assembly { + let modulus := mload(gate_params) + let theta := mload(add(gate_params, THETA_OFFSET)) + + + function get_witness_i_by_rotation_idx(idx, rot_idx, ptr) -> result { + result := mload( + add( + add(mload(add(add(mload(add(ptr, WITNESS_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))), 0x20), + mul(0x20, rot_idx) + ) + ) + } + + function get_constant_i(idx, ptr) -> result { + result := mload(add(add(mload(add(ptr, CONSTANT_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))) + } + + function get_selector_i(idx, ptr) -> result { + result := mload(add(add(mload(add(ptr, SELECTOR_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))) + } + + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(3,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x298f3df7f0d69a412c0b624f49c510a0cc1b6489d4304d4b7045b870e337ded1 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(4,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1efa9addb1d119b22b8641c569623cf3bcb365a94ef9866bebb2bf2f40b7a8be + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(5,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x36583922b72040af4ecfaa4cf017a06cd65d47707ea43424fca9066f209769eb + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(6,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x206ee97ee155209881934af04a631f057126ef0b2ba365b988e5dd07cd5855e5 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(7,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x264ae5b73dda25064cb9ee333a45f8816685f75f0cf8ed060168d95159aaf8a2 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(8,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xd792d6149f3c29dfb14acb2ec0bf2e52c1049ec28327ecad1e74ab77790ce03 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(9,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3642bfc2fa24ec81586c0ef4922f7858d7cdcf4bedc7393fdd0d3bf20a82cb93 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(10,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x58e9abfdc1bcc9c19f776153af14e0ea64252f5812d36f2dcc1cf6e2ff4c516 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(11,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xbea46b09d3a6b990efdbbd4b45182946efe008ab4c7c771babf98c6904a4bbe + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(12,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x35ca0f0399ff6d47e0ea2290f4c2e860ba645b3faa1afa78f5ee443f265cb9b + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(13,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x191ec9f5080239d1641f79ae3d3a6ff14c979c4b31496e34fe119ebaa75f879e + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(14,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xf2fa77be8b285e2162cb376ddb2e80c686ab94b9059541cb99c3c3333ca842b + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(0,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x138099074fa7fdc90fda229d9adffb661864d8fcfb34cee6ef8a7a460f53a93d + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(1,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x33a3465caf2d23b9c22fa2429691edd3b92ee195b57c9cab530f0c3cb394146e + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(2,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2b2b28662bc26e4b2f6263d4023ec59b6db980870491769a2a4d2bae9813646f + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(14,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(3,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x39f3a9577b3295e2caeb0d76a7e947b1b0e5b9ab02abd8ac1b3f8162e53a3fb5 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(4,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1c1ea0c83ded993791526675b91bd0918a4ac32a460fb3c000f21acf57f28ac4 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(5,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1a14d6eefcb549410b56969ac0a33cc1b931e045c875a28ecc2b1c0b8015b1ac + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(6,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x216a3fb3afa8542e4bc5d0436bd4dc6e5165be0c825c702a42f87dc14f985eea + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(7,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2ab89fd037caa755ecd8dde02ddf05dd6594a20fc6a6f1118656f61839a77c36 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(8,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x294996153ce18d5618c604fc02815c77f2811fe0f423654af165bb5e010174c4 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(9,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x38fcb0b1dae59a3bbdcb862362ad785ce085901b54267f39fa4d4aa6f357dd10 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(10,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2062a8ce45fbf23a9719e47a8e156a3773b05cfefc522abb1c6c991bc0a97e + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(11,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xc0d320969fec65f04b5c57ed866d1d5667270b4971083bb0210fcae42a4fe3a + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(12,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3ca9e92aafcc2703f6dc67093a7403917753ac5e349496b87552614539ceba86 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(13,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x21357fe769bc20eb8c167256c01a756aab67a82a76c0939ddd8a196eef3e9fc2 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(14,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x19ddc35b50d27278735aacf3c19800e38c918d5fae1212fbfaf62eef106f4569 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(0,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x26e7f05a05349b1164b7d83328999dd543339a7b5e7ce1a43bd1b492ef5d5ca0 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(1,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3e960e9a7aa1f68afe0da294c5517ea33b5df739800f9fa6b2f085a1f1266bbb + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(2,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x9c57076e21a68b0f9451fbc4395d94bd0b97781133b9a4a7363c525dea32601 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(15,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + + } + } +} diff --git a/contracts/zkllvm/mina_scalar/gate16.sol b/contracts/zkllvm/mina_scalar/gate16.sol new file mode 100644 index 0000000..fd3b6f0 --- /dev/null +++ b/contracts/zkllvm/mina_scalar/gate16.sol @@ -0,0 +1,1008 @@ + +// SPDX-License-Identifier: Apache-2.0. +//---------------------------------------------------------------------------// +// Copyright (c) 2022 Mikhail Komarov +// Copyright (c) 2022 Ilias Khairullin +// Copyright (c) 2022 Aleksei Moskvin +// Copyright (c) 2022-2023 Elena Tatuzova +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//---------------------------------------------------------------------------// +pragma solidity >=0.8.4; + +import "../../../contracts/types.sol"; +import "./gate_argument.sol"; + +library mina_scalar_gate16{ + uint256 constant MODULUS_OFFSET = 0x0; + uint256 constant THETA_OFFSET = 0x20; + + uint256 constant CONSTRAINT_EVAL_OFFSET = 0x00; + uint256 constant GATE_EVAL_OFFSET = 0x20; + uint256 constant GATES_EVALUATIONS_OFFSET = 0x40; + uint256 constant THETA_ACC_OFFSET = 0x60; + + uint256 constant WITNESS_EVALUATIONS_OFFSET = 0x80; + uint256 constant CONSTANT_EVALUATIONS_OFFSET = 0xa0; + uint256 constant SELECTOR_EVALUATIONS_OFFSET = 0xc0; + + + function evaluate_gate_be( + types.gate_argument_params memory gate_params, + mina_scalar_gate_argument_split_gen.local_vars_type memory local_vars + ) external pure returns (uint256 gates_evaluation, uint256 theta_acc) { + gates_evaluation = local_vars.gates_evaluation; + theta_acc = local_vars.theta_acc; + uint256 terms; + assembly { + let modulus := mload(gate_params) + let theta := mload(add(gate_params, THETA_OFFSET)) + + + function get_witness_i_by_rotation_idx(idx, rot_idx, ptr) -> result { + result := mload( + add( + add(mload(add(add(mload(add(ptr, WITNESS_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))), 0x20), + mul(0x20, rot_idx) + ) + ) + } + + function get_constant_i(idx, ptr) -> result { + result := mload(add(add(mload(add(ptr, CONSTANT_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))) + } + + function get_selector_i(idx, ptr) -> result { + result := mload(add(add(mload(add(ptr, SELECTOR_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))) + } + + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(3,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2dd55583ccf2234a8e7f8b619a69ff5b429a3b218df940327cbbbc3a21caf314 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(4,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x312dfc21035ec14209507fa560a242012946911cdec1792bc4158538c854a1c2 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(5,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2e3316b4438569168f71662c9993f5d8cf1cecb00a5245932cae4d4403d70299 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(6,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x28fa99ca785fc34eeb7a5362fe02ef35110ddae3e8c23ec8a79b7004f021372f + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(7,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2d52d759fb7a5d26ee9c6fae68e0bc230ca5b92910f3ca681d3a66a1129c1284 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(8,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x35619e33ca1456c8b115ee88ac55556c4b93f9a6fd685420aba0e392fa246b8c + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(9,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x38d3c29d30ff956a2374d5ac078744d925975cd3328affc757534a81adafab54 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(10,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3e3170e974bb908186846e98803b9568c519ee982d5f17aac47d7881a41db585 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(11,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x317b958dee1025c27eea4a40895548155f908f6be29833d890c53ed6883aa9f4 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(12,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x354470262905c88dfdd05777ff3ed423673464b4d971dbc97a3316cedaa5f0ac + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(13,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x23a266c743ca5b7cd17c8a23cf82458610d96ea59b543e2a6dbbe77d9137f832 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(14,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xa41585390bf1f0af0f72cda4160fae04aebbe70064e89907694253f5c28dbd0 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(0,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3be6ca83dfa581e1fd73f0b63421547a6a174b447a79adc236ddff052d1b7351 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(1,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x26cc1bdb387718b995ea60e01fea538e115228b72fb5406abe4cc8a61b2de6f7 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(2,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x321d8332256a544c267248929080ead619731d53f23bea2e5d692ec82ec1a9f2 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(16,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(3,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3ca5ced2a29340ff2aa0f6801450642a3780a673ead59de354c8bf793230d0b0 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(4,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x33190beabb635aea1b256e88ad836dbd747a006e23b32470847915f8b0c60631 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(5,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x7028eabc25a3b3fbb823dd55d3e1c8bd58e4a4a0a7da4d74b91dbc3207371a0 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(6,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2a7217a6552ac395e821baa54f985f654b7af6ccc892d73f146e4889a3f2369c + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(7,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x13cffa7711517343c7eb42e289b90b8d32db5455fd239ce77c3db3d0b1acd376 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(8,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x34e67308bd5fd6bf653fdc6846e1d8fb27b1ac0ac2040934b5281cd0781d303e + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(9,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2ff4c8a3de2ca82a9862719261484007347241a6d3d543c1eb952d9d304aba69 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(10,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2a5b8b2bba6f1d4dc4744e1860a9ec0ebca81e194cb39aee7f654a1f14c1c31c + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(11,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x155df199bd56761e19067eb3db0fdd670622f117fe9fa308d315e390da4812b4 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(12,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x269a680d29a3a96d8f986a40b9148416b715347fe65096ca281a1e3223fe143d + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(13,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1b7d6e55ae9255f5932e6e3e39ae57d0a52b39f38bc92beefaa46ed87b7c1d44 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(14,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x93fd46752d8dd488b514ece4ce402f7a5dc19ceff54fe9cceae513b0d8f7882 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(0,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2dbf1f96b65e526d427516f88d4a27afd0d280cf81f276b5e1d233bdf245be6c + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(1,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x47c081c90cf6c6587139c34daab55f9b8a4d93a50dc379120bcb1c841495e9e + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(2,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x29974fa7d31fb080a4e1ca1e4833c1fa6422cccf6b88bf9a26edd1e1d572efd3 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(17,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + + } + } +} diff --git a/contracts/zkllvm/mina_scalar/gate18.sol b/contracts/zkllvm/mina_scalar/gate18.sol new file mode 100644 index 0000000..99c6a9e --- /dev/null +++ b/contracts/zkllvm/mina_scalar/gate18.sol @@ -0,0 +1,1222 @@ + +// SPDX-License-Identifier: Apache-2.0. +//---------------------------------------------------------------------------// +// Copyright (c) 2022 Mikhail Komarov +// Copyright (c) 2022 Ilias Khairullin +// Copyright (c) 2022 Aleksei Moskvin +// Copyright (c) 2022-2023 Elena Tatuzova +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//---------------------------------------------------------------------------// +pragma solidity >=0.8.4; + +import "../../../contracts/types.sol"; +import "./gate_argument.sol"; + +library mina_scalar_gate18{ + uint256 constant MODULUS_OFFSET = 0x0; + uint256 constant THETA_OFFSET = 0x20; + + uint256 constant CONSTRAINT_EVAL_OFFSET = 0x00; + uint256 constant GATE_EVAL_OFFSET = 0x20; + uint256 constant GATES_EVALUATIONS_OFFSET = 0x40; + uint256 constant THETA_ACC_OFFSET = 0x60; + + uint256 constant WITNESS_EVALUATIONS_OFFSET = 0x80; + uint256 constant CONSTANT_EVALUATIONS_OFFSET = 0xa0; + uint256 constant SELECTOR_EVALUATIONS_OFFSET = 0xc0; + + + function evaluate_gate_be( + types.gate_argument_params memory gate_params, + mina_scalar_gate_argument_split_gen.local_vars_type memory local_vars + ) external pure returns (uint256 gates_evaluation, uint256 theta_acc) { + gates_evaluation = local_vars.gates_evaluation; + theta_acc = local_vars.theta_acc; + uint256 terms; + assembly { + let modulus := mload(gate_params) + let theta := mload(add(gate_params, THETA_OFFSET)) + + + function get_witness_i_by_rotation_idx(idx, rot_idx, ptr) -> result { + result := mload( + add( + add(mload(add(add(mload(add(ptr, WITNESS_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))), 0x20), + mul(0x20, rot_idx) + ) + ) + } + + function get_constant_i(idx, ptr) -> result { + result := mload(add(add(mload(add(ptr, CONSTANT_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))) + } + + function get_selector_i(idx, ptr) -> result { + result := mload(add(add(mload(add(ptr, SELECTOR_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))) + } + + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(3,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x192958f716b9b37a16389fa1780469fcb2749a74d1f9e4a2b6e662cb7d1bfd94 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(4,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3a6b0330e79c66c4bc52f5ec3a0385ac2ca71b99db19887049ede3fcc59619d4 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(5,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3871b3a7749222f01812ac560da4953c5f5bd735c9e5dc5efad79ddb66fae6c1 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(6,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x30bb15c1eb3c1b7b61185ada0188e8f49bedf286d313c673c249ce0e6cd50964 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(7,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x117a98436171c9642088b7293809887ca5e684a6352f8eae7c1b5621e06aec88 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(8,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x83ca4fa9e8e67d33828b19f7e0353d0abf77918faab23025bdcc870682ae453 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(9,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x16243002a4aa298e37a35bdfc853a19b4f5756299949b4636bbf6ce6a1a0e264 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(10,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1fef67bdd1fab3e2233b9abee2ffd2d45c9e741a419fb5feb302aee942fb5ae1 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(11,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3821cd12b3aebcbcf10bc510eff06b7129ecedc475ea56798aeff53926d3237d + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(12,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xb16a5233f3a3cb02c7546db95fb33eff8502041b5d3b1e0644e6ad06b1c9e68 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(13,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x22a050ea8ed93a66dcd67dca935f1584a06e233bec107d80baad60c4b8f059de + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(14,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x29f57fe8942d7e1c05647d1bbf9c338429d7e0e871af8a9b8dffa53e83a81e2f + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(0,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2813380a214eb73abd5dd2fd4f67bc68fdb58ec04c4ba59affb724a00ce4dbfb + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(1,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3fdf59551e807dd438fca25c476ce7695a2546c79a6a65323e46c1450fefe4c4 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(2,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3615f13ef3f18846c7a5a7332a133c3796eaaba35a2202051092a43fb058372b + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(18,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(1,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x10000000000000000,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x100000000000000000000000000000000,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1000000000000000000000000000000000000000000000000,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x40000000000000000000000000000000224698fc0994a8dd188dd64200000002 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=get_witness_i_by_rotation_idx(5,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x10000000000000000,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x40000000000000000000000000000000224698fc0994a8dcae8d841d0994a8df + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=get_witness_i_by_rotation_idx(6,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x10000000000000000,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x40000000000000000000000000000000224698fc0994a8dc8c46eb2100000002 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=get_witness_i_by_rotation_idx(7,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x10000000000000000,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x40000000000000000000000000000000224698fc0994a8dccc46eb2100000002 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=get_witness_i_by_rotation_idx(8,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(9,0, local_vars),get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(10,0, local_vars),get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(11,0, local_vars),get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(19,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(1,1, local_vars),get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20fffffffe,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20ffffffff,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x6,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20fffffffb,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(2,0, local_vars),get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20fffffffe,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20ffffffff,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x6,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20fffffffb,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(3,0, local_vars),get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20fffffffe,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20ffffffff,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x6,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20fffffffb,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(4,0, local_vars),get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20fffffffe,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20ffffffff,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x6,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20fffffffb,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(5,1, local_vars),get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20fffffffe,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20ffffffff,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x6,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20fffffffb,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(6,0, local_vars),get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20fffffffe,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20ffffffff,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x6,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20fffffffb,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(7,0, local_vars),get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20fffffffe,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20ffffffff,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x6,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20fffffffb,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(8,0, local_vars),get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20fffffffe,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20ffffffff,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x6,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20fffffffb,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(9,0, local_vars),get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20fffffffe,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20ffffffff,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x6,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20fffffffb,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(10,0, local_vars),get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20fffffffe,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20ffffffff,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x6,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20fffffffb,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(11,0, local_vars),get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20fffffffe,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20ffffffff,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x6,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20fffffffb,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(12,0, local_vars),get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20fffffffe,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20ffffffff,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x6,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20fffffffb,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(13,0, local_vars),get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20fffffffe,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20ffffffff,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x6,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20fffffffb,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(14,0, local_vars),get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20fffffffe,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20ffffffff,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x6,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb20fffffffb,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(0x4000000,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1000000,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x400000,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x100000,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x10000,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x4000,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1000,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x400,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x100,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x10,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x4,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=get_witness_i_by_rotation_idx(14,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x10000000,get_witness_i_by_rotation_idx(0,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(20,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(0,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x10000000000000000,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(21,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(0,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(0,2, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(13,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(1,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(2,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(22,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(1,1, local_vars),get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(4,0, local_vars),get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(3,0, local_vars),get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=get_witness_i_by_rotation_idx(1,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(0,1, local_vars),get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(23,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + + } + } +} diff --git a/contracts/zkllvm/mina_scalar/gate3.sol b/contracts/zkllvm/mina_scalar/gate3.sol new file mode 100644 index 0000000..0eed653 --- /dev/null +++ b/contracts/zkllvm/mina_scalar/gate3.sol @@ -0,0 +1,1031 @@ + +// SPDX-License-Identifier: Apache-2.0. +//---------------------------------------------------------------------------// +// Copyright (c) 2022 Mikhail Komarov +// Copyright (c) 2022 Ilias Khairullin +// Copyright (c) 2022 Aleksei Moskvin +// Copyright (c) 2022-2023 Elena Tatuzova +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//---------------------------------------------------------------------------// +pragma solidity >=0.8.4; + +import "../../../contracts/types.sol"; +import "./gate_argument.sol"; + +library mina_scalar_gate3{ + uint256 constant MODULUS_OFFSET = 0x0; + uint256 constant THETA_OFFSET = 0x20; + + uint256 constant CONSTRAINT_EVAL_OFFSET = 0x00; + uint256 constant GATE_EVAL_OFFSET = 0x20; + uint256 constant GATES_EVALUATIONS_OFFSET = 0x40; + uint256 constant THETA_ACC_OFFSET = 0x60; + + uint256 constant WITNESS_EVALUATIONS_OFFSET = 0x80; + uint256 constant CONSTANT_EVALUATIONS_OFFSET = 0xa0; + uint256 constant SELECTOR_EVALUATIONS_OFFSET = 0xc0; + + + function evaluate_gate_be( + types.gate_argument_params memory gate_params, + mina_scalar_gate_argument_split_gen.local_vars_type memory local_vars + ) external pure returns (uint256 gates_evaluation, uint256 theta_acc) { + gates_evaluation = local_vars.gates_evaluation; + theta_acc = local_vars.theta_acc; + uint256 terms; + assembly { + let modulus := mload(gate_params) + let theta := mload(add(gate_params, THETA_OFFSET)) + + + function get_witness_i_by_rotation_idx(idx, rot_idx, ptr) -> result { + result := mload( + add( + add(mload(add(add(mload(add(ptr, WITNESS_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))), 0x20), + mul(0x20, rot_idx) + ) + ) + } + + function get_constant_i(idx, ptr) -> result { + result := mload(add(add(mload(add(ptr, CONSTANT_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))) + } + + function get_selector_i(idx, ptr) -> result { + result := mload(add(add(mload(add(ptr, SELECTOR_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))) + } + + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(14,0, local_vars),get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(13,0, local_vars),get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(5,0, local_vars),get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(5,0, local_vars),get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(5,0, local_vars),get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(5,0, local_vars),get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(5,0, local_vars),get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(5,0, local_vars),get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(5,0, local_vars),get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(5,0, local_vars),get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(5,0, local_vars),get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(5,0, local_vars),get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(5,0, local_vars),get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(5,0, local_vars),get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(5,0, local_vars),get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(5,0, local_vars),get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(12,0, local_vars),get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(11,0, local_vars),get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(2,0, local_vars),get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(2,0, local_vars),get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(2,0, local_vars),get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(2,0, local_vars),get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(2,0, local_vars),get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(2,0, local_vars),get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(2,0, local_vars),get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(2,0, local_vars),get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(2,0, local_vars),get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(2,0, local_vars),get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(2,0, local_vars),get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(2,0, local_vars),get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(2,0, local_vars),get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(2,0, local_vars),get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(10,0, local_vars),get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(9,0, local_vars),get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(3,0, local_vars),get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(3,0, local_vars),get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(3,0, local_vars),get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(3,0, local_vars),get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(3,0, local_vars),get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(3,0, local_vars),get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(3,0, local_vars),get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(3,0, local_vars),get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(3,0, local_vars),get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(3,0, local_vars),get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(3,0, local_vars),get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(3,0, local_vars),get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(3,0, local_vars),get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(3,0, local_vars),get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(8,0, local_vars),get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(7,0, local_vars),get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(4,0, local_vars),get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(4,0, local_vars),get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(4,0, local_vars),get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(4,0, local_vars),get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(4,0, local_vars),get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(4,0, local_vars),get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(4,0, local_vars),get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(4,0, local_vars),get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(4,0, local_vars),get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(4,0, local_vars),get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(4,0, local_vars),get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(4,0, local_vars),get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(4,0, local_vars),get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(get_witness_i_by_rotation_idx(4,0, local_vars),get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(0x80,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x20,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x10,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x8,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x4,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=get_witness_i_by_rotation_idx(7,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x100,get_witness_i_by_rotation_idx(1,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(3,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(0,1, local_vars),get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(4,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(0,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(5,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(1,1, local_vars),get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(1,1, local_vars),get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(6,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=mulmod(get_witness_i_by_rotation_idx(0,1, local_vars),get_constant_i(0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000000,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(7,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + + } + } +} diff --git a/contracts/zkllvm/mina_scalar/gate8.sol b/contracts/zkllvm/mina_scalar/gate8.sol new file mode 100644 index 0000000..7b2f9dc --- /dev/null +++ b/contracts/zkllvm/mina_scalar/gate8.sol @@ -0,0 +1,1008 @@ + +// SPDX-License-Identifier: Apache-2.0. +//---------------------------------------------------------------------------// +// Copyright (c) 2022 Mikhail Komarov +// Copyright (c) 2022 Ilias Khairullin +// Copyright (c) 2022 Aleksei Moskvin +// Copyright (c) 2022-2023 Elena Tatuzova +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//---------------------------------------------------------------------------// +pragma solidity >=0.8.4; + +import "../../../contracts/types.sol"; +import "./gate_argument.sol"; + +library mina_scalar_gate8{ + uint256 constant MODULUS_OFFSET = 0x0; + uint256 constant THETA_OFFSET = 0x20; + + uint256 constant CONSTRAINT_EVAL_OFFSET = 0x00; + uint256 constant GATE_EVAL_OFFSET = 0x20; + uint256 constant GATES_EVALUATIONS_OFFSET = 0x40; + uint256 constant THETA_ACC_OFFSET = 0x60; + + uint256 constant WITNESS_EVALUATIONS_OFFSET = 0x80; + uint256 constant CONSTANT_EVALUATIONS_OFFSET = 0xa0; + uint256 constant SELECTOR_EVALUATIONS_OFFSET = 0xc0; + + + function evaluate_gate_be( + types.gate_argument_params memory gate_params, + mina_scalar_gate_argument_split_gen.local_vars_type memory local_vars + ) external pure returns (uint256 gates_evaluation, uint256 theta_acc) { + gates_evaluation = local_vars.gates_evaluation; + theta_acc = local_vars.theta_acc; + uint256 terms; + assembly { + let modulus := mload(gate_params) + let theta := mload(add(gate_params, THETA_OFFSET)) + + + function get_witness_i_by_rotation_idx(idx, rot_idx, ptr) -> result { + result := mload( + add( + add(mload(add(add(mload(add(ptr, WITNESS_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))), 0x20), + mul(0x20, rot_idx) + ) + ) + } + + function get_constant_i(idx, ptr) -> result { + result := mload(add(add(mload(add(ptr, CONSTANT_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))) + } + + function get_selector_i(idx, ptr) -> result { + result := mload(add(add(mload(add(ptr, SELECTOR_EVALUATIONS_OFFSET)), 0x20), mul(0x20, idx))) + } + + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(3,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3a6f10d5eb45c31081706c59221b2b7f1cc93bf6c19db84a4a903262e63ff11b + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(4,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x388055881287007496a7a620cb24aea82b9207a58a3570b2fc789791f1a00192 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(5,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1ab4836b6aa3766b12e91366af2a6537d7ce217efa55fa82421c25e145d21b1 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(6,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x8266e2372b21c6edcaa8ba38287074fdd2fe7aed8b215b8d0e91aab35f0f3e4 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(7,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x33f9eb22e3009397e8500f627d107d71a17babae697126ad0349e910df07e0f3 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(8,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3ccca1cca5c012bb7bdca6ad74c1771e9ffc81be617ad0ef234102f212fabdbe + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(9,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x34ddfd55ab2bd0b0f896c8998dc469db5849f428cf6909f97d2a6a86ea5b75e4 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(10,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x16fdac1f1e2d38d4cd5a4d8dec85f76d6cb34df07a6df3e1665cea4ac58f1622 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(11,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x16678c18cfda283748e02df62ec2458814488e819134a3a52043c8c49c2ff0e + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(12,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x29b97d0aa13ceb09c60a07f9d5b220ee34c5c379e40306ad96f7b7136fe9a27c + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(13,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xf645def6c362fb37e42ad8c52ef9b1e64b631cadc623effb167765e14e2c200 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(14,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2a618d44fcf34766b4d153e2b1182f0fb73b8fcd9382d47d2bebad949f5d8b28 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(0,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x328bc240390c37cc31d10b6a94152c3f09496763a474706573433e8e6de7022b + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(1,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2734a56dcf148bfba1217cb53922ed644fa652ce3f77120c248d2d12e1695979 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(2,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x127d07a03ddd4dea6fd29e37a36974c6aca92ccd6ef3c7bdbbbe696151cee19b + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(8,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET), 0) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(3,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x16df7d741a68d347007fdcc7956f57c86649ce624b70a7a59474d93448dade1b + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(4,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xefe88b1e3c28d2fef104d63e93b89169988e488e7e5695aabea215a4fc9f7ae + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(5,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(0,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(1,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(2,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0xd84b19cac3f661be5700546efc669464fa99121fa7a8fc2e54b95608df390ad + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(6,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3f8e3d6fe722b72a3aa8c861562b502816b4206d348ada06d18270bb4574b8a5 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(7,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1a10211093a52a97cb4db301fc2a8c9f6e133a3306cd19f457b83052548d9fc9 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(8,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(3,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(4,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(5,1, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2f6001a326e70328258024bf2cd53bf92df311ac2f518ca7c263951f4308f718 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(9,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x20b21a2874bc871f135b6126b666274390fdf94e0c0b3c528c8c443e9ab2e742 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(10,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x28ce7a1e1552f99b45e3fe471be85bbdf623f4bea7684ae40035a302dfa1b663 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(11,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(6,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(7,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(8,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x29e5f174ce5902bd8d823f5c851b08eaba0ba5a395d770f5fe363f55f1de0544 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(12,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x21354c0bd6cb5339bb33dd8cea13294535efa9e76b840756850dcb6c3bf5834 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(13,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x1628abe2d5b03206380ebb31e16a85a1c5d93bf5c37c677574763de78f74d7fa + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(14,0, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(9,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(10,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(11,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x22fadaaa797a6882cde01793fa0b9d51f3effa8ee968d317613ed5eefbabeeb7 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(0,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x1d70822e80b8581cfb5ab2c8822851174db06f98c33edea8c227e30dc22a6b3,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0xf24f954496903346d4d753deb0b76c2e26e4dbebf04906842d108dc883cda01,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x28beef43e4fa739fe900a17ead54c004b4182caf07ae3e235c20915be480a9c7,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x3d82e513f3337f08e2f62d563f48911a23ac11aa9a863fc2ece730eaf34860cf + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(1,2, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x2d2c9057cafceb967f3fa5e2b7432af2f3a9556b26410784eb48b2a2d4b514f5,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x154e83714c9641589160f3c7a17450390d0fda1f7b8dd86db5ead4b016b263ac,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3f336eacd7e9a3ec67950ed81ef7461a48a08c9e40666a67558e2746a4b57aca,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x23d71297ea61ab207d6919ab4f3e4a78f46283a451e47e0166d91f0affdd6459 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET), 0) + terms:=get_witness_i_by_rotation_idx(2,1, local_vars) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3b26592d8f96997714bcb9eac4c7f39ee808ce0b0e3a8a5a0c0650405ebc2ce6,get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(12,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x3d57fa111cce837451e082ea541b2d8033e6ed2c6f61740c012db87dc88b3cdd,get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(13,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=mulmod(0x264f6d16392002e14e4920d243ff44dd9e8cf174e256dd2ff0b96153afd48444,get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + terms:=mulmod(terms, get_witness_i_by_rotation_idx(14,0, local_vars), modulus) + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + terms:=0x2a36341d640b1827451dd22ddec3798dd3ad5411bdf67427242b0005f68ddea3 + mstore(add(local_vars, CONSTRAINT_EVAL_OFFSET),addmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),terms,modulus)) + mstore(add(local_vars, GATE_EVAL_OFFSET),addmod(mload(add(local_vars, GATE_EVAL_OFFSET)),mulmod(mload(add(local_vars, CONSTRAINT_EVAL_OFFSET)),theta_acc,modulus),modulus)) + theta_acc := mulmod(theta_acc, theta, modulus) + mstore(add(local_vars, GATE_EVAL_OFFSET),mulmod(mload(add(local_vars, GATE_EVAL_OFFSET)),get_selector_i(9,local_vars),modulus)) + gates_evaluation := addmod(gates_evaluation,mload(add(local_vars, GATE_EVAL_OFFSET)),modulus) + + } + } +} diff --git a/contracts/zkllvm/mina_scalar/gate_argument.sol b/contracts/zkllvm/mina_scalar/gate_argument.sol new file mode 100644 index 0000000..14614eb --- /dev/null +++ b/contracts/zkllvm/mina_scalar/gate_argument.sol @@ -0,0 +1,115 @@ + +// SPDX-License-Identifier: Apache-2.0. +//---------------------------------------------------------------------------// +// Copyright (c) 2022 Mikhail Komarov +// Copyright (c) 2022 Aleksei Moskvin +// Copyright (c) 2023 Elena Tatuzova +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//---------------------------------------------------------------------------// +pragma solidity >=0.8.4; + +import "../../../contracts/types.sol"; +import "../../../contracts/basic_marshalling.sol"; +import "../../../contracts/commitments/batched_lpc_verifier.sol"; +import "../../../contracts/interfaces/gate_argument.sol"; + +import "./gate0.sol"; +import "./gate3.sol"; +import "./gate8.sol"; +import "./gate10.sol"; +import "./gate12.sol"; +import "./gate14.sol"; +import "./gate16.sol"; +import "./gate18.sol"; + + +contract mina_scalar_gate_argument_split_gen is IGateArgument{ + uint256 constant GATES_N = 24; + + struct local_vars_type{ + // 0x0 + uint256 constraint_eval; + // 0x20 + uint256 gate_eval; + // 0x40 + uint256 gates_evaluation; + // 0x60 + uint256 theta_acc; + + //0x80 + uint256[][] witness_evaluations; + //a0 + uint256[] constant_evaluations; + //c0 + uint256[] selector_evaluations; + + } + + // TODO: columns_rotations could be hard-coded + function evaluate_gates_be( + bytes calldata blob, + uint256 eval_proof_combined_value_offset, + types.gate_argument_params memory gate_params, + types.arithmetization_params memory ar_params, + int256[][] calldata columns_rotations + ) external pure returns (uint256 gates_evaluation) { + local_vars_type memory local_vars; + + + local_vars.witness_evaluations = new uint256[][](ar_params.witness_columns); + for (uint256 i = 0; i < ar_params.witness_columns;) { + local_vars.witness_evaluations[i] = new uint256[](columns_rotations[i].length); + for (uint256 j = 0; j < columns_rotations[i].length;) { + local_vars.witness_evaluations[i][j] = batched_lpc_verifier.get_variable_values_z_i_j_from_proof_be( + blob, eval_proof_combined_value_offset, i, j + ); + unchecked{j++;} + } + unchecked{i++;} + } + + local_vars.constant_evaluations = new uint256[](ar_params.constant_columns); + for (uint256 i = 0; i < ar_params.constant_columns;) { + local_vars.constant_evaluations[i] = batched_lpc_verifier.get_fixed_values_z_i_j_from_proof_be( + blob, eval_proof_combined_value_offset, ar_params.permutation_columns + ar_params.permutation_columns + i, 0 + ); + + unchecked{i++;} + } + + local_vars.selector_evaluations = new uint256[](ar_params.selector_columns); + for (uint256 i = 0; i < ar_params.selector_columns;) { + local_vars.selector_evaluations[i] = batched_lpc_verifier.get_fixed_values_z_i_j_from_proof_be( + blob, eval_proof_combined_value_offset, ar_params.permutation_columns + ar_params.permutation_columns + ar_params.constant_columns + i, 0 + ); + unchecked{i++;} + } + + + local_vars.theta_acc = 1; + local_vars.gates_evaluation = 0; + + (local_vars.gates_evaluation, local_vars.theta_acc) = mina_scalar_gate0.evaluate_gate_be(gate_params, local_vars); + (local_vars.gates_evaluation, local_vars.theta_acc) = mina_scalar_gate3.evaluate_gate_be(gate_params, local_vars); + (local_vars.gates_evaluation, local_vars.theta_acc) = mina_scalar_gate8.evaluate_gate_be(gate_params, local_vars); + (local_vars.gates_evaluation, local_vars.theta_acc) = mina_scalar_gate10.evaluate_gate_be(gate_params, local_vars); + (local_vars.gates_evaluation, local_vars.theta_acc) = mina_scalar_gate12.evaluate_gate_be(gate_params, local_vars); + (local_vars.gates_evaluation, local_vars.theta_acc) = mina_scalar_gate14.evaluate_gate_be(gate_params, local_vars); + (local_vars.gates_evaluation, local_vars.theta_acc) = mina_scalar_gate16.evaluate_gate_be(gate_params, local_vars); + (local_vars.gates_evaluation, local_vars.theta_acc) = mina_scalar_gate18.evaluate_gate_be(gate_params, local_vars); + + + gates_evaluation = local_vars.gates_evaluation; + } +} diff --git a/contracts/zkllvm/mina_scalar/linked_libs_list.json b/contracts/zkllvm/mina_scalar/linked_libs_list.json new file mode 100644 index 0000000..68dceaa --- /dev/null +++ b/contracts/zkllvm/mina_scalar/linked_libs_list.json @@ -0,0 +1,10 @@ +[ +"mina_scalar_gate0", +"mina_scalar_gate3", +"mina_scalar_gate8", +"mina_scalar_gate10", +"mina_scalar_gate12", +"mina_scalar_gate14", +"mina_scalar_gate16", +"mina_scalar_gate18" +] diff --git a/contracts/zkllvm/mina_scalar/proof.bin b/contracts/zkllvm/mina_scalar/proof.bin new file mode 100644 index 0000000..558d601 --- /dev/null +++ b/contracts/zkllvm/mina_scalar/proof.bin @@ -0,0 +1 @@ +0x00000000000000204026793606dff20bf4f7e0ed0ce8bcbc9cfddc806ae51de108c69d59e4983fad0000000000000020a247181950362fb8ac7c5e483dba73b56f443a3cf107ed416dd17798ae4dd8080000000000000020de8e5a022d9d3a4bd552c4b0c22cfe25f0987d1ddeb961359461f1c0e10af62400000000000000200a04b55e5bd650bae7eecd02622d29219f30ded9842f997c44c8c7a627b13f8037bd494a2be9b7dadd8a8a13faedbef97236954e6fe256dd34abf3b2df1aa42e2f6b36cb5852e508706b47917797fa10ce2bff6c69db8a3a35b74559d259b56b00000000000000040000000000000010000000000000000305c12f947c5b4c77387b821f9a466626033b5daab2e7a0cc67bb89aa6cf88b6b234f38469df0b13dfcd0f3b11cf5c311e57c3d447ec93d7c8e4d5bebd084d2391a25c781a891bfa65c6a14c8d65a78e9631e0a07a5189474ebf9bab3dfa9b71d000000000000000315f9bd8a2972e4db3e9a47b9692c9e2232dce3aa4141bbe03eb142babfffb7a610fc3266e336e527c7b71005f2dd378510fc8075d1bcfce831e3f4727e3ef83b093d8d3de7863d55a8ce299c55ee3f9292c3f8a22b24ad6eeb65ac2dc0e93d3a000000000000000201c41d2cd8671dbd506305b248e6f1b9918bc45a420797b5dec4b0f86e9b360e0da7e02dbb0ad4e5634d5eb83d7837562e96fe6a4b5c9cd7f50e14cd5a17b6be00000000000000013a1ae7ba2656ab25d2d9f727b82c29001e61242b586a2ebf12f2bac69bbe8ce8000000000000000137c3749b50863efbc6ce480d59963e4c5c2173e50648a7ec2d6f11fba8e53c93000000000000000204d863c482232719ae4bd97c1ade5fb092861b2ac1c601726215dfa887bd1888313684bfaa9771fe5a4826ccd98b5e5285040cf9702aeb55fd11f74c991f477200000000000000013621494a8b7ccf999413bb24ec3eba2a5f506285ca51dc99cecdac78d1efc3ee00000000000000011296d56752c4e4cc8c7cd8ea3e822c3f4b5a5c67935e12c61c125fc1f456046600000000000000010e0a6c0d0ff96a5a9fb058e3579796175df6bef48848f3600426483cc71970dc00000000000000010f9a12e1402fb1990c069d53c9e1789f02cda92f9b7b420e4e2c70aba019aca30000000000000001082096b383a9a62c356988bc912dd5bb278430db6d295ed6081b4a766cca7adf000000000000000123e6da47db375a1a4fbbc03549042700f7bfdd1a42008848549c4ee4e77cb29400000000000000010d4a4f1d1cb3448f2b1189ece700d8f5aa5832122dd58c942f28bd872e10904400000000000000021bcd8cff2aee845ce5bf30b84d52ab1ed2cfbe193721ac713f01366dc072cead3b95a8f73d9f0a1130bcbda3e3d2f43ea1eda8177a8aab5557aff0532be9852d0000000000000001239605b60a9271e00ea19e8e55f7114b5286ec3aed456bf2245beb88df6bf67800000000000000013d569fa06de0ffbe3d1525d27056e9fa6b730a6c8d3e4f1e2b50e035c18747b9000000000000000100000000000000020eb83231d2336a10c4910c9f2de471dd5f856efb40b586263e9e66193a218edd3bbef07b30b8f6e7aa0694a5ef35d7ef6fddfefd12aa9516dc0d62e46914b9290000000000000012000000000000000118e3a102067267396d6c54a4d0049e0071e86a704e089d771f12801e7a367c2700000000000000012f12b7351e7a98b560ad08703a259867a6eaf78e89961a710b0674826704e23800000000000000012a8748324098c682b793b5b70eb5cba9eb829f8c5bb63e21960d6bc24f051b6b00000000000000013400000116922012fa83f2dc99b96e35f299eb4535ed27e2b619bc7c71fdb79a00000000000000010100d267a49e3dcd2db00494bdcf74cf13ab11648c27de0c78a863c514643f22000000000000000100b0e26b9fc53237f8df10b4adfd9bd3445cddfc7402e7b6241f5a4214c0184f00000000000000011be032287ad674091e63517216af2c2adadcd026e0a4494a758c2254b1a35c1e00000000000000010a8ab34e8b50c4cc2f037cb43e7e930bfff4a0f3f54991a67a5f60a4cc8fce5800000000000000011ffba259ce28eabe63c2549915d7ca07b668a7e6469c2c081808176129b271c400000000000000010c0fbc789f7ec5feb91a0d2c5d1d894142204530db2b8894591a727122f9a8de0000000000000001093c5d69965e450cb3b02199afc3b50af90792a1b61ff2828adf55552d6b076a00000000000000012afb5282c0e78c93d4ba512a54002cffb5ec13a82c7cf589be08ad76cc3107e200000000000000010e759405f83bf281a92c8c815813b71fb3f92b5bda9438cfb7a56f2a9c06ab4a000000000000000137b97b816a9e122b8250a7ef78cb9c07cf5aff42710223b61fc33388110e1cef00000000000000010123ea7f7a7a5b526e68ccaf755692d789b64c61d8df6fc8cdaa8b6e0c00aa49000000000000000117186e7f85dfede18adf71a32ce739465c6e1d10eb23850bc38e976933c720ad00000000000000012d5028c5cb0f29c8cc22328283a38ecb382ad9e18e76a2e63c4cf2180e22b13b00000000000000010f2eb999fd42d77e08140e0b113f17d11039eff609bff36cc1c6aeddd09616550000000000000043000000000000000137bd494a2be9b7dadd8a8a13faedbef97236954e6fe256dd34abf3b2df1aa42e000000000000000116b26e72db90974653b4b263e6a4badeb1f6869809190edbd64015fa5b8534e20000000000000001317c283e49d2f45fa2877bf38137a659578a07fc23e8a16da2f982c2c99a08690000000000000001376cc937711ec5de2ca56bc186163fbe4ede5cf896cd2c8b8a0acc6af0022a0a0000000000000001151fee153599dd56df3b1ac79e6f3eb7013d6ceacbaf3b43811a5192b00ad22e0000000000000001299fa66a0c0152b25c2785e6182c3992e3ec8799f0d77f73f93cacbc70361ae50000000000000001101e40123c069d7bccc59d7e78dd1fde0ccadb0d977782ab395a9e4b310e867600000000000000011097405b2c21136affdc13785c519f561dafae47ebc0e47a927e2c56f548a04d000000000000000112f441c7dca56116ff4c6159cd981cae7227ce6b912fcd87502ff291ca6b218000000000000000011ec548e74f3ae572fc7de6c103f88f6818806f1dcc5a5ac704a8d1b7f417a77f000000000000000119da6c848c267b3eee7581c513dacd0835f4f99cea9a7427febe4255c4764579000000000000000101441e96bcc0683aa84b88d963460128c93bae1881daf30ce129756ad64f5b5b0000000000000001065498f1afc209254979ac3ef05e05cbee2a667a8946bf4065cf4b162f8cc8c700000000000000011fa6fcb86eca2dba6f605d3ab1d61cfba6d40064ae61bc41fd0c776eedbfebe300000000000000011e42ef9a29f2e4a42ce1d225792e90e9fd96cfff54bf5b8ed8b07ee8a4bf9b6d0000000000000001174eae02d1be7734e0691abb5de8d491af64de049493780f22e4a44937be091f00000000000000013489660e18b85408620d85a8d58c26d84ab1bd1add4caf6e22304a4d16b62d9a00000000000000013991a211375e01d8195fe0436bc5783fb06c8092dc6dee93dd77de1be7fce1250000000000000001173110413f8734f1bb20423763b5f05f91e89cf2c5aa4755818b8c1a0cb79d2800000000000000012728c29c313367d761022f6828779ccc40cf2302f442c319f09db63d412bfd4700000000000000012917631881807e66bce9a1135c3b813d556280cb671eeb6e9cd8db883806e3aa00000000000000013d26a13cc276a37deb9456b340ebe0e09350ca2f4c95164f9cb2855af8fd26620000000000000001156e3adc14e4a0b2ac0f9e47c9ec02ea2a82483c6483886efdc7342cd2caffe000000000000000010ea5deda2ee8d239c57580769084e380e347537cea0df9d465f168be8fe305b100000000000000013dce01cec472e74fecc883db5b7bbe680d5e066504a8c019fc229e58face9e6200000000000000013ee75a7432602674d8135a0fecb1e7de7c2afc4420920e295ceedf6a6993fcc9000000000000000115572fba2e18c535af2fb6540faae02d31d4ee6edfbaeef67d97b11508453135000000000000000120b585278540962894b3a2d60aadaecfdfd1f6a80091d37599cb5a3b52e09e1f000000000000000121f4ebbab14ddcdac83073a04ca636acdf06ac6723e7e1a7097418eb6b78ee7800000000000000013f7f74ac55e507fcd5c9d0991a27fde17ff9f5d95768749a862d620090d1f41f000000000000000110602247de0a5ef759657ea234feacf79249bf8968e2e2f463077c5e8c1d011200000000000000011e42ef9a29f2e4a42ce1d225792e90e9fd96cfff54bf5b8ed8b07ee8a4bf9b6d00000000000000010ce6c2cfef40d26a11bdaf402f3e11df95f0b5b602ca203dd9a7427e47f04cfc000000000000000106803d07e9e288f1a86cf77ec16f5e56e1a50b4eea1a76a81ba779b68ec68a3b000000000000000104c572656d2f08acd30c692897059cf8cbb80466695a720b26eec74d460b03900000000000000001306acda7eebb4caaf6e23d135d57040238d828d25593fff5715d4608639d101900000000000000011ddf4c6cce4e5972ed4fd1df167c3c2eeb4a4b66721b45b54657828de0864e790000000000000001386ac00ea46b92bdfc03ad3a655646ef5cd4c5c6878a2a432654d289ed2db88d0000000000000001109c41d7e73802e5686aa83119d94f6c8e492ba7ea51181a1bedcc70f6b0620f000000000000000107328677a1af3220596d04fadc3ce073efa536b41dd06fec1ebeb090e06b49fa000000000000000111f54667e36dd1facdedd373061dc9a580275ddc673d02bab81802ee52b95b97000000000000000117a2b70450b17c480227d449cf64efd42b0bd681cce8f9e51a54f5803fbc41fd0000000000000001243d1bce901d4ef37eb75db20e9bb111a8629d179d5ede5af3586a269af9110600000000000000012d20d5d36d6dc58067f3e6fc5e33c311cd6408ef4d1069abacf4767cf802d7900000000000000001368452055a9e04886ce27ef850e087ffd6b58b7b13cfc325122514e7cb3c8f260000000000000001381ae51c4b3b01861420e8a81cf2595638224e1d8f860456795428d5506becd100000000000000013aba757b5f70774f38a886d8e3aedc07e6d1ec07146bd2b019b404b03cc1e60c0000000000000001089e53581d854be5b6b6aa3997e6c20c6786d5d6aa07bfd71637d46c23a369680000000000000001285a8e90d96ba03c91c7a438fbfc52e1036fd453759c25563a056feca777de1b00000000000000010cba683c25d2ce4d20faf7d29d12e97d2749d8d797f02411f8c67146b9c0991e000000000000000139db6abe8f51be5768400e35c5dd8406fd3f839f67a5d2e127d475033b0f0943000000000000000124f586eb761b16f3d03b9c42c7543297a00267c30d51e717846eefcc90467b2500000000000000013310d3cb80fbe5e6e60a53c367ae6207efef125eba4fe55b65ae8448879fc5c20000000000000001048eea743118811c3a2f4cb779efbf1b456ef0a9d3cc9f3477a9ae77dc16ca320000000000000001386629950e89f0efbef374c405658883c906ed23f2edcd1ec1c52c3964fc62f900000000000000012b5aa9012fca6b81b081423f940c2f8f7cca383b7bd56e509728dc1706f03f80000000000000000126825b08b536f5128928a2f87fe3eb3ae1ec43f91985a0cc24d0fbeb83edf49b000000000000000139ef44dfcd603ee1f06aae3813de592e2e95564fcde5d3a62665a92f7e6a024500000000000000010f570f895607e81d68215d451ed96beb858bdee66978cc92c7dca83c9a95763000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000012f6b36cb5852e508706b47917797fa10ce2bff6c69db8a3a35b74559d259b56b00000000000000012405905e6c49b0b460e93faa0a307f572c20334297cf9f7ace555309a8f58460000000000000000e00000000000000201b495fff7511a029d82d5886f6a5963f504443d24c452bcdcbe6c20fa4d20e4400000000000000208165da858234c01c5937752f1012a13fa8ce956563e71b793899b1fa62d754fe0000000000000020d97cf990477b0fccf51f96a8156a3eed057056c525f926a94df62ea42ccd6b8d00000000000000203c52c96ab338cd46ffbc8cf65c39a2fc5a575de74cc53c27ca9ffdf7d6c4c5da0000000000000020083733927491b21d1708811da6d1bc9cdb9a9bdfe4fead641f534a5eccd09aa80000000000000020b996ee7f74dd8d97dbf4ea4c5713f66d18b15e650072f9e7293b0acb4e09c69f000000000000002096d0eb4ed5f8a567e63d2519a534d7be32eae875587c5d338daf58c14002de090000000000000020454300a98d94e204ba3fa90f19bcb9600eac7546a2f6a3650dba3c08c5455d160000000000000020fb491f74187ccc3fa4ad9d6e472bc2e6547484ef14fb1cfefe8306bfd694ba3700000000000000208674c8a5f5554a1bb613c82f2d9577ce2676c70df07428a442eab5ba48ce4c5e00000000000000202ca2873d58dee8a2cedccb2d85b80e3109dab9fcd70357d3d77d7537e5ab5a6e0000000000000020dad4bded9062650497187e2aa03d57886d92cd5870a648a7e41319ffb78778c000000000000000207adb29c0f4ddd9715fc19632800ef203c99c7ae25624a795b96aa7ab50c6d7680000000000000020fa5224e1ad69ff9bad1902a84c9ae051012d75b3803a20b17ac0c8fca9e8d565000000000000000225c362848b2c097cc0be6daca97a1405e74e4cdae32203e656999e73448763d609b58a43ff85d201985d072a09b43c32f3d86080b5e169aa6b38b8078fee238700000000000000010000000000000004000000000000087f00000000000000204026793606dff20bf4f7e0ed0ce8bcbc9cfddc806ae51de108c69d59e4983fad000000000000000e000000000000000100000000000000000000000000000020cdf3e0c51e44ce63b1e58d88791483de8c1e13f3e7c2bb8ff8842d6cd7328f6700000000000000010000000000000000000000000000002041e0528794a10694c52bd80a92f94a0ec36f7ce43b32da1677a1acc719064baa000000000000000100000000000000000000000000000020ce741cdbcd5b6320245536b1639c833a7f084cc07924daf2f3ef919dc6d2031f000000000000000100000000000000000000000000000020644ec7197e4de3e23b478f3a00b5aec66849b246185de5cc4877a0d0b4ad596400000000000000010000000000000000000000000000002024bdf42d3132c873ec4c1e68154129147793333d66887d6b400afdb3a147bbc4000000000000000100000000000000000000000000000020e5bb8d9b9d417346766eff223956e2baf7b4b369562b19dcb4c957448ed51e9b000000000000000100000000000000000000000000000020c514df7cae5aeacb5ff80804d061ec51aadb2c1488318fdf417f0222063aef3300000000000000010000000000000001000000000000002036141eccbf363ed86b5fe486df48258be91c849c8c9b91c2703ea007ab5e060a0000000000000001000000000000000100000000000000207b28f9e59ee46551da2e7e585b0f4ac2997cc22130b7a07d3a34875cac3e7502000000000000000100000000000000010000000000000020645e3a66eb9e498987a83cfd5504bb8e13b2122c3840f990fc5ca95e6d7ebcd9000000000000000100000000000000010000000000000020591f8a64f612fb9e5a327db8a2c80a5f07f01804ce66fe795779be2077be4eca000000000000000100000000000000000000000000000020dd1be860fd13274bace53ae563afec83c4783d9298f0da078c2809589c614e350000000000000001000000000000000100000000000000206b0ca228cec92ba675fc36944dffd055938d7065f721437a4196515f95b597bc0000000000000001000000000000000100000000000000201a30fb06ac01807573876b4c9cc0d46e94e5d54ab139a9c82f040842507aaed10000000000000010000000000000000200000000000000200e65b27ed9292804b98710b0d3dda18683a783cfae6503ab12b8f2c992a0b1630000000000000000000000000000000000000000000000000000000000000000170a090faf2f807189b1badac7fa8c1a1b16e8fb6e68b57894f164a6d24d244a1dc4964fc611e14be71d819f97cebb393645369431996f7c6a5071b541f294743bec8182a17e2aa5a99876bb5a7900e993619839da8bda65ce91242c44e96a25000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000087f0000000000000020a247181950362fb8ac7c5e483dba73b56f443a3cf107ed416dd17798ae4dd808000000000000000e000000000000000100000000000000000000000000000020661d7685e118514d937ad481b82f2cc355de6555fb5fecd9e179b50b8775ce4900000000000000010000000000000000000000000000002091a4872ec84c85c9929325dd5cb4e766546f10755e13933334adc1e6e82c7cfe0000000000000001000000000000000000000000000000207d8e601023b97691f3b0ee3e809714226d498e5b7205844aa20ac090ff3446470000000000000001000000000000000000000000000000209dc84c468ae6cdd63027a4f686f5da84bec2536f3d047504ba1e00539b0f77270000000000000001000000000000000000000000000000202d0d9fecc7c63cb2b1f47a3a5a544925324434b65e314766e51c7ad4ad6becaa0000000000000001000000000000000000000000000000200fbfaf025c60ee1afedf02d9066a142185b078058a215a32438e9fd640918d610000000000000001000000000000000000000000000000206625ef0e3d2fdc6e2fc4efc379c1eca3f7d5a96c04f86b5f590879bb8e29ec050000000000000001000000000000000100000000000000209a8a7ad6d3dcbc64218361152bb84263849f1a9fe8920b87ecac45d3087e749700000000000000010000000000000001000000000000002018d4b11060d9a084a653c7a7ccd980b2a8cca83151e9821327c7da7fcb8daded00000000000000010000000000000001000000000000002082357414a8b6e891fde581a51dc118a2b94a4588ecd905b86cd89351d3dd7909000000000000000100000000000000010000000000000020669c27b23ec6172d68db8b1a7afc5865b5e545a64e1c88a29cf8fc599c7d3d9e0000000000000001000000000000000000000000000000202a7b8c136e096856f17f333b5a606e7a2ef2101f1451fd11ee2a9b476b74a2cc00000000000000010000000000000001000000000000002068653bbf7282d258028448984ceff218d45966652d42987f7e9f949636ad0a64000000000000000100000000000000010000000000000020fed3ae1a0555dd8c2353fe5e347db6e42245b78297e372d4bce027375897912f0000000000000001000000000000000200000000000000022c38bdc509f9cce207cf7e87211c304f28c9eb0e9899e4b3fa89fb533d857e480a78bff5ddc58c7446b9962e7a7e8823df751bd0589c6ba553cecfaba09c86c4000000000000087f0000000000000020de8e5a022d9d3a4bd552c4b0c22cfe25f0987d1ddeb961359461f1c0e10af624000000000000000e0000000000000001000000000000000000000000000000205d97d2785807ee04768b8918dd2d441f378abf545216d46d6e5f1452f12b826f000000000000000100000000000000000000000000000020a45f2d8e1d95d158681d5799394f28798b2522928b9e3a7bb62fafa292173e99000000000000000100000000000000000000000000000020ac5097c756bf9226f1dd2c3e869cb637523b86fbbad56aabe6920b53314fda1b00000000000000010000000000000000000000000000002015844b43f69d672863962d01c80f5c31b24e8fa716dafce9aef7974ce330f7c30000000000000001000000000000000000000000000000204adfcce7a5de0c94d6447ceb5172e89d3f727e5b15e2f0670b783f06b9c23f1f00000000000000010000000000000000000000000000002075920bb67bb2a0501dd255380d4ce603d2fead835b99055e5e0af6fe4760ec23000000000000000100000000000000000000000000000020e608f8bda8b66c9ecacc1c245d6d1c1441ac963d2aacace72de01dc3d3bc0efb0000000000000001000000000000000100000000000000207b2b8c8cf0afafc9a5f5dba5017042f7908ced40b90cf4d7161aeb53003712af0000000000000001000000000000000100000000000000208f199948d814734df46d045872dec5eb0c8b93d7145b9b82a77cecf34ee2a6a2000000000000000100000000000000010000000000000020dc3c1737cad2c52bd657476aa81041e03cc1f70e5e9676f1c9ea5bfabc176df100000000000000010000000000000001000000000000002036bf178570702f9ef55044c2ed5106f127b31381be358a927240442e92f2f30d0000000000000001000000000000000000000000000000201c839a0c740dfa455702ab2ee239295201d5413e58f159ea46dc6121307c8954000000000000000100000000000000010000000000000020d27b342fb80605aabf39740f2e884ab06685b499d3dda6bb01717cb364688eda0000000000000001000000000000000100000000000000207c92a223e3bb5a0d81441dd55f0aec708bf29e8ba676cf56cedbb83c8bb10ef700000000000000120000000000000002000000000000002400499ecb3b1bccb7f19bdb69c7835a130163751c2bd17fac24e0ea1cb664c96515b83a1c51ed4f1117bfaca306c3d6bfbdcce98d23e963547fe558deac147fc5202ddfbc2d7f37000a5d779d307d5b3fca6cdc097db7bdb670283e661723c44529dd0b2e0161039dae5453076030e9fa9b0b1bf763f8056f90044bf8f7af46b105cff12dc1413108e83a9450bcfc4d9a05e5803e38949fa8d1e6e425dd90f0d43aca516861f9b89968f074fca7b447a0c149b282cb8af0ac8efe616387086ec101bc6015579cee887cf571f9b453c27baf6509a2c3f8f654b2df95747246912108c4b4d9385bd09c1deca2c27ddaeaff5d0aeec690c311533f46f5b3ced65e9a38c64a49c3ed54ff9f10e1bf270f564c8194ea348b8c66d5cff84720ed1615383fd065688b70ccd4316a4b66ee975b100c6f950d6ef80ee0cbc947e08c9c81c73a7a548ed0520f9a4afb6ec1aab0574300c9720585b26657a92f86470cdfe1fe053544969b3be5c4b89629d1998f43902648cf56e544133d05d130d7e46660a012c95939cf0a6011ddf6b9d3901cd4c9a1403a6b2f7cdf7e0f8637331d067c4c08329077bce61b543691d99454e78843fa6254e4b70c29508add8b4dde6dd65b289f8f87a99a2d5b7926e1e22c8890d3b2ea49ed3768a53ead6890bf5d1942c910ca6233b3a072d6ea8c0a649ae187f3357168e38f9181c40f9b9efeb808e92f10bf4a65a7ce3cd1001dfde540063fb7d2eb5c1f5ca0cc63d5bf56a8f0959f06040a235aa4e6b657f7bd5d527f2a5e39f1878b0d1b4824d7ff4d622d2dbfc48f2111dfadcfd2b57005920639ddd7235ff731b9a9e8ec4a22668ff07256e229330924bc216193355058c9679e6087047a29786eb52cba7dc69854dec167eb1e560767f94b2ad714de7b932b9011982b8c2b1dac1fc6e7e887010bfcde7e48546a3a50b90d5de36daea17512af3131783fbc0481e7b092e27a2466737699bfe076107d0b01297100762d3081ebc44c34bb46b026ede1eba747fa5f5e26d404a9760978a074924d281c8af9c69ec7267d9d64e404532ff8b2f58450bdf9c3cb729607358af9f874b7c5c06fb5a3bf89d0761a7fe9078543b903600c0555252ee562052fab4fee55b291cd0ceab4dc65b1237520d8a944f1a5884200946a5e3f2f312e75288a200179b6fba6bbd19c4c08ef4858a9fdef31a377cd6a08af870b3d7c33043c2086dfb8790191a9f9f5564bd7812fce6949919ad8cb7925c5886d62201341a87f3df0630e7e850b02e2d02ef4f7ff35611e44724f2c12ea3a3245c9ac350177c1d84b7b65c14e2779aee90c54107c869c3be789ed6f03a7819af473db2d3804801ed7917ab47311b33ca06e43831d66d522e3c11d22a20db5cc6e4f07065a9c8c60671db2b757313a4dd6ce9b4fd8afce750014e6c6f2b5b59271ff113a7d4fbb42234bc4a47748f5b5243e6e43f5929ce52efaa32862080d3fcd458529e841de6c57713ba2462fe18ae41f790b6cabcced9c3bea998a0f8bd25ba46b3a27635b6f0363e79be5185fb3f289e241fc58cc7d08205816bc92ed8a781985216ca607b7831e585b549d4f1cded5e4504f76279513a016da54c78bcf2375c3000000000000087f00000000000000200a04b55e5bd650bae7eecd02622d29219f30ded9842f997c44c8c7a627b13f80000000000000000e0000000000000001000000000000000000000000000000203f55861fff5598b19b6b12b6a386c5f109f7edec76556a2d47db24ce23e6d64f0000000000000001000000000000000000000000000000200e2550562b47cf5eada90a87ae897cb96f1c4f35e0aad985c4e955f5837d455700000000000000010000000000000000000000000000002079f413de277bb3e77def992c471109633d9741cd07ec35241179ed19b06d3384000000000000000100000000000000000000000000000020f694380a6bf2bf9834887afa531888b6ca8c45d60cb45cabe9d850f1759791d6000000000000000100000000000000000000000000000020f49f9a5916333905fd9b9aaf7604e70ab2c49052a3b8dd98afdace56f477a18b0000000000000001000000000000000000000000000000203549772ed47648a83f92d7ba8551c07c4f97c89865c5e56e0959bc0b63d5864a000000000000000100000000000000000000000000000020ff7181cbeaeb1436e50c62e9c69efb242aa2aec08edc667b825710863c1218ce0000000000000001000000000000000100000000000000203d7e4e011d0a42a8a7a9cc02d5b73b42ca5cd75c77325ec478cba1d24b4fb202000000000000000100000000000000010000000000000020277c8a3e6a2dbd20897c32a53539ff7c450da88b6d0792b382bdf934bdcc6fb90000000000000001000000000000000100000000000000206995498f66f5ea36f33b0a077e48791d1fdda3011ac254bfca5a684080c2dcc500000000000000010000000000000001000000000000002091abf4763ada6067110a33c63255be01d4f86a9fabe7859eba36e064a12f3cf60000000000000001000000000000000000000000000000200c7e05446c23c08c08e204846e83520401791fe0820e1c3872dec956172ab09c000000000000000100000000000000010000000000000020c46afc88b504eebe29a8cb43f7ba56f0dba15d289e2bc2b1572f5aa1f979098600000000000000010000000000000001000000000000002082aa83086876e1611fb0d9f92f9461bc15cc796bf3f9ffea526a46112c2bfa7a0000000000000043000000000000000200000000000000861903791708985ac37f0f8bc1f3394969deccd6c70d5f72df652b9b10233bbe4326fc86e8f767a53c80f0743e0cc6b6964379c234fc3535fe271b5010dcc441be3d115d732af9c5d17b4dbac9c01e6f1137b998e73948957f6d931c2fb02ab74e02eea28cd5063a2e84b245363fe190eeea8d0014d04c135e1eb3cef14fd548b33156d33fd6e0dd176884a5f0c0982b558d859893f8184806f2c3e06a70d594820ea92cc0291f22e8977b5a0f3f67d4aa94c10068117c60d699830ab68f2a6b7f36b2203f326451750a973db3c2f8d8ab5cc82fefbbbb6d8a18fea0b1342be687094ddfc0cd9bae8af568c24c3d072754c57e690c4dd93b5373484a6fcbd4197a117aa13bfbf5974934f43482cedc3b5846ce8bbe8456803c4bdd76f204db809f2e855ec4040a68b6cb0bcb7d3123c4a7db780d3d853e28a14069742efb247f621765262bebcbf46e08c5068e0a4d28b93fc221bc8c1bd84fef0c67991849831a289ad9d414340b91f73af971f5b2d746e284773f7d78d08d9d3a8387e7b67ce734f9bedb9afbc6262bd920c63381cb9e1c840fb2b2f690b21ef71adc796f8f810b064124650439d9d426df39cc7e346205c28949569e182b6d4fd0448690708008e0ba4a06eadebedb3da3df0188fa160579ea8d587e300469b7d9ca5f2dcd81371f45b5f915214124c25c20fe7705ea1cccae6eb11678d9228f1156a0d232802c63a372229659ba4834335b07ace26e1b6194c2ba76f016109740f3dbe50385139c5c8ddd69a645b7cbcca4f8531d9206e504394f1db8c77bafaa2d241afc7c1df2313aacefc0a3690500c726606c2622141cd98794b5d5ae1f83604b791196220dcec553103f5c96faff38d99f93da00327c2281fff307de2767c0b486ee6b15baf62560aec3310d1903e3bfe21cbe65d75e4792be3b714e0fba9f795d57ec2a4509da9f513ccef2e6fc1c401de341bc6f3ab476d66d6c3e37308186a2a8152ca6cebae369cff5417d1372bf6a8fb7daee3e69d4228058fa07b9fc5ed2b79b135931451c96300abe82ec8d4095704847585a9235722884923f3124a12d48661f4209a671110fca4771613dbd14ce96dfd36d1d07ee87243d51e08ada1d960420bdf6598eeef035b88e9ec242eb316942732bdf01a621b94ef50a9625e269fd1c4a304035554ef36536e634b16808f21a93ef99147f51fa1a0b8c744293ee1223b5cfbfcaaab10c9ac919cb4e97f70e07b2a962f51556e3723b5eacbd6c11ef0d72f1410aaa8ac0fa127f0777082cba40567c055353482769abe8034ce3a658328d0ebef555753f05ed80f888f7d345e1f01cf6b64160b6229b031db31c59a9033eb6453554b5c4e25c7b255328dfa31f69d31e970bbfe784149cef80723fb73cc149bacaab4a3b1da384daacd7205d02dcc5dd7288e8f608324e317f8dc04a10398f5a0aa78cd86bce67ba9fcc5e2f9d111f98f33abf85946710ad823b3e932fc670a5f5587327943198456033a1d0853579631659e957f7dfda737dc4c16e1ddb27f70cb6566deb8485c107ab8c68f5f6dad4c9bf0eb66c7685e883bce8d62224d808f349a992147b7a3ef85473972c4fbe273fd59a271fd065387c43172b0e75cbbc24acfa62e6450d034521a78b3cd0cf4962f8731cea1a01bcd57e71a419ceee507bca2cf26b3541c445b588b6d0b5a8e667842a920a9bfb1b0cd682e91b8987e642b6282eba95b798642325246087e49b011ceb670d40fe19373cd9982d1f601de42b59d7eacd6e182e78757402edd41f80893e3c0bdece0c3a8cb63736b2203f326451750a973db3c2f8d8ab5cc82fefbbbb6d8a18fea0b1342be687094ddfc0cd9bae8af568c24c3d072754c57e690c4dd93b5373484a6fcbd4197a117aa13bfbf5974934f43482cedc3b5846ce8bbe8456803c4bdd76f204db809f2e855ec4040a68b6cb0bcb7d3123c4a7db780d3d853e28a14069742efb247f621765262bebcbf46e08c5068e0a4d28b93fc221bc8c1bd84fef0c67991849831a289ad9d414340b91f73af971f5b2d746e284773f7d78d08d9d3a8387e7b67ce734f9bedb9afbc6262bd920c63381cb9e1c840fb2b2f690b21ef71adc796f8f810b064124650439d9d426df39cc7e346205c28949569e182b6d4fd0448690708008e0ba4a06eadebedb3da3df0188fa160579ea8d587e300469b7d9ca5f2dcd81371f45b5f915214124c25c20fe7705ea1cccae6eb11678d9228f1156a0d232802c63a372229659ba4834335b07ace26e1b6194c2ba76f016109740f3dbe50385139c5c8ddd69a645b7cbcca4f8531d9206e504394f1db8c77bafaa2d241afc7c1df2313aacefc0a3690500c726606c2622141cd98794b5d5ae1f83604b791196220dcec553103f5c96faff38d99f93da00327c2281fff307de2767c0b486ee6b15baf62560aec3310d1903e3bfe21cbe65d75e4792be3b714e0fba9f795d57ec2a4509da9f513ccef2e6fc1c401de341bc6f3ab476d66d6c3e37308186a2a8152ca6cebae369cff5417d1372bf6a8fb7daee3e69d4228058fa07b9fc5ed2b79b135931451c96300abe82ec8d4095704847585a9235722884923f3124a12d48661f4209a671110fca4771613dbd14ce96dfd36d1d07ee87243d51e08ada1d960420bdf6598eeef035b88e9ec242eb316942732bdf01a621b94ef50a9625e269fd1c4a304035554ef36536e634b16808f21a93ef99147f51fa1a0b8c744293ee1223b5cfbfcaaab10c9ac919cb4e97f70e07b2a962f51556e3723b5eacbd6c11ef0d72f1410aaa8ac0fa127f0777082cba40567c055353482769abe8034ce3a658328d0ebef555753f05ed80f888f7d345e1f01cf6b64160b6229b031db31c59a9033eb6453554b5c4e25c7b255328dfa31f69d31e970bbfe784149cef80723fb73cc149bacaab4a3b1da384daacd7205d02dcc5dd7288e8f608324e317f8dc04a10398f5a0aa78cd86bce67ba9fcc5e2f9d111f98f33abf85946710ad823b3e932fc670a5f5587327943198456033a1d0853579631659e957f7dfda737dc4c16e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e000000000000087f00000000000000201b495fff7511a029d82d5886f6a5963f504443d24c452bcdcbe6c20fa4d20e44000000000000000e000000000000000100000000000000000000000000000020ee611ae79f491c92c73f0a50c97b7f831e740c450c1de6810a5128a89974730b00000000000000010000000000000000000000000000002047fca1b42a2c8e82cabf23a11d9c782ffc18f3c5c10064868e931f01fa9568aa00000000000000010000000000000000000000000000002019ebac599da7b831a985ee6b2f9a6082d92cbec96d971354b683b5f174eb21fe000000000000000100000000000000000000000000000020d2de7d820614446ff21d66c082cb30eb71b2c052d030f0e98bb284be32c11461000000000000000100000000000000000000000000000020e0fa418490b2a295ed3983b435ef3aecfa79ced19abeeb28046981c6b3e260920000000000000001000000000000000000000000000000200600d360b662f0c50e8ecbb1bee46a8d13edf1fb493aaac36d2f5677326cf01c0000000000000001000000000000000000000000000000207916e025ec79e730b862b80f9f1f33b0474eaeef2adeb6d75b72e22a9808ecfd000000000000000100000000000000010000000000000020e2e30186bf81ea3abbcf31c8252e85ee071c5857e8f22c2bc71370451f6e3e8800000000000000010000000000000001000000000000002062f5020ec3120ee42944b40a30627b568b5b843ec995a9c366cd4a83393ba59d000000000000000100000000000000010000000000000020159baa81b9baf8310b9008eb10ba737c00b44e278964adc3edadacdcc8d63f9d000000000000000100000000000000010000000000000020f1100b3d5535e9b405d4e60402735f0e17d8646c3b89e441501bf0bbda732f580000000000000001000000000000000000000000000000208cc9031486eb41c835375ed7ce2b862fb2e9c62926e35173aed09d11b6aa2f200000000000000001000000000000000100000000000000204dd5724ab48a34962c8bdc31f718a725b3b422de850c02332b098bc2fa733b62000000000000000100000000000000010000000000000020b09def1c4bb6d2a4f976105b89397a3711b3516bc7fccf96f3de4b7435884a6500000000000000023585f89a746ec509462069052ac215ff51d1352a9be99e544b0cf3c510a776392181c786fa99bc1e9732076506e6d95a74e2d37e496b924180cd5836cf61ba75000000000000087f00000000000000208165da858234c01c5937752f1012a13fa8ce956563e71b793899b1fa62d754fe000000000000000d00000000000000010000000000000000000000000000002077b35376313c41c169a17a5601155273ce2dea7c2fa5420a600df4754b9d128e000000000000000100000000000000000000000000000020285d2523fb44ddee2671a8d425579416bf1b583b4ec48beea32bc73d47d89bd4000000000000000100000000000000000000000000000020e2f302abccf17cd8d34a898d271a99063eab587947ee6a1e142de7670033e8cd0000000000000001000000000000000000000000000000200e1b4f0ebe8033c8a6e38ae699183381de9d2b171eb682bfb98bc2d6637a233d0000000000000001000000000000000000000000000000208da92334a4d5d731a9057d4f0e86951d1fa1d0258ed1a4f4c1cff5e5494b662b00000000000000010000000000000000000000000000002098db65d423619ef3045c7955b5e4d7526978e82485d60c2edc08d907867790160000000000000001000000000000000000000000000000204627fab710dfb0087c0e2c5b98f7a818d8a30e6803341029aeae645fb707552b00000000000000010000000000000001000000000000002087f5a7585ab8437145bd795de499fe0df9cfb1ace4f96ffe7b4cff051c5b8b5f000000000000000100000000000000010000000000000020c333f48bed52eba7cb4751865cb6a7fd9150cdbed7371b0d27844dd94d2f3dc40000000000000001000000000000000100000000000000208aa5c899c925e1ef017fe525935261c3a6e69f798532e2a48615a5bdc4d5a5a4000000000000000100000000000000010000000000000020f8bd46f76be8fddee7a276a5080633d028d5b0ca67ee2c5fcd8e5ee54c92f977000000000000000100000000000000000000000000000020567c03c7ca4d8443d1b3676fc8aec9aa1eb39bfdfa1473d2c734e756c2e81461000000000000000100000000000000010000000000000020c4d954098d969c8e5e7519d5179c6e1e2d2983f8347c20f03c9d140c137750c40000000000000002042b0607df30a0ef7de03a12d34b91f452976762f45134d68233ba75ab9209152c2353a5e09866d5d34498156cf5a672e822ee5c10fbb754cbd9a150aa11ede1000000000000087f0000000000000020d97cf990477b0fccf51f96a8156a3eed057056c525f926a94df62ea42ccd6b8d000000000000000c00000000000000010000000000000000000000000000002095655241cb3f128be089047dc7fd0fdff20d8ab81d55c1971cf97f070349539c000000000000000100000000000000000000000000000020b7b59a028e08743b4fc3e9faf0037dd7b4fe7b0dd085ce23574835c0af328e9a0000000000000001000000000000000000000000000000208f18f9a3ca32735902fafeede9ac4421f009d34dd38bd3093a2b4cf3fd96a0ef0000000000000001000000000000000000000000000000202fbb5c5f86e644304e9007514924403914ba57d0bcea4b11bb6f96f5e7e45748000000000000000100000000000000000000000000000020efb97ee65db215c62f5ad219a29afdbb019e1d03a90f37e2bdf386f83c45a2fc000000000000000100000000000000000000000000000020c0788fd29295be3a501fe68f0c1863627c049abfeb0c26102c5fb05e222cd92d000000000000000100000000000000000000000000000020d70e551717db8b0dbc03cfab3d2181a3bf2f7e5ae955cdf31fafd3bb3ba41928000000000000000100000000000000010000000000000020166ecf69de7fe34dd86b3fcc5d99379563331e833d4d1543f8f041bfa64c31a30000000000000001000000000000000100000000000000207adb344c313baea74e07fd17c6277dd4437f0ec6b994b87d500898ec96f2b6db0000000000000001000000000000000100000000000000205a7a3d2ef51ca9578ebc7ecc04edfe4d77b21a9d870c61a8eb55458ed57faf22000000000000000100000000000000010000000000000020cca27f16479450c3a6a4e6f62bc81fda2ae3b3ec0e45b0e50d62dcb503f7fa8e000000000000000100000000000000000000000000000020b1ca611031d8674f77bb891fd529dc7ecda03f17b342bfd67ff1cad339a8373c000000000000000224bffd569d660c78796761f57b6b3d5b558afb8cadcc9ea37837fb7508d4ee0e1be06ea4e06945369b347ff5e5a39a8a8862f381ca30014fa9b2f65b5ff0681e000000000000007f00000000000000203c52c96ab338cd46ffbc8cf65c39a2fc5a575de74cc53c27ca9ffdf7d6c4c5da000000000000000b000000000000000100000000000000000000000000000020b62285023dac79fca56324c6fa56d5768ce06c7635b89c76a49001d6a3697ce200000000000000010000000000000000000000000000002044106fa23025e38455be363e8d46a951477868740c94814b23b7221bec20dc67000000000000000100000000000000000000000000000020f6df41f54ed7ad4858c4cd63484868ca02392345ab53c5d71a7b2e8f4c8755c8000000000000000100000000000000000000000000000020a7d9b0d77c113d348af23c5f33a7aedf7d94025538d303e446620079f61a1af7000000000000000100000000000000000000000000000020bd23185e094c997eba2cf84817146351028b00d742c9449e70e5a4339b06b243000000000000000100000000000000000000000000000020f92997e219e47f36952ab57c5d75249ba60769303d60be836810887d6dc0f612000000000000000100000000000000000000000000000020f8b2023a9a14eace2418c6a6992041220aad0aeda3d6b14b6f4bb3336189144d00000000000000010000000000000001000000000000002083e179bfe87b7daafc8fc29fd641c822fecee17e278cee703484d3efcd710700000000000000000100000000000000010000000000000020aa3a2e55e11f0728434410982f4a788837e2c66e66f2ce7e601644ceee255e94000000000000000100000000000000010000000000000020e5a6a78d36c29ef97d2e99be057715bbb96953f5f54e6ffc83ecdc37c6ec2ab800000000000000010000000000000001000000000000002086d3b469b41e237a73b943c12bb906e876fb137f828e1d6ccdbafd09088f3a100000000000000002255f5e6d6cf71edeac8e6d3384ee4820ff98172e259fd5ac1206f81a31e9cedf1d64157d0072af15d1fd655105c16ff45f3650cf85eebf103a11870c60622e9d000000000000007f0000000000000020083733927491b21d1708811da6d1bc9cdb9a9bdfe4fead641f534a5eccd09aa8000000000000000a0000000000000001000000000000000000000000000000205446cf75ba63902ffe8becbd51a519e8a1ec1f8f9e8cfa213c5ae8902ded1ed20000000000000001000000000000000000000000000000202aafc62115394bf0f90bd55cdcec1d9b82c4829fb0e72a00dfb9625428e706770000000000000001000000000000000000000000000000201b4df0446136344397042b0759b34f9d4ebb3ef2b43aa28708579ce0ea87e67f0000000000000001000000000000000000000000000000209a3dc64781327548ee44de7f933c6d0b9dea2bf9997ac5e529028291f213b1850000000000000001000000000000000000000000000000204570f71f6884647bf86b7c9fc64c7152b5123513f40d5b2a5cdb02f647e02371000000000000000100000000000000000000000000000020b1dcf3b598fa168c72a2b31507c4363eae3f9316755650cc9be5887404e5bb6e000000000000000100000000000000000000000000000020538cb683bffba47480a1a6c6e2be521e517625708283f0f149a5c74a831ae5b10000000000000001000000000000000100000000000000201343d99459bcc3517d4a371a1aba63e6a90236189b03c4f19a20b48b31322493000000000000000100000000000000010000000000000020c08e602375f677cf183828409ec554d421214d602a69f792044190acd9965a220000000000000001000000000000000100000000000000201a7a57a8ed6a6fde5bf95e7e7ad78b279e6124980eb97d6f1c5d6c03e6d8410800000000000000023a828103d5c1e9b74aeb3b8a7ff14d144fac8ae3590e57db322246d7e89641800e96b092a22b4108d4de4637539ce20e1464040083ee9d04e8c2611e58810b34000000000000007f0000000000000020b996ee7f74dd8d97dbf4ea4c5713f66d18b15e650072f9e7293b0acb4e09c69f0000000000000009000000000000000100000000000000000000000000000020296a5d77a4682ef09535acb770686b4146e9118ffb8b8bb1255e69da6045a9f500000000000000010000000000000000000000000000002036b3ce763d18088f47f209be88f82387c1cdd292a0f822ada9b25ee0789c5837000000000000000100000000000000000000000000000020227ad78f94744b6be88a43b83a8e208a29de8f22cfc17262d12f257faece66500000000000000001000000000000000000000000000000208fb6813f06c7a07bce6f4d55bb54b28272ef79f2bc8f988a85e5a38f54d5cdb1000000000000000100000000000000000000000000000020a5fbd93630644f80b7aab26c158c16718a57657eceed0b3e001d4676aebfc1df0000000000000001000000000000000000000000000000208b7162e1c86b0b5588d8f22d8d03fa5a48ad46756eed3a56ed92359ea098d502000000000000000100000000000000000000000000000020bdd0c25ed96ffc40cb5bb85c8fea1c45dd484bfdb800e64307c591a01983bac6000000000000000100000000000000010000000000000020cdf1f2d1698df8b9c762d8987ef6b2a7a5532b105fa23da388028f51be8a8bf6000000000000000100000000000000010000000000000020b43aad57fa53265ed7b75a54827ae30eac56903fe98d80a110776d155052565800000000000000022eb5f8519df47f236c3af54a307d78145237c2324555b6a865f4061203fdf422376e9e371043f3e53f74408bc4ca9922e5e0505b9afe3a372336c2cd4c5fbfa3000000000000007f000000000000002096d0eb4ed5f8a567e63d2519a534d7be32eae875587c5d338daf58c14002de09000000000000000800000000000000010000000000000000000000000000002042868ad6934a659c0f9513d4c8214a2b58e3c656605e6a9740cff36b5885483f000000000000000100000000000000000000000000000020e0866bc956878a980b9a1d35ac8b142de4c660db973fdfd2adfeed255b2d992d0000000000000001000000000000000000000000000000200acbe27e2aee473c58d3453f4df253a45d44ef8aedf22620bdf5d9d028fab6e50000000000000001000000000000000000000000000000200798a608cb82a79e96e3cba5092089352ae3a68a6a28131afe5a5311229e31900000000000000001000000000000000000000000000000204e1b46a23118125b119452779bf070abc114089d9a4f16361f2b194c8dfe688a000000000000000100000000000000000000000000000020aeb18bd457a21a8d6c441c6f2457cb7c5f9afdd2ff542f5b7073322f4e1c3089000000000000000100000000000000000000000000000020d208ff83238cd227e4c92b3224541e83e58a0b9d5623a28aa5e7eff5eb3db312000000000000000100000000000000010000000000000020c92ef35ca659aeb1c15701708e712a69c2aa02c227bd05ca3825b1cbca4a2e0100000000000000022e1baf65b4bbd028cbebac5a829edd1a529a3f480c7eacbd168f43caa90cebc21f4274b76dee8bd38a28bf0801535cee66c1f6749ca4fcb56da31df2643c9b27000000000000007f0000000000000020454300a98d94e204ba3fa90f19bcb9600eac7546a2f6a3650dba3c08c5455d160000000000000007000000000000000100000000000000000000000000000020fc3e7db171f9e24d800a601694176ed3a8b90b2c2b469bfb020b8d6a1637b404000000000000000100000000000000000000000000000020d1dd7f968255c6b3a34c9578b50fddbebfb6b01b7417c679b44778296fdb880f0000000000000001000000000000000000000000000000207894b3a735bcd0ea5412d2fd6c4ed759402a617344e3d52f149cbd8e4a32bf41000000000000000100000000000000000000000000000020c1ac60746cc31ec9139b42c1b0a1b51b8661123ed0c3c397f03b56fd229d2e6e000000000000000100000000000000000000000000000020f5c7296d260818eb82d051a26c958baf81b7f8427d5485b2e24dc7aec7bd4cdd00000000000000010000000000000000000000000000002053de1e9bd7d3f5a0083401feace0a06e635c3489469b9431fe3ace5b1e1a229a000000000000000100000000000000000000000000000020a8ce2b6cca57c8eae5838fc018cd7efb0abda63dfd9383f359d4b37efb83dc3100000000000000020dc05d91fe51a6aad0940c6eb4f7791311f011daf7cc49dcf7c88f431583824e09c746abeed155021d91eb1006738372f0800dcc3849f6d964b837607feccd8e000000000000003f0000000000000020fb491f74187ccc3fa4ad9d6e472bc2e6547484ef14fb1cfefe8306bfd694ba37000000000000000600000000000000010000000000000000000000000000002099f6c660d695fb55bb5a484941ac7a328538dee946e3eb93f517c9a76832c27b000000000000000100000000000000000000000000000020a5b7b0c5796f0e4a803a7e9ec2a696b85423a697a5871673dccd9b30b5dffebc000000000000000100000000000000000000000000000020c45dae6903e1044fe2c539644e248714eaf86d9ad8f326dc6e150ac25c15febb000000000000000100000000000000000000000000000020b93b75fcb1515c750bbe31326fe64f76e77aaf3967732727eacd7873783b0720000000000000000100000000000000000000000000000020b5990a077713bb0cd4fa88a75edd04573601a6e246ff4b6f32126079d1169a9600000000000000010000000000000000000000000000002043d7071fc6afc2cc1d55613cd3fbf7e8fc92196f0dfbba3ca28b49542aa5fc58000000000000000210cdd4c80811aee9550b44c45c3a9bd9fddea3bc89a39e2fa3eb199d70ba543829385340ac450f57ec684b664de4f15e05aaeaf33fc682f612583987b66994c7000000000000001f00000000000000208674c8a5f5554a1bb613c82f2d9577ce2676c70df07428a442eab5ba48ce4c5e0000000000000005000000000000000100000000000000000000000000000020fc1e2ae4d56e7e9d520e0eca1e923f54051268741b42de921db3213e25640416000000000000000100000000000000000000000000000020717539dc725e872c3eb6b190c311c7b971a026f8f9d40089a7a9912a3343184e000000000000000100000000000000000000000000000020fb598dd556e8debaff66525b59d65073aaa20fcf2f2641a2519f159bc0be9c28000000000000000100000000000000000000000000000020ee20c8532ddb77381b781b8191b0bb848ed7f93420600e580aa64703f18a30be00000000000000010000000000000000000000000000002022989272005afa03e3cda0a918672dab3bc3c2521e1dd1d679a7fd33482ca19e00000000000000023938159e6a8df2c105a80e8e7c0d165e3cd7bea42f3a7bb93853b118fc35d674231b38e0e0a0caa500715f011e4a4b874c96e35b0651c6b7ad24ea5169e4147c000000000000000f00000000000000202ca2873d58dee8a2cedccb2d85b80e3109dab9fcd70357d3d77d7537e5ab5a6e0000000000000004000000000000000100000000000000000000000000000020942747326c282a0596c003ab4f99b94c4646f5de7798a90b49e6bcb16a8764a80000000000000001000000000000000000000000000000200b49e290a8c8df49b2866be68b5891ca39ad34149f4c082a53163d994369055f000000000000000100000000000000000000000000000020dd4d1f5056333350af0e1a15c75fc50a84459a929b7eb58ecc2859368c55dd780000000000000001000000000000000000000000000000203d8f5ed8e64922fde5a1f9baaa8e8022aca294522cfb247faecdd75f41c5749000000000000000022ff9cfd997aaea4b938eb36034d2d0e90b1c28d5b5fa8f7920cac03a425ef3da0980c68dff359c24066dc3793f7cbcc5b9e1d47abb5fb6c5666ef6161ca3316e00000000000000070000000000000020dad4bded9062650497187e2aa03d57886d92cd5870a648a7e41319ffb78778c00000000000000003000000000000000100000000000000000000000000000020bd4ae1da7d67c88bc21c5ed22e634d7dd8970bcc41d70a1f89cc3207239a2aa00000000000000001000000000000000000000000000000209b7076850b7c9a0392dc7cec079d91129cf7be150e00232e3f668aee3d8673a100000000000000010000000000000000000000000000002087d80c9726bc2fec3bcda4f169e3fc2fbae8b72c9cb0a94a8ea9946b816ad8ae000000000000000229219c8da502fe74299754e8f15e3d13c90eea8f799dd857884dcd09ab6d3a93170dd62a35d9a5a9ce2bc7030201dde57805f5c786c0253dd702104346400ed1000000000000000300000000000000207adb29c0f4ddd9715fc19632800ef203c99c7ae25624a795b96aa7ab50c6d76800000000000000020000000000000001000000000000000000000000000000205de476d314050258a5d6f0f065dfa1f0dd10a6b861e5b946e7eb15f0faf4d29900000000000000010000000000000000000000000000002056ac33ccafbaa84bd8f8b6d1feaa74ddaf99521939c075fe6e50262bbdaedf33000000000000000204835b27757dd83734772568c60f7557e94ce913a087f55d635224792aa9b870285dae34b5904849023d026fab6de5cddcb9768a2417c7b0618f7d9582c8770400000000000000010000000000000020fa5224e1ad69ff9bad1902a84c9ae051012d75b3803a20b17ac0c8fca9e8d56500000000000000010000000000000001000000000000000000000000000000201f80b8f9a499ad63320bbde9ca816f2884ac913891c1f4273df2c553f6bfb1d500000000000000021c0dd8408ba6377b286166829fc5d7d2f375ec5a2d409a3beb60e66bb499404f2f78ecc88ab1db7e591b74d6b32e5038db26ad5b99036d90c1d2567ad475875d \ No newline at end of file diff --git a/contracts/zkllvm/mina_scalar/public_input.json b/contracts/zkllvm/mina_scalar/public_input.json new file mode 100644 index 0000000..d78bb3f --- /dev/null +++ b/contracts/zkllvm/mina_scalar/public_input.json @@ -0,0 +1,62 @@ +[ +0, +7004881494178137404986928718358577985735231348635131871795804478282553164916, +15306129011576432006004307405802754408638831252208347411729546090521432895139, +24146173981705213713354219671688413220561134752114522572554707641838759372061, +16355508692977437261818107819433198098819127646860843642096684511934511742791, +173165261851454550272905310057202656353051138784408042714275473976561352147, +20229945581545615954852795995525430600747768770339113477689192106161490225013, +5124774744125250012975365548814441436587910468174638627432945535221919194534, +23588113098585087292249991770859860769546806038013263702007391911986703092047, +27404361125464102629678230110584740486738270435126883124131182658230987839891, +18597891278179767087251790513633706714074224331128058923708536586738855856663, +22525179990819146690218185266598818589491512356080128579676417550512301429265, +7752597369250960866921389891150152850137854324810693579536020113899516329469, +27474643847034254722136402979533209770266575831118400512539888947283316223518, +13286482150156660832971410913230324397178471036794935710827636734070704866494, +28586495964945402880062055610115260573018913036833494870914552624139235038967, +61312381509725826371992770942237298435037938273150598699971361905255314283, +13765014526617769269710101258361733562313961347882519806141679952863020777721, +10328215047775864478288748819176359961724786371273034913744088017179592342945, +22360011504817788678493268404213658087460329364804372421264063838223501948809, +2609160789468633680722324950013147635972481953696262296560904600656323637513, +5233768246222356395927056066996966414059877614469302959581759689624051967428, +14105588775729889211121701759428219611326473845934472490924648737530502350284, +17686583931262620270023681493714735537349682746873693389819638979504035612413, +8156139890804891381435654282443709986296310617865036299647012068157282540493, +700962003885250301502166728606422578403091868990878206366189079943070201441, +21265659765319021473203690583656751300291214184159783047025373648840148015924, +26607267718671761967188379255332320298195794909706423811363358315503003960830, +16016619545197913583685802818163038863126841912974030108842320562770757580843, +6391600730149253823080815156141200514452605681222312546014181526633736582704, +7206570355037916358027443973352851918102411267687562064462011321003605104566, +20724888735345585071257648359656155348183771193996041179307873216884101031805, +20374531968293563132394754757235404494404670901131522931020596573969194498283, +8065005442468129506236932753931341906552277762413495999845874981821580135728, +27002461316048685330290737234903811873079491001405152028648885924803059541810, +21760105632523737428804286914170608984132393207712468127119575271761931090650, +25750607316554089875783870207524764809869541411140419996337688714848165609390, +20866512520027153546691541058821101833704929314749703536459013526268748258621, +6516559993257104239683804797151038565144546174790514280342529974126459797128, +17068322853017969170014518101518105282866726398790558865807387355893904553904, +25153724488991043109249219743288710197420049332792361432726705657767516482384, +1578155004400830747378731432386062893138754762495117380679833827482393596273, +2454555855812362251063272617764383463853761650104150049024717650004489750619, +9040204922520569316513400934723519540494440658153126000481917403449964384680, +9325446814571942299882026509029796977204711154438304128375367672158590842288, +11392713026692296666831848037997348317968991014198936458035099331530022507907, +23679341717778492532119568475941993235814361943564038272425848318874660868018, +24509692155912891111972732662963818576807568782251227676276567621935014715941, +7055781500477284539437951888211082552517957556130430551034223670054857989827, +2, +17912041879035169648903013485556333039687074572812383956126744977053724529138, +2, +2, +0, +0, +0, +0, +0, +0, +0, +12259306888414691878575619517212941910309834391108466722480105206604975064088] \ No newline at end of file diff --git a/package.json b/package.json index 73bb73b..7a3564b 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "ethers": "^5.7.2", "hardhat": "^2.14.0", "hardhat-deploy": "^0.11.25", - "hardhat-deploy-ethers": "^0.4.0-next.1", + "hardhat-deploy-ethers": "0.4.0-next.1", "json5": "^2.2.1", "lossless-json": "^2.0.9", "solpp": "^0.11.5", diff --git a/test/algebra-test.js b/test/algebra-test.js index a18414a..3ece742 100644 --- a/test/algebra-test.js +++ b/test/algebra-test.js @@ -28,18 +28,4 @@ describe('Algebra test', function () { let testTranscript = await ethers.getContract('TestTranscript'); await testTranscript.test_transcript({gasLimit: 30_500_000}); }); - - it("Polynomial", async function () { - await deployments.fixture(['testFieldMathFixture']); - let testPolynomial = await ethers.getContract('TestPolynomial'); - await testPolynomial.test_polynomial_evaluation_aDeg15_bDeg20({gasLimit: 30_500_000}); - await testPolynomial.test_polynomial_addition_aDeg15_bDeg20({gasLimit: 30_500_000}); - await testPolynomial.test_polynomial_multiplication_aDeg15_bDeg20({gasLimit: 30_500_000}); - await testPolynomial.test_lagrange_interpolation_by_2_points_neg_x({gasLimit: 30_500_000}); - await testPolynomial.test_lagrange_interpolation_by_2_points1({gasLimit: 30_500_000}); - await testPolynomial.test_lagrange_interpolation_by_2_points2({gasLimit: 30_500_000}); - await testPolynomial.test_lagrange_interpolate_then_evaluate_by_2_points({gasLimit: 30_500_000}); - // This test goes out of gas / times out - //await testPolynomial.test_lagrange_interpolation({gasLimit: 80_500_000}); - }); })