This repository has been archived by the owner. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathprecomp.c
113 lines (101 loc) · 65.6 KB
/
precomp.c
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
//
// Created by Evgeniy Kramsakov on 18.01.2022.
//
#include <stdint.h>
#include "ntt.h"
#include "params.h"
/* Precomputed ntt contants generated by Pari/GP script as follows:
*
* For n = 512:
*
* brv = [0,256,128,384,64,320,192,448,32,288,160,416,96,352,224,480,16,272,144,400,80,336,208,464,48,304,176,432,112,368,240,496,8,\
* 264,136,392,72,328,200,456,40,296,168,424,104,360,232,488,24,280,152,408,88,344,216,472,56,312,184,440,120,376,248,504,4,\
* 260,132,388,68,324,196,452,36,292,164,420,100,356,228,484,20,276,148,404,84,340,212,468,52,308,180,436,116,372,244,500,12,\
* 268,140,396,76,332,204,460,44,300,172,428,108,364,236,492,28,284,156,412,92,348,220,476,60,316,188,444,124,380,252,508,2,\
* 258,130,386,66,322,194,450,34,290,162,418,98,354,226,482,18,274,146,402,82,338,210,466,50,306,178,434,114,370,242,498,10,\
* 266,138,394,74,330,202,458,42,298,170,426,106,362,234,490,26,282,154,410,90,346,218,474,58,314,186,442,122,378,250,506,6,\
* 262,134,390,70,326,198,454,38,294,166,422,102,358,230,486,22,278,150,406,86,342,214,470,54,310,182,438,118,374,246,502,14,\
* 270,142,398,78,334,206,462,46,302,174,430,110,366,238,494,30,286,158,414,94,350,222,478,62,318,190,446,126,382,254,510,1,\
* 257,129,385,65,321,193,449,33,289,161,417,97,353,225,481,17,273,145,401,81,337,209,465,49,305,177,433,113,369,241,497,9,\
* 265,137,393,73,329,201,457,41,297,169,425,105,361,233,489,25,281,153,409,89,345,217,473,57,313,185,441,121,377,249,505,5,\
* 261,133,389,69,325,197,453,37,293,165,421,101,357,229,485,21,277,149,405,85,341,213,469,53,309,181,437,117,373,245,501,13,\
* 269,141,397,77,333,205,461,45,301,173,429,109,365,237,493,29,285,157,413,93,349,221,477,61,317,189,445,125,381,253,509,3,\
* 259,131,387,67,323,195,451,35,291,163,419,99,355,227,483,19,275,147,403,83,339,211,467,51,307,179,435,115,371,243,499,11,\
* 267,139,395,75,331,203,459,43,299,171,427,107,363,235,491,27,283,155,411,91,347,219,475,59,315,187,443,123,379,251,507,7,\
* 263,135,391,71,327,199,455,39,295,167,423,103,359,231,487,23,279,151,407,87,343,215,471,55,311,183,439,119,375,247,503,15,\
* 271,143,399,79,335,207,463,47,303,175,431,111,367,239,495,31,287,159,415,95,351,223,479,63,319,191,447,127,383,255,511]
* n = 512; q = 1767374849; mont=2^32
* g = Mod(578205761, q);
* omegas_inv_bitrev_montgomery_newhope = lift(vector(n/2, i, (g^2)^(-brv[2*(i-1)+1])*mont))
* gammas_bitrev_montgomery = lift(vector(n, i, g^(brv[i])*mont))
* gammas_inv_montgomery = lift(vector(n, i, g^(-(i-1))/n*mont))
*
*
* For n = 1024:
*
* brv = [0,512,256,768,128,640,384,896,64,576,320,832,192,704,448,960,32,544,288,800,160,672,416,928,96,608,352,864,224,736,480,992, \
* 16,528,272,784,144,656,400,912,80,592,336,848,208,720,464,976,48,560,304,816,176,688,432,944,112,624,368,880,240,752,496,1008, \
* 8,520,264,776,136,648,392,904,72,584,328,840,200,712,456,968,40,552,296,808,168,680,424,936,104,616,360,872,232,744,488,1000, \
* 24,536,280,792,152,664,408,920,88,600,344,856,216,728,472,984,56,568,312,824,184,696,440,952,120,632,376,888,248,760,504,1016, \
* 4,516,260,772,132,644,388,900,68,580,324,836,196,708,452,964,36,548,292,804,164,676,420,932,100,612,356,868,228,740,484,996, \
* 20,532,276,788,148,660,404,916,84,596,340,852,212,724,468,980,52,564,308,820,180,692,436,948,116,628,372,884,244,756,500,1012, \
* 12,524,268,780,140,652,396,908,76,588,332,844,204,716,460,972,44,556,300,812,172,684,428,940,108,620,364,876,236,748,492,1004, \
* 28,540,284,796,156,668,412,924,92,604,348,860,220,732,476,988,60,572,316,828,188,700,444,956,124,636,380,892,252,764,508,1020, \
* 2,514,258,770,130,642,386,898,66,578,322,834,194,706,450,962,34,546,290,802,162,674,418,930,98,610,354,866,226,738,482,994, \
* 18,530,274,786,146,658,402,914,82,594,338,850,210,722,466,978,50,562,306,818,178,690,434,946,114,626,370,882,242,754,498,1010, \
* 10,522,266,778,138,650,394,906,74,586,330,842,202,714,458,970,42,554,298,810,170,682,426,938,106,618,362,874,234,746,490,1002, \
* 26,538,282,794,154,666,410,922,90,602,346,858,218,730,474,986,58,570,314,826,186,698,442,954,122,634,378,890,250,762,506,1018, \
* 6,518,262,774,134,646,390,902,70,582,326,838,198,710,454,966,38,550,294,806,166,678,422,934,102,614,358,870,230,742,486,998, \
* 22,534,278,790,150,662,406,918,86,598,342,854,214,726,470,982,54,566,310,822,182,694,438,950,118,630,374,886,246,758,502,1014, \
* 14,526,270,782,142,654,398,910,78,590,334,846,206,718,462,974,46,558,302,814,174,686,430,942,110,622,366,878,238,750,494,1006, \
* 30,542,286,798,158,670,414,926,94,606,350,862,222,734,478,990,62,574,318,830,190,702,446,958,126,638,382,894,254,766,510,1022, \
* 1,513,257,769,129,641,385,897,65,577,321,833,193,705,449,961,33,545,289,801,161,673,417,929,97,609,353,865,225,737,481,993, \
* 17,529,273,785,145,657,401,913,81,593,337,849,209,721,465,977,49,561,305,817,177,689,433,945,113,625,369,881,241,753,497,1009, \
* 9,521,265,777,137,649,393,905,73,585,329,841,201,713,457,969,41,553,297,809,169,681,425,937,105,617,361,873,233,745,489,1001, \
* 25,537,281,793,153,665,409,921,89,601,345,857,217,729,473,985,57,569,313,825,185,697,441,953,121,633,377,889,249,761,505,1017, \
* 5,517,261,773,133,645,389,901,69,581,325,837,197,709,453,965,37,549,293,805,165,677,421,933,101,613,357,869,229,741,485,997, \
* 21,533,277,789,149,661,405,917,85,597,341,853,213,725,469,981,53,565,309,821,181,693,437,949,117,629,373,885,245,757,501,1013, \
* 13,525,269,781,141,653,397,909,77,589,333,845,205,717,461,973,45,557,301,813,173,685,429,941,109,621,365,877,237,749,493,1005, \
* 29,541,285,797,157,669,413,925,93,605,349,861,221,733,477,989,61,573,317,829,189,701,445,957,125,637,381,893,253,765,509,1021, \
* 3,515,259,771,131,643,387,899,67,579,323,835,195,707,451,963,35,547,291,803,163,675,419,931,99,611,355,867,227,739,483,995, \
* 19,531,275,787,147,659,403,915,83,595,339,851,211,723,467,979,51,563,307,819,179,691,435,947,115,627,371,883,243,755,499,1011, \
* 11,523,267,779,139,651,395,907,75,587,331,843,203,715,459,971,43,555,299,811,171,683,427,939,107,619,363,875,235,747,491,1003, \
* 27,539,283,795,155,667,411,923,91,603,347,859,219,731,475,987,59,571,315,827,187,699,443,955,123,635,379,891,251,763,507,1019, \
* 7,519,263,775,135,647,391,903,71,583,327,839,199,711,455,967,39,551,295,807,167,679,423,935,103,615,359,871,231,743,487,999, \
* 23,535,279,791,151,663,407,919,87,599,343,855,215,727,471,983,55,567,311,823,183,695,439,951,119,631,375,887,247,759,503,1015, \
* 15,527,271,783,143,655,399,911,79,591,335,847,207,719,463,975,47,559,303,815,175,687,431,943,111,623,367,879,239,751,495,1007, \
* 31,543,287,799,159,671,415,927,95,607,351,863,223,735,479,991,63,575,319,831,191,703,447,959,127,639,383,895,255,767,511,1023]
*
* n = 1024; q = 1767374849; mont=2^32
* g = Mod(630312360, q);
* omegas_inv_bitrev_montgomery_newhope = lift(vector(n/2, i, (g^2)^(-brv[2*(i-1)+1])*mont))
* gammas_bitrev_montgomery = lift(vector(n, i, g^(brv[i])*mont))
* gammas_inv_montgomery = lift(vector(n, i, g^(-(i-1))/n*mont))
*
*
* For n=4:
* brv = [0, 2, 1, 3]
* n = 4; q = 1767374849; mont=2^32
* g = Mod(869921372, q);
* omegas_inv_bitrev_montgomery_newhope = lift(vector(n/2, i, (g^2)^(-brv[2*(i-1)+1])*mont))
* gammas_bitrev_montgomery = lift(vector(n, i, g^(brv[i])*mont))
* gammas_inv_montgomery = lift(vector(n, i, g^(-(i-1))/n*mont))
*/
#if (RINGCT_N == 512)
uint64_t omegas_inv_bitrev_montgomery[RINGCT_N/2] = {760217598, 760217598, 760217598, 760217598, 760217598, 760217598, 760217598, 760217598, 1007157251, 1007157251, 1007157251, 1007157251, 1007157251, 1007157251, 1007157251, 1007157251, 789162552, 789162552, 789162552, 789162552, 789162552, 789162552, 789162552, 789162552, 978212297, 978212297, 978212297, 978212297, 978212297, 978212297, 978212297, 978212297, 210138483, 210138483, 210138483, 210138483, 210138483, 210138483, 210138483, 210138483, 1557236366, 1557236366, 1557236366, 1557236366, 1557236366, 1557236366, 1557236366, 1557236366, 648221146, 648221146, 648221146, 648221146, 648221146, 648221146, 648221146, 648221146, 1119153703, 1119153703, 1119153703, 1119153703, 1119153703, 1119153703, 1119153703, 1119153703, 1698838253, 1698838253, 1698838253, 1698838253, 1698838253, 1698838253, 1698838253, 1698838253, 68536596, 68536596, 68536596, 68536596, 68536596, 68536596, 68536596, 68536596, 380904293, 380904293, 380904293, 380904293, 380904293, 380904293, 380904293, 380904293, 1386470556, 1386470556, 1386470556, 1386470556, 1386470556, 1386470556, 1386470556, 1386470556, 663065620, 663065620, 663065620, 663065620, 663065620, 663065620, 663065620, 663065620, 1104309229, 1104309229, 1104309229, 1104309229, 1104309229, 1104309229, 1104309229, 1104309229, 831153635, 831153635, 831153635, 831153635, 831153635, 831153635, 831153635, 831153635, 936221214, 936221214, 936221214, 936221214, 936221214, 936221214, 936221214, 936221214, 1063403529, 1063403529, 1063403529, 1063403529, 1063403529, 1063403529, 1063403529, 1063403529, 703971320, 703971320, 703971320, 703971320, 703971320, 703971320, 703971320, 703971320, 760937420, 760937420, 760937420, 760937420, 760937420, 760937420, 760937420, 760937420, 1006437429, 1006437429, 1006437429, 1006437429, 1006437429, 1006437429, 1006437429, 1006437429, 1030080520, 1030080520, 1030080520, 1030080520, 1030080520, 1030080520, 1030080520, 1030080520, 737294329, 737294329, 737294329, 737294329, 737294329, 737294329, 737294329, 737294329, 773474171, 773474171, 773474171, 773474171, 773474171, 773474171, 773474171, 773474171, 993900678, 993900678, 993900678, 993900678, 993900678, 993900678, 993900678, 993900678, 996624969, 996624969, 996624969, 996624969, 996624969, 996624969, 996624969, 996624969, 770749880, 770749880, 770749880, 770749880, 770749880, 770749880, 770749880, 770749880, 264302150, 264302150, 264302150, 264302150, 264302150, 264302150, 264302150, 264302150, 1503072699, 1503072699, 1503072699, 1503072699, 1503072699, 1503072699, 1503072699, 1503072699, 1141080607, 1141080607, 1141080607, 1141080607, 1141080607, 1141080607, 1141080607, 1141080607, 626294242, 626294242, 626294242, 626294242, 626294242, 626294242, 626294242, 626294242, 123256730, 123256730, 123256730, 123256730, 123256730, 123256730, 123256730, 123256730, 1644118119, 1644118119, 1644118119, 1644118119, 1644118119, 1644118119, 1644118119, 1644118119};
uint64_t gammas_bitrev_montgomery[RINGCT_N] = {760217598, 760217598, 760217598, 760217598, 760217598, 760217598, 760217598, 760217598, 1007157251, 1007157251, 1007157251, 1007157251, 1007157251, 1007157251, 1007157251, 1007157251, 978212297, 978212297, 978212297, 978212297, 978212297, 978212297, 978212297, 978212297, 789162552, 789162552, 789162552, 789162552, 789162552, 789162552, 789162552, 789162552, 1119153703, 1119153703, 1119153703, 1119153703, 1119153703, 1119153703, 1119153703, 1119153703, 648221146, 648221146, 648221146, 648221146, 648221146, 648221146, 648221146, 648221146, 1557236366, 1557236366, 1557236366, 1557236366, 1557236366, 1557236366, 1557236366, 1557236366, 210138483, 210138483, 210138483, 210138483, 210138483, 210138483, 210138483, 210138483, 936221214, 936221214, 936221214, 936221214, 936221214, 936221214, 936221214, 936221214, 831153635, 831153635, 831153635, 831153635, 831153635, 831153635, 831153635, 831153635, 1104309229, 1104309229, 1104309229, 1104309229, 1104309229, 1104309229, 1104309229, 1104309229, 663065620, 663065620, 663065620, 663065620, 663065620, 663065620, 663065620, 663065620, 1386470556, 1386470556, 1386470556, 1386470556, 1386470556, 1386470556, 1386470556, 1386470556, 380904293, 380904293, 380904293, 380904293, 380904293, 380904293, 380904293, 380904293, 68536596, 68536596, 68536596, 68536596, 68536596, 68536596, 68536596, 68536596, 1698838253, 1698838253, 1698838253, 1698838253, 1698838253, 1698838253, 1698838253, 1698838253, 1644118119, 1644118119, 1644118119, 1644118119, 1644118119, 1644118119, 1644118119, 1644118119, 123256730, 123256730, 123256730, 123256730, 123256730, 123256730, 123256730, 123256730, 626294242, 626294242, 626294242, 626294242, 626294242, 626294242, 626294242, 626294242, 1141080607, 1141080607, 1141080607, 1141080607, 1141080607, 1141080607, 1141080607, 1141080607, 1503072699, 1503072699, 1503072699, 1503072699, 1503072699, 1503072699, 1503072699, 1503072699, 264302150, 264302150, 264302150, 264302150, 264302150, 264302150, 264302150, 264302150, 770749880, 770749880, 770749880, 770749880, 770749880, 770749880, 770749880, 770749880, 996624969, 996624969, 996624969, 996624969, 996624969, 996624969, 996624969, 996624969, 993900678, 993900678, 993900678, 993900678, 993900678, 993900678, 993900678, 993900678, 773474171, 773474171, 773474171, 773474171, 773474171, 773474171, 773474171, 773474171, 737294329, 737294329, 737294329, 737294329, 737294329, 737294329, 737294329, 737294329, 1030080520, 1030080520, 1030080520, 1030080520, 1030080520, 1030080520, 1030080520, 1030080520, 1006437429, 1006437429, 1006437429, 1006437429, 1006437429, 1006437429, 1006437429, 1006437429, 760937420, 760937420, 760937420, 760937420, 760937420, 760937420, 760937420, 760937420, 703971320, 703971320, 703971320, 703971320, 703971320, 703971320, 703971320, 703971320, 1063403529, 1063403529, 1063403529, 1063403529, 1063403529, 1063403529, 1063403529, 1063403529, 858754970, 858754970, 858754970, 858754970, 858754970, 858754970, 858754970, 858754970, 908619879, 908619879, 908619879, 908619879, 908619879, 908619879, 908619879, 908619879, 212796895, 212796895, 212796895, 212796895, 212796895, 212796895, 212796895, 212796895, 1554577954, 1554577954, 1554577954, 1554577954, 1554577954, 1554577954, 1554577954, 1554577954, 213627316, 213627316, 213627316, 213627316, 213627316, 213627316, 213627316, 213627316, 1553747533, 1553747533, 1553747533, 1553747533, 1553747533, 1553747533, 1553747533, 1553747533, 1392543802, 1392543802, 1392543802, 1392543802, 1392543802, 1392543802, 1392543802, 1392543802, 374831047, 374831047, 374831047, 374831047, 374831047, 374831047, 374831047, 374831047, 1069815283, 1069815283, 1069815283, 1069815283, 1069815283, 1069815283, 1069815283, 1069815283, 697559566, 697559566, 697559566, 697559566, 697559566, 697559566, 697559566, 697559566, 343739256, 343739256, 343739256, 343739256, 343739256, 343739256, 343739256, 343739256, 1423635593, 1423635593, 1423635593, 1423635593, 1423635593, 1423635593, 1423635593, 1423635593, 1428808680, 1428808680, 1428808680, 1428808680, 1428808680, 1428808680, 1428808680, 1428808680, 338566169, 338566169, 338566169, 338566169, 338566169, 338566169, 338566169, 338566169, 812141505, 812141505, 812141505, 812141505, 812141505, 812141505, 812141505, 812141505, 955233344, 955233344, 955233344, 955233344, 955233344, 955233344, 955233344, 955233344, 1061418447, 1061418447, 1061418447, 1061418447, 1061418447, 1061418447, 1061418447, 1061418447, 705956402, 705956402, 705956402, 705956402, 705956402, 705956402, 705956402, 705956402, 1051980240, 1051980240, 1051980240, 1051980240, 1051980240, 1051980240, 1051980240, 1051980240, 715394609, 715394609, 715394609, 715394609, 715394609, 715394609, 715394609, 715394609, 1565299993, 1565299993, 1565299993, 1565299993, 1565299993, 1565299993, 1565299993, 1565299993, 202074856, 202074856, 202074856, 202074856, 202074856, 202074856, 202074856, 202074856, 1144180762, 1144180762, 1144180762, 1144180762, 1144180762, 1144180762, 1144180762, 1144180762, 623194087, 623194087, 623194087, 623194087, 623194087, 623194087, 623194087, 623194087, 984522470, 984522470, 984522470, 984522470, 984522470, 984522470, 984522470, 984522470, 782852379, 782852379, 782852379, 782852379, 782852379, 782852379, 782852379, 782852379, 483958046, 483958046, 483958046, 483958046, 483958046, 483958046, 483958046, 483958046, 1283416803, 1283416803, 1283416803, 1283416803, 1283416803, 1283416803, 1283416803, 1283416803, 86640894, 86640894, 86640894, 86640894, 86640894, 86640894, 86640894, 86640894, 1680733955, 1680733955, 1680733955, 1680733955, 1680733955, 1680733955, 1680733955, 1680733955, 1230882303, 1230882303, 1230882303, 1230882303, 1230882303, 1230882303, 1230882303, 1230882303, 536492546, 536492546, 536492546, 536492546, 536492546, 536492546, 536492546, 536492546};
uint64_t gammas_inv_montgomery[RINGCT_N] = {8388608, 1761518878, 1738384673, 1548318683, 952591644, 87514776, 1517332390, 197490620, 487128891, 986299314, 1741771493, 1297244539, 1699631819, 1599628808, 1662594498, 1653046398, 1575609558, 876614396, 180985214, 1681738511, 535789074, 966927798, 1526257784, 1504612904, 132438409, 792015025, 460613924, 1720410614, 101728563, 1596158470, 352334944, 1413603385, 1758986241, 5855971, 28990176, 219056166, 814783205, 1679860073, 250042459, 1569884229, 1280245958, 781075535, 25603356, 470130310, 67743030, 167746041, 104780351, 114328451, 191765291, 890760453, 1586389635, 85636338, 1231585775, 800447051, 241117065, 262761945, 1634936440, 975359824, 1306760925, 46964235, 1665646286, 171216379, 1415039905, 353771464, 8388608, 1761518878, 1738384673, 1548318683, 952591644, 87514776, 1517332390, 197490620, 487128891, 986299314, 1741771493, 1297244539, 1699631819, 1599628808, 1662594498, 1653046398, 1575609558, 876614396, 180985214, 1681738511, 535789074, 966927798, 1526257784, 1504612904, 132438409, 792015025, 460613924, 1720410614, 101728563, 1596158470, 352334944, 1413603385, 1758986241, 5855971, 28990176, 219056166, 814783205, 1679860073, 250042459, 1569884229, 1280245958, 781075535, 25603356, 470130310, 67743030, 167746041, 104780351, 114328451, 191765291, 890760453, 1586389635, 85636338, 1231585775, 800447051, 241117065, 262761945, 1634936440, 975359824, 1306760925, 46964235, 1665646286, 171216379, 1415039905, 353771464, 8388608, 1761518878, 1738384673, 1548318683, 952591644, 87514776, 1517332390, 197490620, 487128891, 986299314, 1741771493, 1297244539, 1699631819, 1599628808, 1662594498, 1653046398, 1575609558, 876614396, 180985214, 1681738511, 535789074, 966927798, 1526257784, 1504612904, 132438409, 792015025, 460613924, 1720410614, 101728563, 1596158470, 352334944, 1413603385, 1758986241, 5855971, 28990176, 219056166, 814783205, 1679860073, 250042459, 1569884229, 1280245958, 781075535, 25603356, 470130310, 67743030, 167746041, 104780351, 114328451, 191765291, 890760453, 1586389635, 85636338, 1231585775, 800447051, 241117065, 262761945, 1634936440, 975359824, 1306760925, 46964235, 1665646286, 171216379, 1415039905, 353771464, 8388608, 1761518878, 1738384673, 1548318683, 952591644, 87514776, 1517332390, 197490620, 487128891, 986299314, 1741771493, 1297244539, 1699631819, 1599628808, 1662594498, 1653046398, 1575609558, 876614396, 180985214, 1681738511, 535789074, 966927798, 1526257784, 1504612904, 132438409, 792015025, 460613924, 1720410614, 101728563, 1596158470, 352334944, 1413603385, 1758986241, 5855971, 28990176, 219056166, 814783205, 1679860073, 250042459, 1569884229, 1280245958, 781075535, 25603356, 470130310, 67743030, 167746041, 104780351, 114328451, 191765291, 890760453, 1586389635, 85636338, 1231585775, 800447051, 241117065, 262761945, 1634936440, 975359824, 1306760925, 46964235, 1665646286, 171216379, 1415039905, 353771464, 8388608, 1761518878, 1738384673, 1548318683, 952591644, 87514776, 1517332390, 197490620, 487128891, 986299314, 1741771493, 1297244539, 1699631819, 1599628808, 1662594498, 1653046398, 1575609558, 876614396, 180985214, 1681738511, 535789074, 966927798, 1526257784, 1504612904, 132438409, 792015025, 460613924, 1720410614, 101728563, 1596158470, 352334944, 1413603385, 1758986241, 5855971, 28990176, 219056166, 814783205, 1679860073, 250042459, 1569884229, 1280245958, 781075535, 25603356, 470130310, 67743030, 167746041, 104780351, 114328451, 191765291, 890760453, 1586389635, 85636338, 1231585775, 800447051, 241117065, 262761945, 1634936440, 975359824, 1306760925, 46964235, 1665646286, 171216379, 1415039905, 353771464, 8388608, 1761518878, 1738384673, 1548318683, 952591644, 87514776, 1517332390, 197490620, 487128891, 986299314, 1741771493, 1297244539, 1699631819, 1599628808, 1662594498, 1653046398, 1575609558, 876614396, 180985214, 1681738511, 535789074, 966927798, 1526257784, 1504612904, 132438409, 792015025, 460613924, 1720410614, 101728563, 1596158470, 352334944, 1413603385, 1758986241, 5855971, 28990176, 219056166, 814783205, 1679860073, 250042459, 1569884229, 1280245958, 781075535, 25603356, 470130310, 67743030, 167746041, 104780351, 114328451, 191765291, 890760453, 1586389635, 85636338, 1231585775, 800447051, 241117065, 262761945, 1634936440, 975359824, 1306760925, 46964235, 1665646286, 171216379, 1415039905, 353771464, 8388608, 1761518878, 1738384673, 1548318683, 952591644, 87514776, 1517332390, 197490620, 487128891, 986299314, 1741771493, 1297244539, 1699631819, 1599628808, 1662594498, 1653046398, 1575609558, 876614396, 180985214, 1681738511, 535789074, 966927798, 1526257784, 1504612904, 132438409, 792015025, 460613924, 1720410614, 101728563, 1596158470, 352334944, 1413603385, 1758986241, 5855971, 28990176, 219056166, 814783205, 1679860073, 250042459, 1569884229, 1280245958, 781075535, 25603356, 470130310, 67743030, 167746041, 104780351, 114328451, 191765291, 890760453, 1586389635, 85636338, 1231585775, 800447051, 241117065, 262761945, 1634936440, 975359824, 1306760925, 46964235, 1665646286, 171216379, 1415039905, 353771464, 8388608, 1761518878, 1738384673, 1548318683, 952591644, 87514776, 1517332390, 197490620, 487128891, 986299314, 1741771493, 1297244539, 1699631819, 1599628808, 1662594498, 1653046398, 1575609558, 876614396, 180985214, 1681738511, 535789074, 966927798, 1526257784, 1504612904, 132438409, 792015025, 460613924, 1720410614, 101728563, 1596158470, 352334944, 1413603385, 1758986241, 5855971, 28990176, 219056166, 814783205, 1679860073, 250042459, 1569884229, 1280245958, 781075535, 25603356, 470130310, 67743030, 167746041, 104780351, 114328451, 191765291, 890760453, 1586389635, 85636338, 1231585775, 800447051, 241117065, 262761945, 1634936440, 975359824, 1306760925, 46964235, 1665646286, 171216379, 1415039905, 353771464};
// uint64_t omegas_inv_bitrev_montgomery[RINGCT_N/2] = {617572923, 3541178399, 2437116050, 3031784630, 703384371, 1436728993, 3025001626, 2636323393, 539265264, 521881049, 1107221994, 301124932, 351229466, 1713155949, 2657728954, 2994348334, 2984658461, 2213850133, 93407070, 1711093887, 408095610, 3213686063, 1577089226, 757830894, 538371927, 319714971, 3611288557, 388413559, 2765920975, 3598169589, 2665815739, 511849393, 1056702084, 1672756316, 2282537254, 1347679825, 2305968540, 960004629, 1110356471, 2872621584, 3494870886, 2301384920, 605305790, 2384125116, 2888176152, 2039580922, 1922876166, 1274128223, 2260670633, 3411881926, 3110839624, 297044213, 1366616489, 590099588, 317633119, 23060189, 401223810, 2869772849, 1946753034, 458764338, 3489002717, 2759223988, 2343804815, 1723777741, 722440862, 2628621592, 3341974574, 77446996, 1180738196, 2981797103, 3406461864, 1762124245, 1766105663, 683028850, 283242154, 2267768174, 536196320, 3084777161, 2916366652, 532726220, 3048584468, 177948221, 1943512961, 2775932430, 2496445391, 2412033110, 1850852240, 2983441770, 2050227362, 3372460574, 2607075181, 1769528344, 2423809532, 3203397718, 3061308918, 2580579949, 2089880507, 1551523504, 484300170, 3287877553, 1022821946, 2186912519, 3055869555, 3654151297, 355785702, 3585436167, 390247591, 2515688208, 1279919193, 1170151189, 547360330, 629375089, 2887824549, 3471554466, 2502894070, 78791311, 1730840982, 1824581294, 1289174721, 453745481, 1805701308, 1295933354, 1042628643, 2266806149, 1706245527, 2907443324, 2038233506, 1304739308, 3269106107, 321676398, 213279436, 1266488134, 3315296791, 60356595, 373514111, 828762858, 2367534624, 2404142783, 120362729, 300647605, 411357400, 1694215221, 2764653598, 808020468, 1568049177, 2899765965, 1656223299, 1153662842, 2745192926, 84569748, 179835405, 1111265830, 3142971477, 1813609861, 2172966481, 1244963023, 228466475, 3077252730, 3304719100, 1605904084, 626014396, 2069021990, 2308383861, 1564076501, 1411241349, 2714978766, 1291123143, 843555369, 3629513176, 2464735926, 3577356811, 2798964748, 1079959901, 2518541967, 2133060921, 717995215, 680206631, 1679960501, 2262456753, 1265359646, 984829334, 3185977544, 1504806617, 730928031, 3627907529, 2464299493, 1334301933, 2834446688, 2586426127, 2766528291, 3642133483, 236527771, 2937388523, 1895738277, 2418860543, 2829262317, 961037653, 1655864409, 2704191282, 423465815, 1832232561, 982967139, 2008603676, 2911629631, 84657857, 1587850373, 3058333178, 2858118995, 988758388, 970099207, 2310636723, 3183725645, 2692891062, 2154199710, 3354415921, 245150002, 1156865314, 2462421045, 2088677408, 3361144832, 2221227704, 812203082, 324644947, 1824376811, 1444253641, 1268746275, 1456336475, 85965848, 2055704352, 189855503, 202611585, 3009743148, 2978718931, 2365439950, 2978565932, 261244178, 3245804795, 2352359515, 944055858, 1975482375, 588091467, 2923236066, 3436119135, 2482959758, 2919789670, 1370438621, 2682261438, 183343680, 282530301, 3631141278, 134009684, 2936111137, 1747045737, 1968959183, 1097767299, 1456925552};
// uint64_t gammas_bitrev_montgomery[RINGCT_N] = {617572923, 680094322, 2008063598, 2846641828, 1260922165, 3245760790, 2030579602, 2390474475, 2632704801, 1413078435, 855081319, 3485087000, 454712109, 1355951416, 462271681, 918115961, 1532282267, 2135362243, 1868544410, 766410652, 2068078499, 226056772, 241745356, 3385132499, 995741790, 1078278353, 1424118039, 639377995, 3529879832, 3134676573, 199277969, 1708662565, 3261500733, 299999354, 1260400317, 1509453661, 1038402160, 2469175728, 1443174261, 1410817847, 2364097325, 2205334537, 2261541670, 2949221795, 1432788805, 1022643089, 1884178273, 2196990524, 641635345, 1125235083, 472224558, 1835833593, 1458783926, 2781222726, 602472843, 2284307163, 2947640204, 2426451510, 237524943, 229656563, 3067904209, 2112998614, 942255939, 2502854826, 993641253, 3650371083, 289742488, 3246598649, 1573914130, 1411285169, 3091833254, 14826690, 237391005, 1363710909, 3179683092, 2270932589, 671286989, 3003030589, 2480604829, 3144357786, 286517642, 1299892048, 3345698488, 2987731676, 3209045286, 771869886, 2827346742, 3249764206, 3080005667, 3391081455, 2496436180, 1949424608, 2345713541, 1014368104, 1917929076, 2603027813, 1653901059, 983339227, 2264130636, 3331050474, 635907891, 2891272511, 1617527843, 508486489, 3502863769, 2270268404, 1399247638, 3281626457, 1234461376, 1287498546, 1741684803, 817402941, 2042824348, 2534958670, 391358429, 1984946587, 2320164052, 2522267406, 218091872, 1170388385, 777264771, 3035552374, 2385864717, 1378372777, 308753935, 1892013519, 1248480931, 2836052432, 13574698, 2569128619, 2710896446, 1861229316, 2460661095, 3057275193, 417274781, 2382787655, 1291556058, 1592360796, 872420972, 1596722185, 315174470, 2853889296, 442805909, 1581941055, 860040692, 2507553708, 1521197497, 2794690922, 1613213804, 632537574, 322766768, 2712626998, 3169040131, 100338611, 960200310, 3554413899, 459435356, 1881131035, 2505680794, 846436675, 3059813363, 460093746, 2498622226, 3098224207, 876031948, 3542582767, 1006031644, 2897354034, 954450327, 1130663462, 472388014, 3476012582, 1133659855, 1880896204, 973904057, 702233992, 2531460487, 1414604156, 1156605125, 1819289404, 2007694868, 1825744939, 2084082977, 3424903405, 138203299, 3510653422, 1943346609, 2170283824, 3025852707, 3249257968, 628901514, 3100421829, 3296084565, 2614831786, 2461305279, 1299137252, 1846843299, 338029338, 1481823474, 541372473, 265294210, 2723656419, 1667344424, 851933097, 712656657, 3426422086, 881278443, 3227995166, 2449237864, 2677517022, 3157381258, 574364992, 1122261731, 1246713960, 2346687868, 3166032351, 2298874189, 1405981904, 1585011135, 2286439222, 1554820624, 1758945172, 2940044354, 2862518849, 2150727001, 517786806, 3170581455, 2436958824, 3469888871, 3258946676, 658669970, 1109864036, 918393189, 120589828, 1861227161, 16478594, 860537959, 1528863753, 1951378121, 2306075661, 862844924, 422057485, 1248782476, 3224388123, 3506409558, 889531321, 3002148243, 3588506564, 3298089160, 470697670, 2253292744, 502004007, 3590643458, 1120873958, 3384468884, 511645250, 3456778771, 1518735252, 526642967, 889342734, 2791463240, 2326814080, 1096751848, 2579556683, 605640572, 2104387258, 1176255642, 1597103038, 735641724, 692286276, 2746351214, 1190066974, 379619846, 3005713960, 76248151, 3145888831, 516484368, 826867894, 61721675, 1159659224, 3112059283, 56672136, 1832749621, 3584174222, 114038432, 1172659487, 1308506430, 609288112, 2124973373, 2802345210, 745228749, 58286602, 304517699, 1587221932, 1229913256, 3052018685, 111736577, 1886410595, 563990675, 703742652, 1321457411, 296562502, 2388316377, 2304135336, 2601028411, 242874556, 1587674960, 1688655849, 3276577818, 464534733, 3321848116, 193100535, 1743824429, 17084279, 1578358740, 3535431852, 614851362, 429459706, 1184950822, 3240131496, 2137735705, 1477499493, 626870112, 484268473, 1000990978, 822817635, 1973616439, 813783508, 109326756, 1218334921, 2033313897, 596547823, 532160606, 2495495564, 1910193018, 711766854, 2030702914, 3635392716, 2579962590, 179764565, 467152865, 507063002, 2549713120, 2107548292, 957445278, 214709918, 2710915255, 918215922, 735084180, 1471386347, 1150292008, 2396535385, 3077767476, 3144340100, 3218009152, 48503077, 2298017280, 1305222269, 1294926672, 2149941884, 1670803661, 666555489, 1181375055, 2220251825, 3083684955, 89660208, 2412545942, 3465369887, 3010928548, 2325232680, 900015981, 719478056, 3667655549, 2868435302, 1725309646, 2713444910, 839851714, 2487179263, 3503252161, 224350733, 3210335920, 67829553, 2399600529, 2421467342, 1791512744, 2007007266, 1378714023, 746973365, 133586513, 1712423810, 1991197996, 2850585502, 463719348, 1067333151, 133062350, 1096920854, 82876340, 3154289925, 2534637552, 782839426, 409743111, 3293948050, 155876795, 1087933541, 1784673769, 2106324154, 2452524598, 1972436494, 2977937585, 972967921, 3096910181, 753896059, 1056693598, 2062759350, 1138799163, 1974053948, 131917386, 923126372, 945707172, 2199095856, 2964303388, 3376237711, 1971952392, 1814267819, 2546800978, 943025460, 3380460368, 1358534485, 710914527, 3164527315, 2626437984, 1638607194, 731105266, 451523321, 2311818523, 424315174, 159806700, 1358129967, 3216063541, 3434420218, 727301756, 2527647186, 447821604, 3576599576, 2745668424, 232524281, 2677356177, 560853341, 2668822330, 3153708194, 3521602252, 2711578934, 1089096948, 692251200, 2234128545, 2458765842, 927946237, 1589111713, 3428819876, 3420500476, 1955171351, 1704341561, 1669550580, 2375351817, 3552391960, 3012628891, 134827203, 258671307, 727699177, 1406434466, 389319597, 3085155902, 1836283664, 1494917083, 1358927509, 1513157409, 1194896431, 499765738, 3012612208, 2190973531, 2366238546, 1188776296, 1496207352, 1262078668, 386770951, 3531231181, 1889682388, 813372218, 553309305, 2444653597, 723337325, 544894715, 2186373194, 3336696397, 279980268, 3596746727, 1747404703, 2964374246, 2029551716, 3264642296, 109679310, 252257159, 172713382, 3265414106, 2590854052, 3227739241, 2024629632, 920572395, 961106887, 216182405, 1235918650, 2128880};
// uint64_t gammas_inv_montgomery[RINGCT_N] = {8388608, 1711290050, 932915977, 2490238961, 3635710925, 1040717583, 127838072, 802010866, 2386624285, 2148381872, 834382347, 2191827261, 930612802, 197902379, 3299547404, 1248898267, 2814152067, 91789097, 3184870618, 262482428, 3654618996, 2104575283, 2041735860, 1138810451, 772933337, 263938941, 37240583, 3311602978, 1147643613, 359193747, 2191783936, 3277935738, 3333691903, 1072206738, 694135536, 2840588919, 3314540843, 3452721043, 2323497295, 3502252710, 3353829392, 1904718624, 64548180, 2450260998, 2428349773, 547069527, 530133805, 3661013794, 2909927916, 503191237, 1263060521, 1744597555, 3264818892, 994079298, 2343725451, 1355096133, 2572086737, 2847130535, 3303812353, 1677726829, 836686423, 363859371, 2119363028, 1449961035, 2594224127, 632246774, 3375025894, 701051173, 892925079, 1568204450, 3097496118, 3200903007, 1986849249, 2938274411, 2293945403, 3179036287, 1941248638, 1747006376, 2532223679, 1042628677, 1480373704, 1692648356, 3179987316, 1018212008, 2741374417, 1951267253, 3237344451, 373466200, 2609884324, 296628967, 2544496948, 1568019747, 2545954002, 2215117905, 1514009000, 1663146435, 1250425489, 2836280947, 1896959906, 2292844610, 1150233000, 32292131, 2205165489, 733467055, 1442123146, 898021905, 2350757656, 1274293342, 885936381, 1212132257, 473196170, 3113489911, 903203550, 1848838054, 3340267285, 209186448, 378219369, 2994455449, 1210983364, 1020714757, 3274811411, 2945768087, 2281875864, 2937295458, 613837436, 1168185251, 1231604460, 1758341329, 1082121625, 1580962490, 3017029133, 686601323, 3066234331, 2114244872, 1936792865, 3273553798, 1972438663, 2850428702, 1950941912, 3594421829, 3663975450, 1491006506, 699538263, 47338817, 416762267, 716539801, 2940840863, 3078510082, 2668470362, 2783770656, 3516711885, 906593153, 2476825203, 1636746787, 1864663280, 1558569813, 938601880, 2767848, 329919660, 390300599, 2056332056, 3095528919, 2147775938, 1126079329, 2514397017, 508184434, 1066919865, 1819683277, 2486296404, 1879157947, 818599455, 1407261377, 956022850, 141576992, 1413570045, 882260956, 3619805973, 1558394553, 1634651346, 1434493780, 859798839, 2453351060, 693590893, 1826354918, 2747483210, 3588459342, 1776661547, 443072085, 2250130991, 342530068, 1350554984, 102049457, 336299107, 2427821750, 2852146641, 1723284266, 868542552, 1963502005, 852806108, 3043114892, 2681207925, 480035791, 3485991004, 361083364, 2139144528, 2559082148, 2665070164, 1262251777, 3206435507, 2760685112, 625220988, 116735819, 3106416448, 2964193351, 2786144606, 3069443311, 323828867, 2414409255, 3644421394, 93541216, 2207518061, 2183235073, 2490352958, 1427866119, 2863790409, 2109532439, 881653842, 3405894757, 3596901471, 2654770984, 566201356, 1085030488, 1282224755, 3001914118, 2036788415, 1267894321, 446378538, 1032044699, 2688065530, 3497256690, 2770434862, 692949235, 2218637082, 2488679766, 939692534, 2530138369, 1444298660, 1425759042, 1362053401, 1428098531, 129214527, 1487666671, 1426098280, 3462942668, 2480075832, 2253334269, 2628496337, 2179250048, 761963828, 2528110461, 3280313390, 446226735, 2984403131, 668493015, 2445286803, 2377050875, 1972021641, 2898038985, 1956646080, 1609541360, 2250572627, 2664036184, 3559617314, 2188387609, 1090207649, 1800909499, 3498181656, 957889908, 1186992521, 3563170769, 1744807266, 420605156, 1490040226, 2772934127, 1428897735, 2059109021, 968152504, 3422666841, 1803804431, 1798962857, 2396438416, 2795145508, 2227881415, 2842405177, 1790340168, 2872876124, 1900651366, 741150822, 1398201649, 1822395753, 1192100601, 3670462099, 995792702, 2884203336, 2076341189, 525579260, 2294731279, 420320011, 882840965, 2472799630, 572219876, 3614413162, 946500851, 1593690915, 687142119, 755457391, 677677743, 2284351344, 1802694794, 1415733200, 1518294808, 2384677888, 3052642510, 2221869781, 1593136628, 1972956020, 886670649, 1546075139, 3557168397, 126055804, 996475395, 1282551965, 3028066296, 3090252973, 2277195062, 3511971723, 2972612426, 2960828312, 890784125, 1450854872, 3006958752, 64648676, 3638507329, 1838693641, 2385712952, 2516188283, 3396320550, 1277741510, 2143922079, 3443226362, 1431976404, 672039597, 858052903, 725967986, 570719474, 2244442802, 1464054365, 3044176474, 455593156, 2895553738, 2402908792, 1491562097, 3201091871, 2370414106, 1718881653, 2298528201, 701288308, 1060902360, 2872809618, 3060063262, 3324284088, 16396719, 3008504386, 3263928276, 446895809, 3257324328, 1585519504, 598291127, 414800796, 3214740340, 3137209746, 750651515, 901646984, 1856214159, 1399309166, 1733545607, 2659965637, 2808245609, 1350444510, 2516764461, 3618278578, 2266178834, 1633039458, 3454244153, 2179325335, 1538816749, 1866666055, 3220572540, 1436650079, 1662133530, 1016061915, 2304499233, 1481829890, 1431797575, 2375617335, 916547633, 2010110851, 215100283, 1027664921, 3088394168, 2717422720, 711049735, 3196326733, 2510562363, 3294393716, 3003103428, 2844822845, 292291696, 3326043442, 3416846709, 2604461975, 1638099560, 1478081008, 3036466222, 837816157, 1810274438, 2562405003, 3326585702, 349669176, 2953212920, 158523282, 2287321566, 1760449287, 3628268140, 900232929, 2511694154, 1439938287, 2131531361, 6564736, 1668373538, 2687117695, 42155490, 235373177, 2879104746, 2295616428, 438760709, 2440571882, 3210231063, 3129497804, 1779972541, 217091004, 342009423, 2179712147, 1199509426, 2909703490, 3617979120, 2189063498, 200699389, 1689514127, 2949646956, 833114266, 809451416, 1413630938, 490314023, 3520861472, 247090000, 131453837, 131108010, 2979345141, 769748307, 848003293, 321614625, 3268041992, 890812135, 3542356160, 1043726627, 539567038, 250171022, 1379380983, 594584209, 1226858187, 1910224526, 1122034263, 1069322820, 1178955866, 1640987146, 3287944038, 1494995629, 2164394208, 3371812747, 899203695, 3427019246, 2321147964, 430716222, 1188956160, 909398477, 1861244125, 2454112934, 2272778371, 866916232, 2698444277, 2939680426, 125664221, 2738275484, 1087910797, 1102177536, 2076178714, 1059016011, 1869975149, 871573482, 2416135615, 2705626489};
#elif (RINGCT_N == 1024)
uint64_t omegas_inv_bitrev_montgomery[RINGCT_N/2] = {760217598, 789162552, 1557236366, 1119153703, 380904293, 68536596, 936221214, 663065620, 1030080520, 773474171, 1006437429, 1063403529, 123256730, 626294242, 996624969, 264302150, 1144180762, 1565299993, 715394609, 705956402, 984522470, 1283416803, 1230882303, 86640894, 212796895, 858754970, 1553747533, 1392543802, 955233344, 338566169, 343739256, 1069815283, 1394378380, 867127053, 665049089, 529065445, 51435775, 831009315, 1542211044, 1511471729, 429412411, 93255017, 763462588, 413528479, 147580587, 19915823, 301260195, 892609856, 1073509634, 352612684, 346993533, 301580504, 229359505, 327755647, 1352774464, 1120821225, 191252097, 93982730, 1441538026, 1551934704, 1121747268, 37198953, 536097340, 900131499, 894669666, 1213083738, 1310316931, 896956133, 468775021, 1681291146, 227430458, 14548913, 49442882, 137495942, 1348639764, 959447858, 1247304622, 962182258, 686194989, 294979116, 545543755, 1535268690, 859073443, 1048956556, 436120034, 1481842494, 871157366, 1530108730, 711507255, 394833153, 621727930, 322128656, 1158509458, 452281537, 659389655, 1172879880, 1109802658, 1411023623, 1661571728, 688576921, 601569949, 1483364065, 978822065, 1513354284, 345278850, 57390125, 111209646, 358792648, 435383516, 740878224, 1355210884, 1462439497, 830427623, 1563648938, 116926869, 1520391579, 1393518150, 889501949, 105195314, 1735524312, 338265220, 1258436378, 33040092, 787425634, 1718430110, 228962738, 1350698897, 1509393031, 45729142, 882339366, 893710588, 433674141, 132152537, 815511879, 623217051, 1044528280, 831647935, 1335017734, 98045504, 563587965, 953934707, 1145717330, 1118903873, 1248959597, 83109997, 1473100784, 1496162909, 1477402516, 399840016, 316265529, 92998237, 532688134, 1349147067, 1271901035, 1682886375, 1641605827, 766506030, 632682188, 654812177, 1328693320, 683767108, 121623149, 566954520, 228707218, 1066558918, 1120602505, 332574954, 466380391, 1444733777, 24726910, 358971774, 847429922, 913712313, 951579811, 165242247, 686416191, 54727683, 1657871465, 862061005, 23137420, 652751554, 1522652773, 1238295355, 1646423323, 29253273, 1678920259, 1314133060, 1254659253, 1523852778, 43116177, 441852558, 1176954198, 950969165, 1188894762, 136303120, 1743969285, 284387682, 734540619, 1406493895, 1467643846, 1114074711, 776290632, 685664611, 827643794, 495544743, 1089757676, 63502722, 1622172543, 493107016, 572740546, 215585442, 576985631, 1542056229, 1408374935, 209971997, 1421022520, 285843739, 948016062, 881748954, 1605331335, 174449654, 157583543, 661372370, 42101248, 151469105, 1263431906, 1362143727, 932764264, 156216734, 485894638, 833979654, 58279870, 1273264370, 1129365347, 745581959, 1573832799, 1273494171, 593942027, 1480920226, 1413382646, 804788354, 1234421900, 1304343367, 153273291, 152832008, 899712399, 1588684575, 4531967, 1058140445, 1431527050, 611198325, 1294016114, 172613505, 46452731, 249243521, 49536622, 1256841516, 1541026228, 163777657, 1694231896, 391962621, 861103231, 1162162517, 1507077870, 684017634, 1207266173, 1172692736, 164589283, 1737391350, 1387252356, 951930036, 1585542574, 1024863502, 1508577937, 539745099, 485064605, 1197639366, 1445401656, 986009907, 1416072348, 232573795, 808429534, 1440945125, 1461292828, 742969963, 7604916, 1496602462, 991108424, 1160009716, 344765106, 1514670635, 918479784, 244052716, 284915513, 768512812, 994059359, 456916993, 961340437, 267239326, 1303469831, 1023232420, 132266714, 1476757839, 309865158, 1316573507, 1338878933, 88253661, 1116838662, 973340530, 848415564, 1337638957, 585443504, 857981258, 1156772563, 633371996, 402277364, 508431933, 1340079825, 245027275, 634819946, 891121004, 889345983, 483746536, 292446783, 349089407, 755884612, 1637094993, 578257502, 1504631160, 1368093466, 699597346, 1113927421, 1156303766, 1292579129, 487424645, 441280124, 791510128, 956479576, 1524503478, 131219193, 1042192668, 720657523, 1561063690, 1118541921, 32246780, 389410958, 1092987469, 526778660, 252578634, 1415638919, 1174339115, 1504544109, 1713691823, 1274411151, 1462961448, 317195269, 669901448, 721997465, 1647139370, 739161863, 1457937205, 885284600, 845153735, 1100506866, 753925509, 1469053408, 720014910, 1579014001, 738435363, 85426397, 1634602642, 435773402, 583858245, 280706551, 696362249, 51871621, 345830684, 477172836, 509923929, 117045231, 645121955, 91758628, 679371506, 681546576, 219615522, 1088913412, 969089636, 1696631707, 165066097, 1437473050, 899724764, 43424528, 1619698274, 1712168654, 319279487, 690062187, 1694481148, 435823680, 1252069154, 347586273, 507054550, 369096362, 399404164, 454083640, 517848885, 1523590624, 1090224803, 595567131, 754022301, 362772488, 563132344, 1255533448, 486853307, 1045645188, 1041753934, 888201682, 1582877943, 1626946314, 1328422791, 71341292, 677510928, 1254110948, 73641991, 1316998218, 958837061, 836473249, 1740207242, 607573673, 1324798473, 1337433061, 299694040, 1342527820, 461497365, 20158157, 1043547932, 71461479, 986052840, 231217391, 1276446648, 1427549600, 1092519451, 753523773, 1477751467, 517050291, 1574613732, 926884388, 801268419, 1167530756, 71175954, 795170190, 511714173, 40578592, 266839206, 667992124, 28443621, 424095339, 291050930, 1029316511, 1273619315, 382471931, 44234163, 247344212, 1130739371, 1486248539, 135027375, 857931226, 736435238, 1166424426, 1313081194, 1594197436, 1738479151, 1041334966, 860664447, 1745843272, 303356743, 732848573, 182103331, 31461133, 412836702, 1285527457, 1241315132, 1570010432, 623862312, 757006064, 678498930, 1667730314, 1011581041, 1625093707, 278870085, 414576309, 1461716101, 507235975, 594764421, 591932506, 729079637, 309245917, 730841744, 1116617122, 1513290023, 1208519866, 1410587581, 1566360465, 116499920, 702930442, 1588442419, 303121374, 636468423, 358243192, 896773506, 802721640, 910557968, 243861235};
uint64_t gammas_bitrev_montgomery[RINGCT_N] = {760217598, 978212297, 648221146, 210138483, 1104309229, 831153635, 1698838253, 1386470556, 1503072699, 770749880, 1141080607, 1644118119, 703971320, 760937420, 993900678, 737294329, 697559566, 1423635593, 1428808680, 812141505, 374831047, 213627316, 908619879, 1554577954, 1680733955, 536492546, 483958046, 782852379, 1061418447, 1051980240, 202074856, 623194087, 867243350, 1231277509, 1730175896, 645627581, 215440145, 325836823, 1673392119, 1576122752, 646553624, 414600385, 1439619202, 1538015344, 1465794345, 1420381316, 1414762165, 693865215, 874764993, 1466114654, 1747459026, 1619794262, 1353846370, 1003912261, 1674119832, 1337962438, 255903120, 225163805, 936365534, 1715939074, 1238309404, 1102325760, 900247796, 372996469, 257981818, 416675952, 1538412111, 48944739, 979949215, 1734334757, 508938471, 1429109629, 31850537, 1662179535, 877872900, 373856699, 246983270, 1650447980, 203725911, 936947226, 304935352, 412163965, 1026496625, 1331991333, 1408582201, 1656165203, 1709984724, 1422095999, 254020565, 788552784, 284010784, 1165804900, 1078797928, 105803121, 356351226, 657572191, 594494969, 1107985194, 1315093312, 608865391, 1445246193, 1145646919, 1372541696, 1055867594, 237266119, 896217483, 285532355, 1331254815, 718418293, 908301406, 232106159, 1221831094, 1472395733, 1081179860, 805192591, 520070227, 807926991, 418735085, 1629878907, 1717931967, 1752825936, 1539944391, 86083703, 1298599828, 870418716, 457057918, 554291111, 872705183, 1717838227, 1518131328, 1720922118, 1594761344, 473358735, 1156176524, 335847799, 709234404, 1762842882, 178690274, 867662450, 1614542841, 1614101558, 463031482, 532952949, 962586495, 353992203, 286454623, 1173432822, 493880678, 193542050, 1021792890, 638009502, 494110479, 1709094979, 933395195, 1281480211, 1611158115, 834610585, 405231122, 503942943, 1615905744, 1725273601, 1106002479, 1609791306, 1592925195, 162043514, 885625895, 819358787, 1481531110, 346352329, 1557402852, 358999914, 225318620, 1190389218, 1551789407, 1194634303, 1274267833, 145202306, 1703872127, 677617173, 1271830106, 939731055, 1081710238, 991084217, 653300138, 299731003, 360880954, 1032834230, 1482987167, 23405564, 1631071729, 578480087, 816405684, 590420651, 1325522291, 1724258672, 243522071, 512715596, 453241789, 88454590, 1738121576, 120951526, 529079494, 244722076, 1114623295, 1744237429, 905313844, 109503384, 1712647166, 1080958658, 1602132602, 815795038, 853662536, 919944927, 1408403075, 1742647939, 322641072, 1300994458, 1434799895, 646772344, 700815931, 1538667631, 1200420329, 1645751700, 1083607741, 438681529, 1112562672, 1134692661, 1000868819, 125769022, 84488474, 495473814, 418227782, 1234686715, 1674376612, 1451109320, 1367534833, 289972333, 271211940, 294274065, 1684264852, 518415252, 648470976, 621657519, 813440142, 1203786884, 1669329345, 432357115, 935726914, 722846569, 1144157798, 951862970, 1635222312, 1333700708, 873664261, 885035483, 1721645707, 1523513614, 856816881, 964653209, 870601343, 1409131657, 1130906426, 1464253475, 178932430, 1064444407, 1650874929, 201014384, 356787268, 558854983, 254084826, 650757727, 1036533105, 1458128932, 1038295212, 1175442343, 1172610428, 1260138874, 305658748, 1352798540, 1488504764, 142281142, 755793808, 99644535, 1088875919, 1010368785, 1143512537, 197364417, 526059717, 481847392, 1354538147, 1735913716, 1585271518, 1034526276, 1464018106, 21531577, 906710402, 726039883, 28895698, 173177413, 454293655, 600950423, 1030939611, 909443623, 1632347474, 281126310, 636635478, 1520030637, 1723140686, 1384902918, 493755534, 738058338, 1476323919, 1343279510, 1738931228, 1099382725, 1500535643, 1726796257, 1255660676, 972204659, 1696198895, 599844093, 966106430, 840490461, 192761117, 1250324558, 289623382, 1013851076, 674855398, 339825249, 490928201, 1536157458, 781322009, 1695913370, 723826917, 1747216692, 1305877484, 424847029, 1467680809, 429941788, 442576376, 1159801176, 27167607, 930901600, 808537788, 450376631, 1693732858, 513263901, 1089863921, 1696033557, 438952058, 140428535, 184496906, 879173167, 725620915, 721729661, 1280521542, 511841401, 1204242505, 1404602361, 1013352548, 1171807718, 677150046, 243784225, 1249525964, 1313291209, 1367970685, 1398278487, 1260320299, 1419788576, 515305695, 1331551169, 72893701, 1077312662, 1448095362, 55206195, 147676575, 1723950321, 867650085, 329901799, 1602308752, 70743142, 798285213, 678461437, 1547759327, 1085828273, 1088003343, 1675616221, 1122252894, 1650329618, 1257450920, 1290202013, 1421544165, 1715503228, 1071012600, 1486668298, 1183516604, 1331601447, 132772207, 1681948452, 1028939486, 188360848, 1047359939, 298321441, 1013449340, 666867983, 922221114, 882090249, 309437644, 1028212986, 120235479, 1045377384, 1097473401, 1450179580, 304413401, 492963698, 53683026, 262830740, 593035734, 351735930, 1514796215, 1240596189, 674387380, 1377963891, 1735128069, 648832928, 206311159, 1046717326, 725182181, 1636155656, 242871371, 810895273, 975864721, 1326094725, 1279950204, 474795720, 611071083, 653447428, 1067777503, 399281383, 262743689, 1189117347, 130279856, 1011490237, 1418285442, 1474928066, 1283628313, 878028866, 876253845, 1132554903, 1522347574, 427295024, 1258942916, 1365097485, 1134002853, 610602286, 909393591, 1181931345, 429735892, 918959285, 794034319, 650536187, 1679121188, 428495916, 450801342, 1457509691, 290617010, 1635108135, 744142429, 463905018, 1500135523, 806034412, 1310457856, 773315490, 998862037, 1482459336, 1523322133, 848895065, 252704214, 1422609743, 607365133, 776266425, 270772387, 1759769933, 1024404886, 306082021, 326429724, 958945315, 1534801054, 351302501, 781364942, 321973193, 569735483, 1282310244, 1227629750, 258796912, 742511347, 181832275, 815444813, 380122493, 29983499, 1602785566, 594682113, 560108676, 1083357215, 260296979, 605212332, 906271618, 1375412228, 73142953, 1603597192, 226348621, 510533333, 1627612574, 1007678975, 1446101506, 833986368, 534715905, 595697354, 904396361, 799848569, 410902410, 1604405502, 72195592, 264286163, 343976256, 929476610, 766098252, 1448337434, 896584193, 1413477839, 417265777, 955298963, 967847572, 1007368847, 418032121, 1412404571, 1341665307, 1441015584, 1345617955, 616115399, 1564408868, 357926479, 1288586905, 102438176, 716338204, 904813120, 1645917323, 1712593693, 1043135260, 178213299, 1486022722, 501494437, 1309004735, 1070184794, 131463986, 1742360621, 1378722506, 345138972, 981903461, 1694531538, 466928335, 34566231, 499515188, 1196543390, 705722797, 1004185689, 1189894432, 1224337269, 1231904729, 974589133, 1067994665, 1087262117, 1430968858, 1129024685, 848330441, 27892363, 1068704651, 1556691889, 43242694, 413834825, 1541172405, 390078540, 146423915, 1716527096, 1263836269, 1003336303, 1449626651, 699410453, 1097954475, 1258795489, 97164884, 1510758188, 400264838, 1016451825, 701594263, 28421949, 1594543213, 913082296, 710215822, 1165860372, 1346895039, 391476028, 164368670, 97941635, 1109643755, 484739883, 293404563, 446467891, 1617176610, 1257977342, 38835419, 30322664, 1330898942, 1211068130, 1716538013, 1558164695, 25252464, 430095250, 977851229, 1748621148, 465214970, 1385155261, 282771228, 968037723, 151778090, 331570812, 687807079, 89073528, 525994769, 306489884, 829836754, 409766488, 516793130, 1267240162, 1712022666, 248836432, 669037669, 230877728, 1199022322, 933001229, 37717007, 1486823273, 1004359248, 666197230, 1257411932, 1684654133, 1337040449, 1673448459, 131981110, 101115414, 409858721, 688128876, 477956918, 1377143715, 645256361, 1294556156, 1444816416, 31650025, 6938559, 1101305859, 184418776, 955997784, 715061410, 538821575, 1524427755, 1718570040, 1195839812, 1350215245, 1339513932, 1673637882, 1530027141, 1540655318, 193301481, 1683971181, 450775300, 1002814750, 332570803, 893911361, 1443421537, 349973679, 594099210, 1235296066, 1680351014, 715064696, 1270933607, 59194151, 1291416714, 620919777, 1497277364, 627489620, 1640763305, 345611922, 7375297, 1653004844, 857667436, 773557986, 1033670081, 1024553764, 1345686491, 1592850083, 1135413944, 1182077829, 905072231, 337262220, 1484419825, 482090125, 435172779, 1497191341, 1685595579, 1707315912, 823463734, 595040202, 675176824, 1046758141, 1368751158, 449807649, 1052610875, 1382276914, 467283166, 672352519, 411376853, 507805178, 1510492880, 390794385, 712155039, 1470224520, 1174916803, 123207464, 503794497, 1582323669, 920662539, 1362868235, 122230222, 482963839, 1042119319, 1571851795, 868399176, 1010638073, 321627550, 1159996263, 1220160484, 520635608, 1510560791, 1482505280, 1106867781, 143773510, 729491474, 471305448, 1308857222, 1464459780, 359522902, 816674128, 1246083251, 1051329255, 182559998, 617861876, 771380279, 1396896444, 943358012, 1214760309, 136229120, 204540094, 525300944, 1258452063, 791725626, 1455128802, 663149028, 1108461197, 903276659, 556617243, 1228138464, 65742321, 1029333880, 605115536, 1008089974, 1761629085, 102729440, 1391827295, 916944181, 260090542, 224480241, 1152671617, 51768457, 1305224349, 230767952, 681110403, 1397885289, 645035872, 68659919, 802945888, 1417115901, 996959236, 1538053977, 1738086984, 1449162939, 625010356, 1629095818, 1357940259, 1722192945, 900842555, 250821077, 180690331, 708242296, 736974091, 35295699, 230429043, 669166190, 1596966609, 1736132265, 1707826372, 760223260, 1684200057, 1177679008, 618966159, 594318439, 582362858, 265734518, 1334805391, 1560389628, 671359703, 1355646960, 998211738, 302207399, 1753748688, 1054783657, 1235540474, 1131997938, 1093213940, 921628077, 285821445, 1504598245, 275646087, 1357486799, 1721134247, 1309851027, 31381886, 1303515754, 1213106063, 1584541894, 114996553, 103642308, 446092575, 1669038269, 1473828211, 352555908, 96649379, 1522766622, 100132978, 593584823, 1434207930, 107245496, 806179495, 382148741, 1245510010, 328825181, 859063472, 1476892759, 1041276985, 254547976, 62896285, 716014541, 548031247, 916839398, 838762247, 1676549095, 409850516, 1177198108, 434739525, 228718109, 45192131, 417397453, 100864071, 1380187445, 1531942740, 1459482375, 130687906, 524644941, 860132759, 1525059681, 33718072, 1435702078, 1231776996, 1722590929, 81436396, 1584220993, 1068387053, 799706, 450437322, 1200798949, 720611411, 825899832, 7255300, 1418139535, 950861918, 410156992, 1579001222, 242558141, 1635930702, 503671491, 502472591, 654367157, 921345953, 680476505, 1582149577, 945559268, 1375206984, 1237916573, 32118735, 1634741, 1629539533, 139351763, 937209839, 978642444, 87767396, 1321600608, 1282400560, 686781590, 561254233, 231124257, 1644402544, 528921192, 148550185, 623372442, 1543106811, 268336494, 1527042130, 102926680, 1119204646, 1072606079, 1444698892, 1739876664, 138073267, 653530112, 423065210, 1222740822, 219861535, 520897961, 1323951560, 139064536, 322146457, 521296669, 1321497677, 576034040, 1153167281, 1364776166, 1098208934, 1099306465, 1348057216, 1047619265, 853965757, 335256942, 1670917773, 1188689900, 1401312407, 1580235290, 1201568664, 530810845, 1169410726, 288565635, 1587417035, 453290515, 1379478305, 789508120, 749313915, 488777418, 1234552858, 205630606, 75753626, 37372682, 1416107855, 681815852, 1446566699, 938353547, 661789064, 1257678973, 1335992387, 873176597, 1434382258, 1587975623, 1600889224, 1023890611, 1367933342, 754973614, 45919381, 1683134045, 1236750949, 900634079, 323334860, 1254313565, 838108219, 171727583, 1015316385, 685480310, 1224388789, 1513896040, 1021730280, 936169373, 1594948609, 1701735474, 441639485, 1586028097, 630692203, 517181183, 1330274886, 1184771863, 748371752, 1394486134, 1242653249, 1442626579, 784976527, 452501611, 1283302333, 1439178739, 893929643, 379789935, 1578184038, 201321385, 1324212755, 39016983, 1187998273, 1212713808, 317009106, 901269943, 1539280072};
uint64_t gammas_inv_montgomery[RINGCT_N] = {4194304, 343687197, 1250816633, 1125964175, 1121913458, 671579287, 1267063237, 21526242, 273574117, 1674349181, 1139998556, 1124991347, 309874089, 1116421759, 410846084, 1123567514, 643415842, 1602417889, 21844246, 914945501, 1208834142, 1336793697, 1342610484, 1413118685, 605166992, 506336915, 1467006776, 367849182, 1682951120, 100951439, 339498814, 496974139, 1723617461, 994660776, 1302368652, 579122339, 1579327243, 1422151521, 956672579, 597959995, 754773782, 1629898501, 1574841184, 1713263970, 318056718, 1286991479, 581777687, 1686326241, 1323127582, 114334104, 1211178069, 453268782, 1762250438, 196660742, 1731580538, 1399997675, 927647189, 1737118421, 1265843945, 1759206826, 1543787015, 269699831, 635864049, 43460360, 1754573171, 616349621, 52446546, 642593807, 1438530173, 348202424, 716125865, 1035171038, 1653510301, 1125414901, 1119886263, 1272997149, 734617564, 357285371, 1018595910, 1526271879, 1665963029, 257122005, 1766095105, 1394448897, 303452473, 302928623, 1207376813, 917067929, 1101494563, 1517231899, 351792023, 1668469392, 1350937887, 5930215, 1648556495, 597526043, 940851650, 988539208, 271201587, 109013169, 1004095639, 122444092, 171605598, 369558035, 1231298608, 936977228, 6935299, 301699829, 1279209577, 1242851855, 665332013, 1167979764, 661226386, 265722630, 1198648561, 1673592347, 619645336, 567725907, 838153634, 1751890937, 1539879522, 1670902421, 1277542206, 17351245, 1276511869, 1594785260, 1239058798, 208059090, 267894537, 994714150, 5560632, 162736483, 1392972320, 448740435, 1130659758, 579676868, 1579703869, 1586702434, 664832428, 1163462083, 1156665563, 1303752121, 1481127402, 725564013, 1327307319, 1235465876, 476601085, 17654546, 984834202, 270913042, 414890112, 226004066, 613300431, 431707012, 649612153, 1015267159, 1052983276, 1193748423, 687591493, 342862773, 487679912, 1003204968, 543118498, 399960605, 414618949, 1605007736, 350873968, 1482611083, 935891883, 263756060, 1278222247, 648259647, 1263176827, 1090882890, 260175106, 75966316, 191804656, 1398334410, 246035712, 498360863, 549490189, 638888907, 1367916927, 35561974, 764231642, 1682771835, 1648854335, 1511261952, 1753716483, 1183749078, 117016311, 1689448917, 176167472, 1650482840, 1344487328, 1304216332, 244290809, 1290932569, 450402287, 1532558391, 142746135, 219605394, 184080115, 1135338905, 1037781083, 1254111480, 1016628926, 713375629, 588693754, 675009816, 1043474259, 249881405, 1448966026, 1171134124, 869447605, 1430786453, 1388090588, 523437064, 1096715776, 4102362, 617408511, 1490592611, 654716633, 252782035, 1657846766, 841266793, 699736117, 1502171384, 1688729598, 560509850, 561409843, 1725922389, 190986077, 308810571, 314369923, 492642961, 17429881, 460109483, 1265300652, 1373911290, 1209261857, 1537091481, 778900868, 1622658732, 923146506, 659283018, 491708077, 1009277785, 1054508875, 1571851577, 161143538, 410125993, 219364472, 857733943, 1102033132, 1435177625, 640122979, 362140341, 1558694596, 388644128, 1333307709, 161310912, 712038601, 938692422, 1100711031, 1169053454, 483738969, 1553928380, 856205301, 892038062, 226599433, 297487133, 1766298359, 101012703, 810950659, 660567972, 842818243, 1350885230, 210137480, 1399273694, 636772965, 140036812, 1257921730, 1755384725, 914358827, 942769631, 815258585, 1019688095, 799814404, 1393838385, 312924407, 889161096, 724634985, 701622491, 1539939228, 1208539662, 161352475, 131607779, 129209221, 1392785458, 604293733, 246206677, 1702507848, 1373520743, 226438573, 675926906, 1386025642, 1410478857, 972552833, 281235792, 394536146, 828953620, 1068478475, 352228813, 633294724, 1605516446, 320574893, 1547053289, 1259696831, 2544212, 1676882242, 294264814, 442988920, 1206802244, 773322244, 1291694702, 1106647029, 931714774, 1734172840, 1650902114, 825688257, 958015050, 1155331483, 264821792, 244603001, 152629078, 118110305, 713208256, 169404272, 233293706, 1108411743, 651193538, 1530892894, 1642214623, 1467167804, 1478592765, 982892034, 1034637609, 1093255724, 1490438402, 1539250690, 1129514802, 752306452, 168385, 48007877, 372297199, 486635956, 1662047644, 124818478, 1272569893, 1446954933, 1093840419, 751856491, 553157632, 66447259, 640103164, 319597367, 750615084, 39378696, 43669134, 1167362080, 1227210524, 1651293446, 1571157599, 589992749, 130791416, 504010250, 1602509657, 730575669, 89830286, 1124191626, 247946155, 1424531952, 1231747993, 832823143, 915187336, 1179960141, 327731134, 1058617187, 142550294, 946700334, 388827613, 1667491733, 259250283, 745484038, 1386664868, 1425283930, 872125130, 46628481, 352868413, 933520146, 1056800812, 366652325, 1691613675, 1363826861, 97362392, 1755365101, 1428705956, 137306089, 954306388, 812805975, 94975021, 1315989858, 1006258618, 1573330145, 1379354359, 886615410, 625904666, 1238470485, 1446207373, 723264707, 1469015067, 603421921, 1577100114, 680875828, 785741191, 1309796093, 1438237625, 391996155, 336618793, 804265414, 596134290, 332703853, 1460498427, 1691013297, 1319331056, 341221817, 494912587, 125515074, 1074288276, 355648842, 1006612993, 1310677610, 921559623, 389890650, 604449946, 966646890, 436825006, 758666195, 1129731982, 1457633108, 1281355648, 772593224, 392314149, 384384068, 1097381673, 1248533409, 1169122987, 654611809, 1469898322, 1101219391, 1571038752, 589653870, 150124068, 1044495160, 1631349829, 1190623075, 872835809, 1092688986, 1203313903, 69330750, 1298649228, 1540872633, 614353202, 777381540, 402115908, 1489216836, 1550965702, 295849784, 797735427, 235065155, 311201620, 281065750, 428775097, 1738673130, 1138728076, 308236794, 879007027, 1396939104, 1344831722, 810618304, 186484265, 963727088, 709189817, 280007385, 993264746, 780653837, 1381140406, 975402165, 242888441, 639033737, 286553189, 547909273, 1629504434, 192899714, 1016714092, 466670489, 1505304121, 219439306, 929744557, 415117697, 880977411, 787804779, 756812782, 1016364685, 834713162, 818962908, 1656513377, 1761534433, 416509464, 1613223821, 667661622, 113055382, 1060576621, 1696045895, 393773674, 1081222486, 1229775329, 420253140, 1268407018, 576804653, 1143288482, 695677429, 1721604746, 426173007, 1578959553, 431140001, 593626974, 1521808255, 228057449, 1378543517, 82889819, 1216603422, 1146499695, 1283910950, 1527831670, 634897605, 1031768200, 29053807, 165928028, 590636030, 1373581649, 301814934, 427473563, 1616425135, 236920227, 107568341, 177192667, 950111424, 173362262, 1194703133, 214515798, 75523435, 382705013, 1587768904, 1375822620, 529886950, 1028572505, 149958873, 1247727211, 1386022881, 291055755, 1526947059, 236404869, 1047017359, 1455955346, 230306962, 1074897208, 227278683, 102635872, 1316479153, 1701787892, 529813352, 803483245, 1094387842, 631371033, 398304989, 1511096387, 1202020689, 729782572, 168422536, 495912170, 1144397246, 1625109506, 1732068666, 1219100685, 1108085332, 602036130, 1048469733, 244391614, 1689763054, 498574421, 456515864, 278905922, 272077360, 435281954, 571694972, 871197526, 176885732, 84635749, 59471850, 38221739, 258408939, 1237099970, 1753921503, 1152985582, 1324190764, 1472768926, 1522669949, 607851465, 114838629, 1072888662, 1644811230, 112461638, 1750207109, 244884373, 520641213, 1417928381, 769688211, 340191092, 1662827640, 184533872, 398197902, 1478476337, 1595245638, 994568601, 646904024, 1528209010, 58978385, 1008798721, 1291079027, 923346218, 1549019866, 358485027, 1203784943, 1421377906, 1282060167, 236509479, 205304222, 927018978, 767060857, 1702200478, 313114637, 1300262342, 1664470065, 953408493, 824090637, 825851483, 343742686, 901773812, 1090170051, 13559034, 491395086, 493461756, 496796822, 265187846, 620321844, 558040636, 915229067, 321337826, 205290979, 59094240, 493149657, 1323300125, 1672133062, 30354742, 1669304438, 1336187525, 940405770, 1485089740, 336281800, 372669827, 1569594136, 1389476345, 1508131463, 931271675, 1002608994, 1411700354, 222967882, 1400807189, 311499891, 91864737, 710853238, 324575008, 1355098119, 45185053, 1331577647, 1595296698, 899495120, 1161165444, 1079598626, 532423715, 193110321, 897424537, 936077600, 184234968, 657216499, 438213527, 743278225, 1242729175, 1657339530, 1060788794, 1571555952, 829109371, 1228414157, 1615614717, 919270681, 1758947223, 1622636428, 1414792833, 1686274554, 783757403, 507559055, 1241210350, 1486973950, 1643001573, 47906791, 1143621026, 194030138, 1048088191, 940352511, 1655181193, 865281974, 621703550, 1612617228, 194625090, 1724556680, 178020594, 573023491, 714230039, 532211070, 930864473, 215039186, 377945563, 1434707794, 536797926, 210222652, 448307310, 1451679523, 1531953734, 419437060, 238299987, 1586186216, 40651844, 524272128, 736556531, 633466490, 694279505, 822458313, 341696267, 1018535277, 1219756198, 1705330185, 1020782765, 8675124, 1710945031, 263128612, 885727120, 817468220, 1462423006, 1175301884, 983019471, 171292758, 1570957371, 175978019, 173667795, 489320350, 1706448159, 775238041, 1200153790, 1760448184, 739533381, 828496588, 927164746, 930804794, 1042976045, 152780729, 797270459, 190078067, 1678652064, 1360119846, 846358796, 1062132919, 631436385, 1759054850, 129864233, 705099319, 1562121599, 470198208, 60606529, 798079235, 1364071029, 171342944, 1555530524, 187845592, 1016073380, 1671164978, 872877401, 643078516, 1375074666, 454053520, 176531910, 830746375, 275002243, 1143719311, 1230983320, 1394863729, 1564522104, 432578663, 542646940, 1525764164, 1553012508, 705984155, 294065571, 1059493334, 754239428, 66011736, 1418265790, 91625137, 1741266350, 1447527972, 551968726, 1752879761, 1743532025, 492057052, 94174059, 226650091, 1436170926, 257840737, 1354358654, 356483073, 1215773095, 448109388, 774945246, 190662966, 1738435743, 450846980, 739744226, 1051508605, 307945515, 431034968, 1599262041, 1267676337, 229178424, 592594870, 186571597, 980691120, 258222115, 467081754, 814469248, 1604946355, 1240892438, 651179252, 1138183157, 1668629539, 1595591373, 394944100, 1717856630, 548729915, 933516675, 208340347, 1762623239, 414543059, 1766736636, 1263911297, 308620632, 1094095323, 805985116, 1000041881, 1372839106, 1354661930, 1231852407, 21104273, 762950647, 1456202790, 1065365372, 133403236, 310892261, 1157156811, 753601994, 29455486, 599403355, 688192584, 1531640168, 235079319, 884891193, 1733503334, 1617020422, 474382604, 441710676, 1506050192, 394070353, 414270887, 1397516440, 136364416, 1731694979, 722012641, 773943005, 101538462, 290655826, 699424716, 1698859689, 690130895, 1042557275, 1604380170, 1437226030, 706369818, 148715546, 1640940532, 328341505, 1692910846, 1062669908, 430483886, 1729641158, 113969746, 1477638859, 755828030, 45290484, 1329067651, 994325449, 1499509220, 1001697187, 1315695628, 531971329, 837668329, 1076969388, 343232743, 733020911, 1601049831, 16679345, 1230265542, 1173677871, 570581089, 1653909644, 40791448, 1342754160, 1464179019, 648298600, 1280538268, 338185379, 1050772908, 186894553, 70732928, 1276281083, 212342752, 1418603657, 443574090, 1270200351, 867114360, 1563311241, 763128892, 31384273, 1026763870, 307728530, 1580465768, 1431138108, 495687664, 1397872900, 808033602, 395636171, 670100314, 1634740312, 224231961, 645246542, 728077207, 1240503504, 1215941898, 919079705, 542251531, 367226041, 1217466489, 1198956968, 1195669847, 1114574109, 759121092, 903443143, 248353142, 937506935, 902327201, 579694513, 60710318, 884537806, 907169542, 644836634, 1202230472, 123420498, 1644403857, 1722588794, 963948601, 57103094, 871025199, 1543679574, 1138871650, 1727489182, 883728539, 809226546, 165220838, 47627107, 589428667, 916037846, 1143200166, 1298192228, 1178248634, 1239633818, 436080071, 1564394808, 652157921, 325968055, 304433125, 25852447, 693881080, 197602374, 464519234, 712954663};
#elif (RINGCT_N == 4)
uint64_t omegas_inv_bitrev_montgomery[RINGCT_N/2] = {760217598, 978212297};
uint64_t gammas_bitrev_montgomery[RINGCT_N] = {760217598, 789162552, 210138483, 648221146};
uint64_t gammas_inv_montgomery[RINGCT_N] = {1073741824, 721632138, 1570084211, 1272996516};
#else
#error "RINGCT_N must be either 512 or 1024 or 4"
#endif