Description:
Smart contract deployed on Ethereum with Factory features.
Blockchain: Ethereum
Source Code: View Code On The Blockchain
Solidity Source Code:
{{
"language": "Solidity",
"sources": {
"starkware/solidity/verifier/cpu/layout4/CpuOods.sol": {
"content": "/*
Copyright 2019-2023 StarkWare Industries Ltd.
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
https://www.starkware.co/open-source-license/
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.
*/
// ---------- The following code was auto-generated. PLEASE DO NOT EDIT. ----------
// SPDX-License-Identifier: Apache-2.0.
pragma solidity ^0.6.12;
import "./MemoryMap.sol";
import "./StarkParameters.sol";
contract CpuOods is MemoryMap, StarkParameters {
// For each query point we want to invert (2 + N_ROWS_IN_MASK) items:
// The query point itself (x).
// The denominator for the constraint polynomial (x-z^constraintDegree)
// [(x-(g^rowNumber)z) for rowNumber in mask].
uint256 constant internal BATCH_INVERSE_CHUNK = (2 + N_ROWS_IN_MASK);
/*
Builds and sums boundary constraints that check that the prover provided the proper evaluations
out of domain evaluations for the trace and composition columns.
The inputs to this function are:
The verifier context.
The boundary constraints for the trace enforce claims of the form f(g^k*z) = c by
requiring the quotient (f(x) - c)/(x-g^k*z) to be a low degree polynomial.
The boundary constraints for the composition enforce claims of the form h(z^d) = c by
requiring the quotient (h(x) - c)/(x-z^d) to be a low degree polynomial.
Where:
f is a trace column.
h is a composition column.
z is the out of domain sampling point.
g is the trace generator
k is the offset in the mask.
d is the degree of the composition polynomial.
c is the evaluation sent by the prover.
*/
fallback() external {
// This funciton assumes that the calldata contains the context as defined in MemoryMap.sol.
// Note that ctx is a variable size array so the first uint256 cell contrains it's length.
uint256[] memory ctx;
assembly {
let ctxSize := mul(add(calldataload(0), 1), 0x20)
ctx := mload(0x40)
mstore(0x40, add(ctx, ctxSize))
calldatacopy(ctx, 0, ctxSize)
}
uint256 n_queries = ctx[MM_N_UNIQUE_QUERIES];
uint256[] memory batchInverseArray = new uint256[](2 * n_queries * BATCH_INVERSE_CHUNK);
oodsPrepareInverses(ctx, batchInverseArray);
uint256 kMontgomeryRInv = PrimeFieldElement0.K_MONTGOMERY_R_INV;
assembly {
let PRIME := 0x800000000000011000000000000000000000000000000000000000000000001
let context := ctx
let friQueue := /*friQueue*/ add(context, 0xdc0)
let friQueueEnd := add(friQueue, mul(n_queries, 0x60))
let traceQueryResponses := /*traceQueryQesponses*/ add(context, 0x4340)
let compositionQueryResponses := /*composition_query_responses*/ add(context, 0x7f40)
// Set denominatorsPtr to point to the batchInverseOut array.
// The content of batchInverseOut is described in oodsPrepareInverses.
let denominatorsPtr := add(batchInverseArray, 0x20)
for {} lt(friQueue, friQueueEnd) {friQueue := add(friQueue, 0x60)} {
// res accumulates numbers modulo PRIME. Since 31*PRIME < 2**256, we may add up to
// 31 numbers without fear of overflow, and use addmod modulo PRIME only every
// 31 iterations, and once more at the very end.
let res := 0
// Trace constraints.
let oods_alpha_pow := 1
let oods_alpha := /*oods_alpha*/ mload(add(context, 0x4320))
// Mask items for column #0.
{
// Read the next element.
let columnValue := mulmod(mload(traceQueryResponses), kMontgomeryRInv, PRIME)
// res += c_0*(f_0(x) - f_0(z)) / (x - z).
res := add(
res,
mulmod(mulmod(/*(x - z)^(-1)*/ mload(denominatorsPtr),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[0]*/ mload(add(context, 0x2c40)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_1*(f_0(x) - f_0(g * z)) / (x - g * z).
res := add(
res,
mulmod(mulmod(/*(x - g * z)^(-1)*/ mload(add(denominatorsPtr, 0x20)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[1]*/ mload(add(context, 0x2c60)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_2*(f_0(x) - f_0(g^2 * z)) / (x - g^2 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^2 * z)^(-1)*/ mload(add(denominatorsPtr, 0x40)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[2]*/ mload(add(context, 0x2c80)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_3*(f_0(x) - f_0(g^3 * z)) / (x - g^3 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^3 * z)^(-1)*/ mload(add(denominatorsPtr, 0x60)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[3]*/ mload(add(context, 0x2ca0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_4*(f_0(x) - f_0(g^4 * z)) / (x - g^4 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^4 * z)^(-1)*/ mload(add(denominatorsPtr, 0x80)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[4]*/ mload(add(context, 0x2cc0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_5*(f_0(x) - f_0(g^5 * z)) / (x - g^5 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^5 * z)^(-1)*/ mload(add(denominatorsPtr, 0xa0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[5]*/ mload(add(context, 0x2ce0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_6*(f_0(x) - f_0(g^6 * z)) / (x - g^6 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^6 * z)^(-1)*/ mload(add(denominatorsPtr, 0xc0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[6]*/ mload(add(context, 0x2d00)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_7*(f_0(x) - f_0(g^7 * z)) / (x - g^7 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^7 * z)^(-1)*/ mload(add(denominatorsPtr, 0xe0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[7]*/ mload(add(context, 0x2d20)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_8*(f_0(x) - f_0(g^8 * z)) / (x - g^8 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^8 * z)^(-1)*/ mload(add(denominatorsPtr, 0x100)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[8]*/ mload(add(context, 0x2d40)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_9*(f_0(x) - f_0(g^9 * z)) / (x - g^9 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^9 * z)^(-1)*/ mload(add(denominatorsPtr, 0x120)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[9]*/ mload(add(context, 0x2d60)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_10*(f_0(x) - f_0(g^10 * z)) / (x - g^10 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^10 * z)^(-1)*/ mload(add(denominatorsPtr, 0x140)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[10]*/ mload(add(context, 0x2d80)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_11*(f_0(x) - f_0(g^11 * z)) / (x - g^11 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^11 * z)^(-1)*/ mload(add(denominatorsPtr, 0x160)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[11]*/ mload(add(context, 0x2da0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_12*(f_0(x) - f_0(g^12 * z)) / (x - g^12 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^12 * z)^(-1)*/ mload(add(denominatorsPtr, 0x180)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[12]*/ mload(add(context, 0x2dc0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_13*(f_0(x) - f_0(g^13 * z)) / (x - g^13 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^13 * z)^(-1)*/ mload(add(denominatorsPtr, 0x1a0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[13]*/ mload(add(context, 0x2de0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_14*(f_0(x) - f_0(g^14 * z)) / (x - g^14 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^14 * z)^(-1)*/ mload(add(denominatorsPtr, 0x1c0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[14]*/ mload(add(context, 0x2e00)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_15*(f_0(x) - f_0(g^15 * z)) / (x - g^15 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^15 * z)^(-1)*/ mload(add(denominatorsPtr, 0x1e0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[15]*/ mload(add(context, 0x2e20)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
}
// Mask items for column #1.
{
// Read the next element.
let columnValue := mulmod(mload(add(traceQueryResponses, 0x20)), kMontgomeryRInv, PRIME)
// res += c_16*(f_1(x) - f_1(z)) / (x - z).
res := add(
res,
mulmod(mulmod(/*(x - z)^(-1)*/ mload(denominatorsPtr),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[16]*/ mload(add(context, 0x2e40)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_17*(f_1(x) - f_1(g * z)) / (x - g * z).
res := add(
res,
mulmod(mulmod(/*(x - g * z)^(-1)*/ mload(add(denominatorsPtr, 0x20)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[17]*/ mload(add(context, 0x2e60)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_18*(f_1(x) - f_1(g^2 * z)) / (x - g^2 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^2 * z)^(-1)*/ mload(add(denominatorsPtr, 0x40)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[18]*/ mload(add(context, 0x2e80)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_19*(f_1(x) - f_1(g^4 * z)) / (x - g^4 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^4 * z)^(-1)*/ mload(add(denominatorsPtr, 0x80)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[19]*/ mload(add(context, 0x2ea0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_20*(f_1(x) - f_1(g^6 * z)) / (x - g^6 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^6 * z)^(-1)*/ mload(add(denominatorsPtr, 0xc0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[20]*/ mload(add(context, 0x2ec0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_21*(f_1(x) - f_1(g^8 * z)) / (x - g^8 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^8 * z)^(-1)*/ mload(add(denominatorsPtr, 0x100)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[21]*/ mload(add(context, 0x2ee0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_22*(f_1(x) - f_1(g^10 * z)) / (x - g^10 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^10 * z)^(-1)*/ mload(add(denominatorsPtr, 0x140)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[22]*/ mload(add(context, 0x2f00)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_23*(f_1(x) - f_1(g^12 * z)) / (x - g^12 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^12 * z)^(-1)*/ mload(add(denominatorsPtr, 0x180)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[23]*/ mload(add(context, 0x2f20)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_24*(f_1(x) - f_1(g^14 * z)) / (x - g^14 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^14 * z)^(-1)*/ mload(add(denominatorsPtr, 0x1c0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[24]*/ mload(add(context, 0x2f40)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_25*(f_1(x) - f_1(g^16 * z)) / (x - g^16 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^16 * z)^(-1)*/ mload(add(denominatorsPtr, 0x200)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[25]*/ mload(add(context, 0x2f60)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_26*(f_1(x) - f_1(g^18 * z)) / (x - g^18 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^18 * z)^(-1)*/ mload(add(denominatorsPtr, 0x240)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[26]*/ mload(add(context, 0x2f80)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_27*(f_1(x) - f_1(g^20 * z)) / (x - g^20 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^20 * z)^(-1)*/ mload(add(denominatorsPtr, 0x260)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[27]*/ mload(add(context, 0x2fa0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_28*(f_1(x) - f_1(g^22 * z)) / (x - g^22 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^22 * z)^(-1)*/ mload(add(denominatorsPtr, 0x280)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[28]*/ mload(add(context, 0x2fc0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_29*(f_1(x) - f_1(g^24 * z)) / (x - g^24 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^24 * z)^(-1)*/ mload(add(denominatorsPtr, 0x2a0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[29]*/ mload(add(context, 0x2fe0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_30*(f_1(x) - f_1(g^26 * z)) / (x - g^26 * z).
res := addmod(
res,
mulmod(mulmod(/*(x - g^26 * z)^(-1)*/ mload(add(denominatorsPtr, 0x2e0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[30]*/ mload(add(context, 0x3000)))),
PRIME),
PRIME)
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_31*(f_1(x) - f_1(g^28 * z)) / (x - g^28 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^28 * z)^(-1)*/ mload(add(denominatorsPtr, 0x320)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[31]*/ mload(add(context, 0x3020)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_32*(f_1(x) - f_1(g^30 * z)) / (x - g^30 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^30 * z)^(-1)*/ mload(add(denominatorsPtr, 0x340)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[32]*/ mload(add(context, 0x3040)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_33*(f_1(x) - f_1(g^32 * z)) / (x - g^32 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^32 * z)^(-1)*/ mload(add(denominatorsPtr, 0x360)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[33]*/ mload(add(context, 0x3060)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_34*(f_1(x) - f_1(g^33 * z)) / (x - g^33 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^33 * z)^(-1)*/ mload(add(denominatorsPtr, 0x380)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[34]*/ mload(add(context, 0x3080)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_35*(f_1(x) - f_1(g^64 * z)) / (x - g^64 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^64 * z)^(-1)*/ mload(add(denominatorsPtr, 0x440)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[35]*/ mload(add(context, 0x30a0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_36*(f_1(x) - f_1(g^65 * z)) / (x - g^65 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^65 * z)^(-1)*/ mload(add(denominatorsPtr, 0x460)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[36]*/ mload(add(context, 0x30c0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_37*(f_1(x) - f_1(g^88 * z)) / (x - g^88 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^88 * z)^(-1)*/ mload(add(denominatorsPtr, 0x4e0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[37]*/ mload(add(context, 0x30e0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_38*(f_1(x) - f_1(g^90 * z)) / (x - g^90 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^90 * z)^(-1)*/ mload(add(denominatorsPtr, 0x500)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[38]*/ mload(add(context, 0x3100)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_39*(f_1(x) - f_1(g^92 * z)) / (x - g^92 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^92 * z)^(-1)*/ mload(add(denominatorsPtr, 0x540)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[39]*/ mload(add(context, 0x3120)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_40*(f_1(x) - f_1(g^94 * z)) / (x - g^94 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^94 * z)^(-1)*/ mload(add(denominatorsPtr, 0x560)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[40]*/ mload(add(context, 0x3140)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_41*(f_1(x) - f_1(g^96 * z)) / (x - g^96 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^96 * z)^(-1)*/ mload(add(denominatorsPtr, 0x580)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[41]*/ mload(add(context, 0x3160)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_42*(f_1(x) - f_1(g^97 * z)) / (x - g^97 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^97 * z)^(-1)*/ mload(add(denominatorsPtr, 0x5a0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[42]*/ mload(add(context, 0x3180)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_43*(f_1(x) - f_1(g^120 * z)) / (x - g^120 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^120 * z)^(-1)*/ mload(add(denominatorsPtr, 0x5e0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[43]*/ mload(add(context, 0x31a0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_44*(f_1(x) - f_1(g^122 * z)) / (x - g^122 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^122 * z)^(-1)*/ mload(add(denominatorsPtr, 0x600)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[44]*/ mload(add(context, 0x31c0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_45*(f_1(x) - f_1(g^124 * z)) / (x - g^124 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^124 * z)^(-1)*/ mload(add(denominatorsPtr, 0x640)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[45]*/ mload(add(context, 0x31e0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_46*(f_1(x) - f_1(g^126 * z)) / (x - g^126 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^126 * z)^(-1)*/ mload(add(denominatorsPtr, 0x660)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[46]*/ mload(add(context, 0x3200)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
}
// Mask items for column #2.
{
// Read the next element.
let columnValue := mulmod(mload(add(traceQueryResponses, 0x40)), kMontgomeryRInv, PRIME)
// res += c_47*(f_2(x) - f_2(z)) / (x - z).
res := add(
res,
mulmod(mulmod(/*(x - z)^(-1)*/ mload(denominatorsPtr),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[47]*/ mload(add(context, 0x3220)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_48*(f_2(x) - f_2(g * z)) / (x - g * z).
res := add(
res,
mulmod(mulmod(/*(x - g * z)^(-1)*/ mload(add(denominatorsPtr, 0x20)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[48]*/ mload(add(context, 0x3240)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
}
// Mask items for column #3.
{
// Read the next element.
let columnValue := mulmod(mload(add(traceQueryResponses, 0x60)), kMontgomeryRInv, PRIME)
// res += c_49*(f_3(x) - f_3(z)) / (x - z).
res := add(
res,
mulmod(mulmod(/*(x - z)^(-1)*/ mload(denominatorsPtr),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[49]*/ mload(add(context, 0x3260)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_50*(f_3(x) - f_3(g * z)) / (x - g * z).
res := add(
res,
mulmod(mulmod(/*(x - g * z)^(-1)*/ mload(add(denominatorsPtr, 0x20)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[50]*/ mload(add(context, 0x3280)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_51*(f_3(x) - f_3(g^2 * z)) / (x - g^2 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^2 * z)^(-1)*/ mload(add(denominatorsPtr, 0x40)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[51]*/ mload(add(context, 0x32a0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_52*(f_3(x) - f_3(g^3 * z)) / (x - g^3 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^3 * z)^(-1)*/ mload(add(denominatorsPtr, 0x60)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[52]*/ mload(add(context, 0x32c0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_53*(f_3(x) - f_3(g^4 * z)) / (x - g^4 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^4 * z)^(-1)*/ mload(add(denominatorsPtr, 0x80)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[53]*/ mload(add(context, 0x32e0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_54*(f_3(x) - f_3(g^5 * z)) / (x - g^5 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^5 * z)^(-1)*/ mload(add(denominatorsPtr, 0xa0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[54]*/ mload(add(context, 0x3300)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_55*(f_3(x) - f_3(g^8 * z)) / (x - g^8 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^8 * z)^(-1)*/ mload(add(denominatorsPtr, 0x100)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[55]*/ mload(add(context, 0x3320)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_56*(f_3(x) - f_3(g^9 * z)) / (x - g^9 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^9 * z)^(-1)*/ mload(add(denominatorsPtr, 0x120)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[56]*/ mload(add(context, 0x3340)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_57*(f_3(x) - f_3(g^10 * z)) / (x - g^10 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^10 * z)^(-1)*/ mload(add(denominatorsPtr, 0x140)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[57]*/ mload(add(context, 0x3360)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_58*(f_3(x) - f_3(g^11 * z)) / (x - g^11 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^11 * z)^(-1)*/ mload(add(denominatorsPtr, 0x160)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[58]*/ mload(add(context, 0x3380)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_59*(f_3(x) - f_3(g^12 * z)) / (x - g^12 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^12 * z)^(-1)*/ mload(add(denominatorsPtr, 0x180)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[59]*/ mload(add(context, 0x33a0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_60*(f_3(x) - f_3(g^13 * z)) / (x - g^13 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^13 * z)^(-1)*/ mload(add(denominatorsPtr, 0x1a0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[60]*/ mload(add(context, 0x33c0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_61*(f_3(x) - f_3(g^16 * z)) / (x - g^16 * z).
res := addmod(
res,
mulmod(mulmod(/*(x - g^16 * z)^(-1)*/ mload(add(denominatorsPtr, 0x200)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[61]*/ mload(add(context, 0x33e0)))),
PRIME),
PRIME)
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_62*(f_3(x) - f_3(g^26 * z)) / (x - g^26 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^26 * z)^(-1)*/ mload(add(denominatorsPtr, 0x2e0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[62]*/ mload(add(context, 0x3400)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_63*(f_3(x) - f_3(g^27 * z)) / (x - g^27 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^27 * z)^(-1)*/ mload(add(denominatorsPtr, 0x300)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[63]*/ mload(add(context, 0x3420)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_64*(f_3(x) - f_3(g^42 * z)) / (x - g^42 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^42 * z)^(-1)*/ mload(add(denominatorsPtr, 0x3a0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[64]*/ mload(add(context, 0x3440)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_65*(f_3(x) - f_3(g^43 * z)) / (x - g^43 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^43 * z)^(-1)*/ mload(add(denominatorsPtr, 0x3c0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[65]*/ mload(add(context, 0x3460)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_66*(f_3(x) - f_3(g^58 * z)) / (x - g^58 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^58 * z)^(-1)*/ mload(add(denominatorsPtr, 0x400)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[66]*/ mload(add(context, 0x3480)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_67*(f_3(x) - f_3(g^74 * z)) / (x - g^74 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^74 * z)^(-1)*/ mload(add(denominatorsPtr, 0x480)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[67]*/ mload(add(context, 0x34a0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_68*(f_3(x) - f_3(g^75 * z)) / (x - g^75 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^75 * z)^(-1)*/ mload(add(denominatorsPtr, 0x4a0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[68]*/ mload(add(context, 0x34c0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_69*(f_3(x) - f_3(g^91 * z)) / (x - g^91 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^91 * z)^(-1)*/ mload(add(denominatorsPtr, 0x520)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[69]*/ mload(add(context, 0x34e0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_70*(f_3(x) - f_3(g^122 * z)) / (x - g^122 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^122 * z)^(-1)*/ mload(add(denominatorsPtr, 0x600)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[70]*/ mload(add(context, 0x3500)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_71*(f_3(x) - f_3(g^123 * z)) / (x - g^123 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^123 * z)^(-1)*/ mload(add(denominatorsPtr, 0x620)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[71]*/ mload(add(context, 0x3520)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_72*(f_3(x) - f_3(g^154 * z)) / (x - g^154 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^154 * z)^(-1)*/ mload(add(denominatorsPtr, 0x680)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[72]*/ mload(add(context, 0x3540)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_73*(f_3(x) - f_3(g^202 * z)) / (x - g^202 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^202 * z)^(-1)*/ mload(add(denominatorsPtr, 0x6a0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[73]*/ mload(add(context, 0x3560)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_74*(f_3(x) - f_3(g^522 * z)) / (x - g^522 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^522 * z)^(-1)*/ mload(add(denominatorsPtr, 0x6c0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[74]*/ mload(add(context, 0x3580)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_75*(f_3(x) - f_3(g^523 * z)) / (x - g^523 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^523 * z)^(-1)*/ mload(add(denominatorsPtr, 0x6e0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[75]*/ mload(add(context, 0x35a0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_76*(f_3(x) - f_3(g^1034 * z)) / (x - g^1034 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^1034 * z)^(-1)*/ mload(add(denominatorsPtr, 0x880)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[76]*/ mload(add(context, 0x35c0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_77*(f_3(x) - f_3(g^1035 * z)) / (x - g^1035 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^1035 * z)^(-1)*/ mload(add(denominatorsPtr, 0x8a0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[77]*/ mload(add(context, 0x35e0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_78*(f_3(x) - f_3(g^2058 * z)) / (x - g^2058 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^2058 * z)^(-1)*/ mload(add(denominatorsPtr, 0x8e0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[78]*/ mload(add(context, 0x3600)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
}
// Mask items for column #4.
{
// Read the next element.
let columnValue := mulmod(mload(add(traceQueryResponses, 0x80)), kMontgomeryRInv, PRIME)
// res += c_79*(f_4(x) - f_4(z)) / (x - z).
res := add(
res,
mulmod(mulmod(/*(x - z)^(-1)*/ mload(denominatorsPtr),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[79]*/ mload(add(context, 0x3620)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_80*(f_4(x) - f_4(g * z)) / (x - g * z).
res := add(
res,
mulmod(mulmod(/*(x - g * z)^(-1)*/ mload(add(denominatorsPtr, 0x20)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[80]*/ mload(add(context, 0x3640)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_81*(f_4(x) - f_4(g^2 * z)) / (x - g^2 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^2 * z)^(-1)*/ mload(add(denominatorsPtr, 0x40)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[81]*/ mload(add(context, 0x3660)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_82*(f_4(x) - f_4(g^3 * z)) / (x - g^3 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^3 * z)^(-1)*/ mload(add(denominatorsPtr, 0x60)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[82]*/ mload(add(context, 0x3680)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
}
// Mask items for column #5.
{
// Read the next element.
let columnValue := mulmod(mload(add(traceQueryResponses, 0xa0)), kMontgomeryRInv, PRIME)
// res += c_83*(f_5(x) - f_5(z)) / (x - z).
res := add(
res,
mulmod(mulmod(/*(x - z)^(-1)*/ mload(denominatorsPtr),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[83]*/ mload(add(context, 0x36a0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_84*(f_5(x) - f_5(g * z)) / (x - g * z).
res := add(
res,
mulmod(mulmod(/*(x - g * z)^(-1)*/ mload(add(denominatorsPtr, 0x20)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[84]*/ mload(add(context, 0x36c0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_85*(f_5(x) - f_5(g^2 * z)) / (x - g^2 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^2 * z)^(-1)*/ mload(add(denominatorsPtr, 0x40)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[85]*/ mload(add(context, 0x36e0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_86*(f_5(x) - f_5(g^3 * z)) / (x - g^3 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^3 * z)^(-1)*/ mload(add(denominatorsPtr, 0x60)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[86]*/ mload(add(context, 0x3700)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_87*(f_5(x) - f_5(g^4 * z)) / (x - g^4 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^4 * z)^(-1)*/ mload(add(denominatorsPtr, 0x80)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[87]*/ mload(add(context, 0x3720)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_88*(f_5(x) - f_5(g^5 * z)) / (x - g^5 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^5 * z)^(-1)*/ mload(add(denominatorsPtr, 0xa0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[88]*/ mload(add(context, 0x3740)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_89*(f_5(x) - f_5(g^6 * z)) / (x - g^6 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^6 * z)^(-1)*/ mload(add(denominatorsPtr, 0xc0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[89]*/ mload(add(context, 0x3760)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_90*(f_5(x) - f_5(g^7 * z)) / (x - g^7 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^7 * z)^(-1)*/ mload(add(denominatorsPtr, 0xe0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[90]*/ mload(add(context, 0x3780)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_91*(f_5(x) - f_5(g^8 * z)) / (x - g^8 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^8 * z)^(-1)*/ mload(add(denominatorsPtr, 0x100)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[91]*/ mload(add(context, 0x37a0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_92*(f_5(x) - f_5(g^12 * z)) / (x - g^12 * z).
res := addmod(
res,
mulmod(mulmod(/*(x - g^12 * z)^(-1)*/ mload(add(denominatorsPtr, 0x180)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[92]*/ mload(add(context, 0x37c0)))),
PRIME),
PRIME)
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_93*(f_5(x) - f_5(g^28 * z)) / (x - g^28 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^28 * z)^(-1)*/ mload(add(denominatorsPtr, 0x320)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[93]*/ mload(add(context, 0x37e0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_94*(f_5(x) - f_5(g^44 * z)) / (x - g^44 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^44 * z)^(-1)*/ mload(add(denominatorsPtr, 0x3e0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[94]*/ mload(add(context, 0x3800)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_95*(f_5(x) - f_5(g^60 * z)) / (x - g^60 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^60 * z)^(-1)*/ mload(add(denominatorsPtr, 0x420)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[95]*/ mload(add(context, 0x3820)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_96*(f_5(x) - f_5(g^76 * z)) / (x - g^76 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^76 * z)^(-1)*/ mload(add(denominatorsPtr, 0x4c0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[96]*/ mload(add(context, 0x3840)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_97*(f_5(x) - f_5(g^92 * z)) / (x - g^92 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^92 * z)^(-1)*/ mload(add(denominatorsPtr, 0x540)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[97]*/ mload(add(context, 0x3860)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_98*(f_5(x) - f_5(g^108 * z)) / (x - g^108 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^108 * z)^(-1)*/ mload(add(denominatorsPtr, 0x5c0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[98]*/ mload(add(context, 0x3880)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_99*(f_5(x) - f_5(g^124 * z)) / (x - g^124 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^124 * z)^(-1)*/ mload(add(denominatorsPtr, 0x640)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[99]*/ mload(add(context, 0x38a0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_100*(f_5(x) - f_5(g^1021 * z)) / (x - g^1021 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^1021 * z)^(-1)*/ mload(add(denominatorsPtr, 0x7c0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[100]*/ mload(add(context, 0x38c0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_101*(f_5(x) - f_5(g^1023 * z)) / (x - g^1023 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^1023 * z)^(-1)*/ mload(add(denominatorsPtr, 0x800)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[101]*/ mload(add(context, 0x38e0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_102*(f_5(x) - f_5(g^1025 * z)) / (x - g^1025 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^1025 * z)^(-1)*/ mload(add(denominatorsPtr, 0x840)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[102]*/ mload(add(context, 0x3900)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_103*(f_5(x) - f_5(g^1027 * z)) / (x - g^1027 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^1027 * z)^(-1)*/ mload(add(denominatorsPtr, 0x860)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[103]*/ mload(add(context, 0x3920)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_104*(f_5(x) - f_5(g^2045 * z)) / (x - g^2045 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^2045 * z)^(-1)*/ mload(add(denominatorsPtr, 0x8c0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[104]*/ mload(add(context, 0x3940)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
}
// Mask items for column #6.
{
// Read the next element.
let columnValue := mulmod(mload(add(traceQueryResponses, 0xc0)), kMontgomeryRInv, PRIME)
// res += c_105*(f_6(x) - f_6(z)) / (x - z).
res := add(
res,
mulmod(mulmod(/*(x - z)^(-1)*/ mload(denominatorsPtr),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[105]*/ mload(add(context, 0x3960)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_106*(f_6(x) - f_6(g * z)) / (x - g * z).
res := add(
res,
mulmod(mulmod(/*(x - g * z)^(-1)*/ mload(add(denominatorsPtr, 0x20)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[106]*/ mload(add(context, 0x3980)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_107*(f_6(x) - f_6(g^2 * z)) / (x - g^2 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^2 * z)^(-1)*/ mload(add(denominatorsPtr, 0x40)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[107]*/ mload(add(context, 0x39a0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_108*(f_6(x) - f_6(g^3 * z)) / (x - g^3 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^3 * z)^(-1)*/ mload(add(denominatorsPtr, 0x60)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[108]*/ mload(add(context, 0x39c0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_109*(f_6(x) - f_6(g^4 * z)) / (x - g^4 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^4 * z)^(-1)*/ mload(add(denominatorsPtr, 0x80)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[109]*/ mload(add(context, 0x39e0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_110*(f_6(x) - f_6(g^5 * z)) / (x - g^5 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^5 * z)^(-1)*/ mload(add(denominatorsPtr, 0xa0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[
Submitted on: 2025-10-08 10:52:28
Comments
Log in to comment.
No comments yet.