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/layout5/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, 0x5240)
let compositionQueryResponses := /*composition_query_responses*/ add(context, 0xd640)
// 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, 0x5220))
// 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, 0x2d20)))),
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, 0x2d40)))),
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, 0x2d60)))),
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, 0x2d80)))),
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, 0x2da0)))),
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, 0x2dc0)))),
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, 0x2de0)))),
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, 0x2e00)))),
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, 0x2e20)))),
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, 0x2e40)))),
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, 0x2e60)))),
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, 0x2e80)))),
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, 0x2ea0)))),
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, 0x2ec0)))),
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, 0x2ee0)))),
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, 0x2f00)))),
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, 0x2f20)))),
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, 0x2f40)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_18*(f_1(x) - f_1(g^255 * z)) / (x - g^255 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^255 * z)^(-1)*/ mload(add(denominatorsPtr, 0x900)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[18]*/ mload(add(context, 0x2f60)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_19*(f_1(x) - f_1(g^256 * z)) / (x - g^256 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^256 * z)^(-1)*/ mload(add(denominatorsPtr, 0x920)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[19]*/ mload(add(context, 0x2f80)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_20*(f_1(x) - f_1(g^511 * z)) / (x - g^511 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^511 * z)^(-1)*/ mload(add(denominatorsPtr, 0xa60)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[20]*/ mload(add(context, 0x2fa0)))),
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_21*(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[21]*/ mload(add(context, 0x2fc0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_22*(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[22]*/ mload(add(context, 0x2fe0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_23*(f_2(x) - f_2(g^255 * z)) / (x - g^255 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^255 * z)^(-1)*/ mload(add(denominatorsPtr, 0x900)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[23]*/ mload(add(context, 0x3000)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_24*(f_2(x) - f_2(g^256 * z)) / (x - g^256 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^256 * z)^(-1)*/ mload(add(denominatorsPtr, 0x920)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[24]*/ mload(add(context, 0x3020)))),
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_25*(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[25]*/ mload(add(context, 0x3040)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_26*(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[26]*/ mload(add(context, 0x3060)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_27*(f_3(x) - f_3(g^192 * z)) / (x - g^192 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^192 * z)^(-1)*/ mload(add(denominatorsPtr, 0x780)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[27]*/ mload(add(context, 0x3080)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_28*(f_3(x) - f_3(g^193 * z)) / (x - g^193 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^193 * z)^(-1)*/ mload(add(denominatorsPtr, 0x7a0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[28]*/ mload(add(context, 0x30a0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_29*(f_3(x) - f_3(g^196 * z)) / (x - g^196 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^196 * z)^(-1)*/ mload(add(denominatorsPtr, 0x7c0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[29]*/ mload(add(context, 0x30c0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_30*(f_3(x) - f_3(g^197 * z)) / (x - g^197 * z).
res := addmod(
res,
mulmod(mulmod(/*(x - g^197 * z)^(-1)*/ mload(add(denominatorsPtr, 0x7e0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[30]*/ mload(add(context, 0x30e0)))),
PRIME),
PRIME)
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_31*(f_3(x) - f_3(g^251 * z)) / (x - g^251 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^251 * z)^(-1)*/ mload(add(denominatorsPtr, 0x8c0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[31]*/ mload(add(context, 0x3100)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_32*(f_3(x) - f_3(g^252 * z)) / (x - g^252 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^252 * z)^(-1)*/ mload(add(denominatorsPtr, 0x8e0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[32]*/ mload(add(context, 0x3120)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_33*(f_3(x) - f_3(g^256 * z)) / (x - g^256 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^256 * z)^(-1)*/ mload(add(denominatorsPtr, 0x920)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[33]*/ mload(add(context, 0x3140)))),
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_34*(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[34]*/ mload(add(context, 0x3160)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_35*(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[35]*/ mload(add(context, 0x3180)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_36*(f_4(x) - f_4(g^255 * z)) / (x - g^255 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^255 * z)^(-1)*/ mload(add(denominatorsPtr, 0x900)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[36]*/ mload(add(context, 0x31a0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_37*(f_4(x) - f_4(g^256 * z)) / (x - g^256 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^256 * z)^(-1)*/ mload(add(denominatorsPtr, 0x920)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[37]*/ mload(add(context, 0x31c0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_38*(f_4(x) - f_4(g^511 * z)) / (x - g^511 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^511 * z)^(-1)*/ mload(add(denominatorsPtr, 0xa60)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[38]*/ mload(add(context, 0x31e0)))),
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_39*(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[39]*/ mload(add(context, 0x3200)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_40*(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[40]*/ mload(add(context, 0x3220)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_41*(f_5(x) - f_5(g^255 * z)) / (x - g^255 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^255 * z)^(-1)*/ mload(add(denominatorsPtr, 0x900)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[41]*/ mload(add(context, 0x3240)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_42*(f_5(x) - f_5(g^256 * z)) / (x - g^256 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^256 * z)^(-1)*/ mload(add(denominatorsPtr, 0x920)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[42]*/ mload(add(context, 0x3260)))),
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_43*(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[43]*/ mload(add(context, 0x3280)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_44*(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[44]*/ mload(add(context, 0x32a0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_45*(f_6(x) - f_6(g^192 * z)) / (x - g^192 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^192 * z)^(-1)*/ mload(add(denominatorsPtr, 0x780)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[45]*/ mload(add(context, 0x32c0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_46*(f_6(x) - f_6(g^193 * z)) / (x - g^193 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^193 * z)^(-1)*/ mload(add(denominatorsPtr, 0x7a0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[46]*/ mload(add(context, 0x32e0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_47*(f_6(x) - f_6(g^196 * z)) / (x - g^196 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^196 * z)^(-1)*/ mload(add(denominatorsPtr, 0x7c0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[47]*/ mload(add(context, 0x3300)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_48*(f_6(x) - f_6(g^197 * z)) / (x - g^197 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^197 * z)^(-1)*/ mload(add(denominatorsPtr, 0x7e0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[48]*/ mload(add(context, 0x3320)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_49*(f_6(x) - f_6(g^251 * z)) / (x - g^251 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^251 * z)^(-1)*/ mload(add(denominatorsPtr, 0x8c0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[49]*/ mload(add(context, 0x3340)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_50*(f_6(x) - f_6(g^252 * z)) / (x - g^252 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^252 * z)^(-1)*/ mload(add(denominatorsPtr, 0x8e0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[50]*/ mload(add(context, 0x3360)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_51*(f_6(x) - f_6(g^256 * z)) / (x - g^256 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^256 * z)^(-1)*/ mload(add(denominatorsPtr, 0x920)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[51]*/ mload(add(context, 0x3380)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
}
// Mask items for column #7.
{
// Read the next element.
let columnValue := mulmod(mload(add(traceQueryResponses, 0xe0)), kMontgomeryRInv, PRIME)
// res += c_52*(f_7(x) - f_7(z)) / (x - z).
res := add(
res,
mulmod(mulmod(/*(x - z)^(-1)*/ mload(denominatorsPtr),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[52]*/ mload(add(context, 0x33a0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_53*(f_7(x) - f_7(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[53]*/ mload(add(context, 0x33c0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_54*(f_7(x) - f_7(g^255 * z)) / (x - g^255 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^255 * z)^(-1)*/ mload(add(denominatorsPtr, 0x900)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[54]*/ mload(add(context, 0x33e0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_55*(f_7(x) - f_7(g^256 * z)) / (x - g^256 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^256 * z)^(-1)*/ mload(add(denominatorsPtr, 0x920)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[55]*/ mload(add(context, 0x3400)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_56*(f_7(x) - f_7(g^511 * z)) / (x - g^511 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^511 * z)^(-1)*/ mload(add(denominatorsPtr, 0xa60)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[56]*/ mload(add(context, 0x3420)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
}
// Mask items for column #8.
{
// Read the next element.
let columnValue := mulmod(mload(add(traceQueryResponses, 0x100)), kMontgomeryRInv, PRIME)
// res += c_57*(f_8(x) - f_8(z)) / (x - z).
res := add(
res,
mulmod(mulmod(/*(x - z)^(-1)*/ mload(denominatorsPtr),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[57]*/ mload(add(context, 0x3440)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_58*(f_8(x) - f_8(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[58]*/ mload(add(context, 0x3460)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_59*(f_8(x) - f_8(g^255 * z)) / (x - g^255 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^255 * z)^(-1)*/ mload(add(denominatorsPtr, 0x900)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[59]*/ mload(add(context, 0x3480)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_60*(f_8(x) - f_8(g^256 * z)) / (x - g^256 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^256 * z)^(-1)*/ mload(add(denominatorsPtr, 0x920)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[60]*/ mload(add(context, 0x34a0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
}
// Mask items for column #9.
{
// Read the next element.
let columnValue := mulmod(mload(add(traceQueryResponses, 0x120)), kMontgomeryRInv, PRIME)
// res += c_61*(f_9(x) - f_9(z)) / (x - z).
res := addmod(
res,
mulmod(mulmod(/*(x - z)^(-1)*/ mload(denominatorsPtr),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[61]*/ mload(add(context, 0x34c0)))),
PRIME),
PRIME)
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_62*(f_9(x) - f_9(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[62]*/ mload(add(context, 0x34e0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_63*(f_9(x) - f_9(g^192 * z)) / (x - g^192 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^192 * z)^(-1)*/ mload(add(denominatorsPtr, 0x780)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[63]*/ mload(add(context, 0x3500)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_64*(f_9(x) - f_9(g^193 * z)) / (x - g^193 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^193 * z)^(-1)*/ mload(add(denominatorsPtr, 0x7a0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[64]*/ mload(add(context, 0x3520)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_65*(f_9(x) - f_9(g^196 * z)) / (x - g^196 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^196 * z)^(-1)*/ mload(add(denominatorsPtr, 0x7c0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[65]*/ mload(add(context, 0x3540)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_66*(f_9(x) - f_9(g^197 * z)) / (x - g^197 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^197 * z)^(-1)*/ mload(add(denominatorsPtr, 0x7e0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[66]*/ mload(add(context, 0x3560)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_67*(f_9(x) - f_9(g^251 * z)) / (x - g^251 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^251 * z)^(-1)*/ mload(add(denominatorsPtr, 0x8c0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[67]*/ mload(add(context, 0x3580)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_68*(f_9(x) - f_9(g^252 * z)) / (x - g^252 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^252 * z)^(-1)*/ mload(add(denominatorsPtr, 0x8e0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[68]*/ mload(add(context, 0x35a0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_69*(f_9(x) - f_9(g^256 * z)) / (x - g^256 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^256 * z)^(-1)*/ mload(add(denominatorsPtr, 0x920)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[69]*/ mload(add(context, 0x35c0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
}
// Mask items for column #10.
{
// Read the next element.
let columnValue := mulmod(mload(add(traceQueryResponses, 0x140)), kMontgomeryRInv, PRIME)
// res += c_70*(f_10(x) - f_10(z)) / (x - z).
res := add(
res,
mulmod(mulmod(/*(x - z)^(-1)*/ mload(denominatorsPtr),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[70]*/ mload(add(context, 0x35e0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_71*(f_10(x) - f_10(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[71]*/ mload(add(context, 0x3600)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_72*(f_10(x) - f_10(g^255 * z)) / (x - g^255 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^255 * z)^(-1)*/ mload(add(denominatorsPtr, 0x900)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[72]*/ mload(add(context, 0x3620)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_73*(f_10(x) - f_10(g^256 * z)) / (x - g^256 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^256 * z)^(-1)*/ mload(add(denominatorsPtr, 0x920)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[73]*/ mload(add(context, 0x3640)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_74*(f_10(x) - f_10(g^511 * z)) / (x - g^511 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^511 * z)^(-1)*/ mload(add(denominatorsPtr, 0xa60)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[74]*/ mload(add(context, 0x3660)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
}
// Mask items for column #11.
{
// Read the next element.
let columnValue := mulmod(mload(add(traceQueryResponses, 0x160)), kMontgomeryRInv, PRIME)
// res += c_75*(f_11(x) - f_11(z)) / (x - z).
res := add(
res,
mulmod(mulmod(/*(x - z)^(-1)*/ mload(denominatorsPtr),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[75]*/ mload(add(context, 0x3680)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_76*(f_11(x) - f_11(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[76]*/ mload(add(context, 0x36a0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_77*(f_11(x) - f_11(g^255 * z)) / (x - g^255 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^255 * z)^(-1)*/ mload(add(denominatorsPtr, 0x900)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[77]*/ mload(add(context, 0x36c0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_78*(f_11(x) - f_11(g^256 * z)) / (x - g^256 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^256 * z)^(-1)*/ mload(add(denominatorsPtr, 0x920)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[78]*/ mload(add(context, 0x36e0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
}
// Mask items for column #12.
{
// Read the next element.
let columnValue := mulmod(mload(add(traceQueryResponses, 0x180)), kMontgomeryRInv, PRIME)
// res += c_79*(f_12(x) - f_12(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, 0x3700)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_80*(f_12(x) - f_12(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, 0x3720)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_81*(f_12(x) - f_12(g^192 * z)) / (x - g^192 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^192 * z)^(-1)*/ mload(add(denominatorsPtr, 0x780)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[81]*/ mload(add(context, 0x3740)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_82*(f_12(x) - f_12(g^193 * z)) / (x - g^193 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^193 * z)^(-1)*/ mload(add(denominatorsPtr, 0x7a0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[82]*/ mload(add(context, 0x3760)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_83*(f_12(x) - f_12(g^196 * z)) / (x - g^196 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^196 * z)^(-1)*/ mload(add(denominatorsPtr, 0x7c0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[83]*/ mload(add(context, 0x3780)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_84*(f_12(x) - f_12(g^197 * z)) / (x - g^197 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^197 * z)^(-1)*/ mload(add(denominatorsPtr, 0x7e0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[84]*/ mload(add(context, 0x37a0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_85*(f_12(x) - f_12(g^251 * z)) / (x - g^251 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^251 * z)^(-1)*/ mload(add(denominatorsPtr, 0x8c0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[85]*/ mload(add(context, 0x37c0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_86*(f_12(x) - f_12(g^252 * z)) / (x - g^252 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^252 * z)^(-1)*/ mload(add(denominatorsPtr, 0x8e0)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[86]*/ mload(add(context, 0x37e0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_87*(f_12(x) - f_12(g^256 * z)) / (x - g^256 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^256 * z)^(-1)*/ mload(add(denominatorsPtr, 0x920)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[87]*/ mload(add(context, 0x3800)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
}
// Mask items for column #13.
{
// Read the next element.
let columnValue := mulmod(mload(add(traceQueryResponses, 0x1a0)), kMontgomeryRInv, PRIME)
// res += c_88*(f_13(x) - f_13(z)) / (x - z).
res := add(
res,
mulmod(mulmod(/*(x - z)^(-1)*/ mload(denominatorsPtr),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[88]*/ mload(add(context, 0x3820)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_89*(f_13(x) - f_13(g^255 * z)) / (x - g^255 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^255 * z)^(-1)*/ mload(add(denominatorsPtr, 0x900)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[89]*/ mload(add(context, 0x3840)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
}
// Mask items for column #14.
{
// Read the next element.
let columnValue := mulmod(mload(add(traceQueryResponses, 0x1c0)), kMontgomeryRInv, PRIME)
// res += c_90*(f_14(x) - f_14(z)) / (x - z).
res := add(
res,
mulmod(mulmod(/*(x - z)^(-1)*/ mload(denominatorsPtr),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[90]*/ mload(add(context, 0x3860)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_91*(f_14(x) - f_14(g^255 * z)) / (x - g^255 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^255 * z)^(-1)*/ mload(add(denominatorsPtr, 0x900)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[91]*/ mload(add(context, 0x3880)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
}
// Mask items for column #15.
{
// Read the next element.
let columnValue := mulmod(mload(add(traceQueryResponses, 0x1e0)), kMontgomeryRInv, PRIME)
// res += c_92*(f_15(x) - f_15(z)) / (x - z).
res := addmod(
res,
mulmod(mulmod(/*(x - z)^(-1)*/ mload(denominatorsPtr),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[92]*/ mload(add(context, 0x38a0)))),
PRIME),
PRIME)
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_93*(f_15(x) - f_15(g^255 * z)) / (x - g^255 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^255 * z)^(-1)*/ mload(add(denominatorsPtr, 0x900)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[93]*/ mload(add(context, 0x38c0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
}
// Mask items for column #16.
{
// Read the next element.
let columnValue := mulmod(mload(add(traceQueryResponses, 0x200)), kMontgomeryRInv, PRIME)
// res += c_94*(f_16(x) - f_16(z)) / (x - z).
res := add(
res,
mulmod(mulmod(/*(x - z)^(-1)*/ mload(denominatorsPtr),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[94]*/ mload(add(context, 0x38e0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_95*(f_16(x) - f_16(g^255 * z)) / (x - g^255 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^255 * z)^(-1)*/ mload(add(denominatorsPtr, 0x900)),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[95]*/ mload(add(context, 0x3900)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
}
// Mask items for column #17.
{
// Read the next element.
let columnValue := mulmod(mload(add(traceQueryResponses, 0x220)), kMontgomeryRInv, PRIME)
// res += c_96*(f_17(x) - f_17(z)) / (x - z).
res := add(
res,
mulmod(mulmod(/*(x - z)^(-1)*/ mload(denominatorsPtr),
oods_alpha_pow,
PRIME),
add(columnValue, sub(PRIME, /*oods_values[96]*/ mload(add(context, 0x3920)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_97*(f_17(x) - f_17(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[97]*/ mload(add(context, 0x3940)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_98*(f_17(x) - f_17(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[98]*/ mload(add(context, 0x3960)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_99*(f_17(x) - f_17(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[99]*/ mload(add(context, 0x3980)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_100*(f_17(x) - f_17(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[100]*/ mload(add(context, 0x39a0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_101*(f_17(x) - f_17(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[101]*/ mload(add(context, 0x39c0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_102*(f_17(x) - f_17(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[102]*/ mload(add(context, 0x39e0)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_103*(f_17(x) - f_17(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[103]*/ mload(add(context, 0x3a00)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_104*(f_17(x) - f_17(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[104]*/ mload(add(context, 0x3a20)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_105*(f_17(x) - f_17(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[105]*/ mload(add(context, 0x3a40)))),
PRIME))
oods_alpha_pow := mulmod(oods_alpha_pow, oods_alpha, PRIME)
// res += c_106*(f_17(x) - f_17(g^12 * z)) / (x - g^12 * z).
res := add(
res,
mulmod(mulmod(/*(x - g^12 * z)^(-1)*
Submitted on: 2025-10-08 10:52:31
Comments
Log in to comment.
No comments yet.