1 /**************************************************************************/
2 /*                                                                        */
3 /*       Copyright (c) Microsoft Corporation. All rights reserved.        */
4 /*                                                                        */
5 /*       This software is licensed under the Microsoft Software License   */
6 /*       Terms for Microsoft Azure RTOS. Full text of the license can be  */
7 /*       found in the LICENSE file at https://aka.ms/AzureRTOS_EULA       */
8 /*       and in the root directory of this software.                      */
9 /*                                                                        */
10 /**************************************************************************/
11 
12 
13 /**************************************************************************/
14 /**************************************************************************/
15 /**                                                                       */
16 /** NetX Crypto Component                                                 */
17 /**                                                                       */
18 /**   Elliptical Curve Cryptography                                       */
19 /**                                                                       */
20 /**************************************************************************/
21 /**************************************************************************/
22 
23 #include "nx_crypto_ec.h"
24 static NX_CRYPTO_CONST HN_UBASE           secp521r1_fixed_points_data[][68 >> HN_SIZE_SHIFT] =
25 {
26 
27     /* 2G.x */
28     {
29         HN_ULONG_TO_UBASE(0x876B33AC), HN_ULONG_TO_UBASE(0x45D90CF8),
30         HN_ULONG_TO_UBASE(0x3ED58F0B), HN_ULONG_TO_UBASE(0xE53E1A99),
31         HN_ULONG_TO_UBASE(0x49D916B3), HN_ULONG_TO_UBASE(0xD5D181F5),
32         HN_ULONG_TO_UBASE(0x2EC09BE2), HN_ULONG_TO_UBASE(0x1B1EF040),
33         HN_ULONG_TO_UBASE(0xB2113B57), HN_ULONG_TO_UBASE(0xE5787176),
34         HN_ULONG_TO_UBASE(0x8073044E), HN_ULONG_TO_UBASE(0x11D02E70),
35         HN_ULONG_TO_UBASE(0xA2AE38DD), HN_ULONG_TO_UBASE(0x9D1C19E7),
36         HN_ULONG_TO_UBASE(0x3634F6FA), HN_ULONG_TO_UBASE(0x2662D494),
37         HN_ULONG_TO_UBASE(0x00000130)
38     },
39 
40     /* 2G.y */
41     {
42         HN_ULONG_TO_UBASE(0x6BD6208E), HN_ULONG_TO_UBASE(0x454C8A73),
43         HN_ULONG_TO_UBASE(0xAE37911A), HN_ULONG_TO_UBASE(0xD2447CEF),
44         HN_ULONG_TO_UBASE(0x69B8C5AE), HN_ULONG_TO_UBASE(0x56AC592E),
45         HN_ULONG_TO_UBASE(0x9B615BFC), HN_ULONG_TO_UBASE(0xE7F56483),
46         HN_ULONG_TO_UBASE(0xBBE7FE62), HN_ULONG_TO_UBASE(0xFAC066E1),
47         HN_ULONG_TO_UBASE(0xB7777B32), HN_ULONG_TO_UBASE(0xB2AC3EE1),
48         HN_ULONG_TO_UBASE(0x15114ADA), HN_ULONG_TO_UBASE(0x55F86533),
49         HN_ULONG_TO_UBASE(0x46497CC9), HN_ULONG_TO_UBASE(0x15CBA83E),
50         HN_ULONG_TO_UBASE(0x000001EF)
51     },
52 
53     /* 3G.x */
54     {
55         HN_ULONG_TO_UBASE(0xE371375D), HN_ULONG_TO_UBASE(0x863B3ADB),
56         HN_ULONG_TO_UBASE(0x89CF187B), HN_ULONG_TO_UBASE(0xF2DDD842),
57         HN_ULONG_TO_UBASE(0x6AB24B10), HN_ULONG_TO_UBASE(0x80CF70E7),
58         HN_ULONG_TO_UBASE(0x57D81A93), HN_ULONG_TO_UBASE(0x78063AE6),
59         HN_ULONG_TO_UBASE(0xC87491C5), HN_ULONG_TO_UBASE(0x88AEB0B1),
60         HN_ULONG_TO_UBASE(0x2E17FBF9), HN_ULONG_TO_UBASE(0x5EBE733A),
61         HN_ULONG_TO_UBASE(0x52AD31BA), HN_ULONG_TO_UBASE(0xC205CBCD),
62         HN_ULONG_TO_UBASE(0xED66A7F8), HN_ULONG_TO_UBASE(0xA13230F9),
63         HN_ULONG_TO_UBASE(0x00000117)
64     },
65 
66     /* 3G.y */
67     {
68         HN_ULONG_TO_UBASE(0x03A6EC5D), HN_ULONG_TO_UBASE(0x224D9A3B),
69         HN_ULONG_TO_UBASE(0xBE627BE3), HN_ULONG_TO_UBASE(0xE1EFCA41),
70         HN_ULONG_TO_UBASE(0x22ABCA89), HN_ULONG_TO_UBASE(0x34DF229C),
71         HN_ULONG_TO_UBASE(0x8153B848), HN_ULONG_TO_UBASE(0x11C526A0),
72         HN_ULONG_TO_UBASE(0xCBB59E96), HN_ULONG_TO_UBASE(0x26879BD9),
73         HN_ULONG_TO_UBASE(0x8D1298ED), HN_ULONG_TO_UBASE(0x77ECCC36),
74         HN_ULONG_TO_UBASE(0xD6560F21), HN_ULONG_TO_UBASE(0xAF68677B),
75         HN_ULONG_TO_UBASE(0x242B365B), HN_ULONG_TO_UBASE(0xE5DDC615),
76         HN_ULONG_TO_UBASE(0x0000017F)
77     },
78 
79     /* 4G.x */
80     {
81         HN_ULONG_TO_UBASE(0x155C337B), HN_ULONG_TO_UBASE(0x7EAEFE12),
82         HN_ULONG_TO_UBASE(0xC7186596), HN_ULONG_TO_UBASE(0x357F27CE),
83         HN_ULONG_TO_UBASE(0x654DBBEB), HN_ULONG_TO_UBASE(0x90C26C69),
84         HN_ULONG_TO_UBASE(0xA1B63A6A), HN_ULONG_TO_UBASE(0x6BCCA278),
85         HN_ULONG_TO_UBASE(0x8EDD9123), HN_ULONG_TO_UBASE(0x776B7A92),
86         HN_ULONG_TO_UBASE(0x6C6DA5E9), HN_ULONG_TO_UBASE(0xB2BEF507),
87         HN_ULONG_TO_UBASE(0x0E3C747B), HN_ULONG_TO_UBASE(0x805ED3AA),
88         HN_ULONG_TO_UBASE(0x659DF2EF), HN_ULONG_TO_UBASE(0x298EF458),
89         HN_ULONG_TO_UBASE(0x00000098)
90     },
91 
92     /* 4G.y */
93     {
94         HN_ULONG_TO_UBASE(0x35A79F8D), HN_ULONG_TO_UBASE(0xE3DD8939),
95         HN_ULONG_TO_UBASE(0xA1972C6B), HN_ULONG_TO_UBASE(0x672B109C),
96         HN_ULONG_TO_UBASE(0x07953A4D), HN_ULONG_TO_UBASE(0xAD41CBAE),
97         HN_ULONG_TO_UBASE(0xD206DE77), HN_ULONG_TO_UBASE(0xDE07527F),
98         HN_ULONG_TO_UBASE(0xB61D9811), HN_ULONG_TO_UBASE(0x1F55A4C0),
99         HN_ULONG_TO_UBASE(0x7A75360E), HN_ULONG_TO_UBASE(0x929D56D5),
100         HN_ULONG_TO_UBASE(0x5032EFE6), HN_ULONG_TO_UBASE(0x9F2BECFF),
101         HN_ULONG_TO_UBASE(0x60F0622C), HN_ULONG_TO_UBASE(0x0DE654C7),
102         HN_ULONG_TO_UBASE(0x00000018)
103     },
104 
105     /* 5G.x */
106     {
107         HN_ULONG_TO_UBASE(0x8445216B), HN_ULONG_TO_UBASE(0xD9E465AF),
108         HN_ULONG_TO_UBASE(0xC57AE51B), HN_ULONG_TO_UBASE(0x7D12C12B),
109         HN_ULONG_TO_UBASE(0xAB01F4D2), HN_ULONG_TO_UBASE(0xAF65FD9B),
110         HN_ULONG_TO_UBASE(0xB3C1D722), HN_ULONG_TO_UBASE(0xF2FD8A84),
111         HN_ULONG_TO_UBASE(0xF5123832), HN_ULONG_TO_UBASE(0x8870DC27),
112         HN_ULONG_TO_UBASE(0x8C85325E), HN_ULONG_TO_UBASE(0xE8B51D16),
113         HN_ULONG_TO_UBASE(0x92E31759), HN_ULONG_TO_UBASE(0x1A03D5DF),
114         HN_ULONG_TO_UBASE(0xEFDB49C3), HN_ULONG_TO_UBASE(0x7B5E6C46),
115         HN_ULONG_TO_UBASE(0x0000005E)
116     },
117 
118     /* 5G.y */
119     {
120         HN_ULONG_TO_UBASE(0x137A651A), HN_ULONG_TO_UBASE(0xB427174D),
121         HN_ULONG_TO_UBASE(0x256229CB), HN_ULONG_TO_UBASE(0xF9E661D4),
122         HN_ULONG_TO_UBASE(0xED3AEB3F), HN_ULONG_TO_UBASE(0xBBD04D0F),
123         HN_ULONG_TO_UBASE(0x5BB3FAE1), HN_ULONG_TO_UBASE(0xC31EEF45),
124         HN_ULONG_TO_UBASE(0x07A35089), HN_ULONG_TO_UBASE(0x52DF99E4),
125         HN_ULONG_TO_UBASE(0xED429E1A), HN_ULONG_TO_UBASE(0x6514B9BD),
126         HN_ULONG_TO_UBASE(0x67ECBD97), HN_ULONG_TO_UBASE(0x757977BF),
127         HN_ULONG_TO_UBASE(0xB2725C6D), HN_ULONG_TO_UBASE(0x70A2B55F),
128         HN_ULONG_TO_UBASE(0x000000A7)
129     },
130 
131     /* 6G.x */
132     {
133         HN_ULONG_TO_UBASE(0x8913355A), HN_ULONG_TO_UBASE(0xDD2CD8AE),
134         HN_ULONG_TO_UBASE(0xBA2F3522), HN_ULONG_TO_UBASE(0x02114BFC),
135         HN_ULONG_TO_UBASE(0x22446ABF), HN_ULONG_TO_UBASE(0xE62184F5),
136         HN_ULONG_TO_UBASE(0x68E6D0C5), HN_ULONG_TO_UBASE(0xE8D75651),
137         HN_ULONG_TO_UBASE(0x19AD9EBC), HN_ULONG_TO_UBASE(0x580F6C03),
138         HN_ULONG_TO_UBASE(0xC2953557), HN_ULONG_TO_UBASE(0x8B9D5D55),
139         HN_ULONG_TO_UBASE(0x618534DF), HN_ULONG_TO_UBASE(0x234640A5),
140         HN_ULONG_TO_UBASE(0xFED9E6B6), HN_ULONG_TO_UBASE(0xF452A772),
141         HN_ULONG_TO_UBASE(0x000001B7)
142     },
143 
144     /* 6G.y */
145     {
146         HN_ULONG_TO_UBASE(0x16211BB5), HN_ULONG_TO_UBASE(0x0952E477),
147         HN_ULONG_TO_UBASE(0x5CEDF594), HN_ULONG_TO_UBASE(0xD3D874AE),
148         HN_ULONG_TO_UBASE(0x85328765), HN_ULONG_TO_UBASE(0x2C21A7BD),
149         HN_ULONG_TO_UBASE(0xEC333D98), HN_ULONG_TO_UBASE(0x44B3033C),
150         HN_ULONG_TO_UBASE(0x3C587CD5), HN_ULONG_TO_UBASE(0x0474258D),
151         HN_ULONG_TO_UBASE(0x4962E19E), HN_ULONG_TO_UBASE(0x527C162F),
152         HN_ULONG_TO_UBASE(0x5B356DD3), HN_ULONG_TO_UBASE(0x0DBF0F7A),
153         HN_ULONG_TO_UBASE(0x95BBFC9B), HN_ULONG_TO_UBASE(0x8D683B71),
154         HN_ULONG_TO_UBASE(0x000001BC)
155     },
156 
157     /* 7G.x */
158     {
159         HN_ULONG_TO_UBASE(0x94BB174C), HN_ULONG_TO_UBASE(0xFF99F7CD),
160         HN_ULONG_TO_UBASE(0x96566E5E), HN_ULONG_TO_UBASE(0x905B42BD),
161         HN_ULONG_TO_UBASE(0xEBAE3BAA), HN_ULONG_TO_UBASE(0xDA1ABF35),
162         HN_ULONG_TO_UBASE(0x7644CE21), HN_ULONG_TO_UBASE(0x15DDF71B),
163         HN_ULONG_TO_UBASE(0x50E83A0C), HN_ULONG_TO_UBASE(0x2920C1C0),
164         HN_ULONG_TO_UBASE(0x0F7B1973), HN_ULONG_TO_UBASE(0x237776ED),
165         HN_ULONG_TO_UBASE(0x57ADF3A6), HN_ULONG_TO_UBASE(0x7E393449),
166         HN_ULONG_TO_UBASE(0x9160EAD0), HN_ULONG_TO_UBASE(0xD9E08CF9),
167         HN_ULONG_TO_UBASE(0x00000100)
168     },
169 
170     /* 7G.y */
171     {
172         HN_ULONG_TO_UBASE(0x675707DA), HN_ULONG_TO_UBASE(0x54F0135E),
173         HN_ULONG_TO_UBASE(0x2E5596B0), HN_ULONG_TO_UBASE(0x5976788E),
174         HN_ULONG_TO_UBASE(0xF3AC4001), HN_ULONG_TO_UBASE(0x73DD4B88),
175         HN_ULONG_TO_UBASE(0xFBACBFE7), HN_ULONG_TO_UBASE(0x7F5453E3),
176         HN_ULONG_TO_UBASE(0x426B2080), HN_ULONG_TO_UBASE(0x551DC249),
177         HN_ULONG_TO_UBASE(0xE33F8F92), HN_ULONG_TO_UBASE(0x528FF571),
178         HN_ULONG_TO_UBASE(0x95834F88), HN_ULONG_TO_UBASE(0xD78D1E40),
179         HN_ULONG_TO_UBASE(0x7D07A77C), HN_ULONG_TO_UBASE(0x20405C91),
180         HN_ULONG_TO_UBASE(0x00000114)
181     },
182 
183     /* 8G.x */
184     {
185         HN_ULONG_TO_UBASE(0xEC3D1383), HN_ULONG_TO_UBASE(0xD1CE126E),
186         HN_ULONG_TO_UBASE(0x4805B18E), HN_ULONG_TO_UBASE(0x0C7F980A),
187         HN_ULONG_TO_UBASE(0xFC1B1F4E), HN_ULONG_TO_UBASE(0x65945086),
188         HN_ULONG_TO_UBASE(0x092E0CA0), HN_ULONG_TO_UBASE(0xAC1703AE),
189         HN_ULONG_TO_UBASE(0x8B5EE5C0), HN_ULONG_TO_UBASE(0x834C77F9),
190         HN_ULONG_TO_UBASE(0x6D19FBB5), HN_ULONG_TO_UBASE(0x3E722F57),
191         HN_ULONG_TO_UBASE(0xF6770BD1), HN_ULONG_TO_UBASE(0xAE8A944A),
192         HN_ULONG_TO_UBASE(0x2A7C7101), HN_ULONG_TO_UBASE(0xE1D11050),
193         HN_ULONG_TO_UBASE(0x000000D7)
194     },
195 
196     /* 8G.y */
197     {
198         HN_ULONG_TO_UBASE(0xCA303000), HN_ULONG_TO_UBASE(0x62029FD2),
199         HN_ULONG_TO_UBASE(0xACB52ECD), HN_ULONG_TO_UBASE(0x366C72C9),
200         HN_ULONG_TO_UBASE(0xCC8DD8A2), HN_ULONG_TO_UBASE(0xCF89C1AA),
201         HN_ULONG_TO_UBASE(0x5D1B984D), HN_ULONG_TO_UBASE(0x95C235BF),
202         HN_ULONG_TO_UBASE(0xD1A80D52), HN_ULONG_TO_UBASE(0x3434D10D),
203         HN_ULONG_TO_UBASE(0x77E95ADD), HN_ULONG_TO_UBASE(0x094D0A8F),
204         HN_ULONG_TO_UBASE(0xD1203660), HN_ULONG_TO_UBASE(0x03890027),
205         HN_ULONG_TO_UBASE(0x29791AB3), HN_ULONG_TO_UBASE(0x32FAF273),
206         HN_ULONG_TO_UBASE(0x00000075)
207     },
208 
209     /* 9G.x */
210     {
211         HN_ULONG_TO_UBASE(0x075A4208), HN_ULONG_TO_UBASE(0x9281B5C1),
212         HN_ULONG_TO_UBASE(0x471C7FCC), HN_ULONG_TO_UBASE(0xAFC5E0E5),
213         HN_ULONG_TO_UBASE(0xC8704F00), HN_ULONG_TO_UBASE(0x9A6E82F3),
214         HN_ULONG_TO_UBASE(0x62960946), HN_ULONG_TO_UBASE(0x4320C31A),
215         HN_ULONG_TO_UBASE(0x513C571F), HN_ULONG_TO_UBASE(0xE673B4BD),
216         HN_ULONG_TO_UBASE(0x3DC4D8FB), HN_ULONG_TO_UBASE(0x9B68532A),
217         HN_ULONG_TO_UBASE(0x2C95DBE9), HN_ULONG_TO_UBASE(0xA8CBE344),
218         HN_ULONG_TO_UBASE(0x229C47B7), HN_ULONG_TO_UBASE(0x0F6AC257),
219         HN_ULONG_TO_UBASE(0x0000014A)
220     },
221 
222     /* 9G.y */
223     {
224         HN_ULONG_TO_UBASE(0xC1411542), HN_ULONG_TO_UBASE(0x1B4C092D),
225         HN_ULONG_TO_UBASE(0x7747BEAF), HN_ULONG_TO_UBASE(0xC4BB45D6),
226         HN_ULONG_TO_UBASE(0x8D55735E), HN_ULONG_TO_UBASE(0x685C4BE4),
227         HN_ULONG_TO_UBASE(0x6383FD44), HN_ULONG_TO_UBASE(0x9E72FCC8),
228         HN_ULONG_TO_UBASE(0x203FF740), HN_ULONG_TO_UBASE(0x615BDC52),
229         HN_ULONG_TO_UBASE(0x5B1A64AD), HN_ULONG_TO_UBASE(0xCC19DAFB),
230         HN_ULONG_TO_UBASE(0x2B782E96), HN_ULONG_TO_UBASE(0x28EF0D34),
231         HN_ULONG_TO_UBASE(0x05E3AE87), HN_ULONG_TO_UBASE(0x21D84532),
232         HN_ULONG_TO_UBASE(0x00000052)
233     },
234 
235     /* 10G.x */
236     {
237         HN_ULONG_TO_UBASE(0x72656971), HN_ULONG_TO_UBASE(0x6A884570),
238         HN_ULONG_TO_UBASE(0xA7F20EFE), HN_ULONG_TO_UBASE(0xDC4FCB92),
239         HN_ULONG_TO_UBASE(0xDC31417C), HN_ULONG_TO_UBASE(0x759DB4FF),
240         HN_ULONG_TO_UBASE(0xF95DC14F), HN_ULONG_TO_UBASE(0xF1BF0345),
241         HN_ULONG_TO_UBASE(0x0FD656F0), HN_ULONG_TO_UBASE(0x0686BD5B),
242         HN_ULONG_TO_UBASE(0x6F4440F7), HN_ULONG_TO_UBASE(0x9C5EA036),
243         HN_ULONG_TO_UBASE(0x3887F6E1), HN_ULONG_TO_UBASE(0x207619CE),
244         HN_ULONG_TO_UBASE(0xA211DE2D), HN_ULONG_TO_UBASE(0xA9EF8D60),
245         HN_ULONG_TO_UBASE(0x0000007D)
246     },
247 
248     /* 10G.y */
249     {
250         HN_ULONG_TO_UBASE(0x8E5A6C11), HN_ULONG_TO_UBASE(0xD0BCE7F9),
251         HN_ULONG_TO_UBASE(0xEDC82B6C), HN_ULONG_TO_UBASE(0xAB338406),
252         HN_ULONG_TO_UBASE(0x7CB589B2), HN_ULONG_TO_UBASE(0x36726A50),
253         HN_ULONG_TO_UBASE(0x02CC7EB7), HN_ULONG_TO_UBASE(0x887B6CFC),
254         HN_ULONG_TO_UBASE(0x28ACE2AB), HN_ULONG_TO_UBASE(0x651F7903),
255         HN_ULONG_TO_UBASE(0x06BA6057), HN_ULONG_TO_UBASE(0x8E7F8436),
256         HN_ULONG_TO_UBASE(0xBFF72AFE), HN_ULONG_TO_UBASE(0xD103B1B2),
257         HN_ULONG_TO_UBASE(0x46959145), HN_ULONG_TO_UBASE(0x942CF0C6),
258         HN_ULONG_TO_UBASE(0x00000033)
259     },
260 
261     /* 11G.x */
262     {
263         HN_ULONG_TO_UBASE(0x5805D03E), HN_ULONG_TO_UBASE(0x204B0833),
264         HN_ULONG_TO_UBASE(0x5A1AB8CF), HN_ULONG_TO_UBASE(0x3C03AE7A),
265         HN_ULONG_TO_UBASE(0xEAD6F888), HN_ULONG_TO_UBASE(0x3376E27B),
266         HN_ULONG_TO_UBASE(0x94A53E60), HN_ULONG_TO_UBASE(0xB0E6713A),
267         HN_ULONG_TO_UBASE(0x3F0B8EE9), HN_ULONG_TO_UBASE(0x790F9E81),
268         HN_ULONG_TO_UBASE(0x4B4896E3), HN_ULONG_TO_UBASE(0x21B2AC27),
269         HN_ULONG_TO_UBASE(0xE7FAFECC), HN_ULONG_TO_UBASE(0xCE7C291B),
270         HN_ULONG_TO_UBASE(0x1C1049CA), HN_ULONG_TO_UBASE(0x10FE14A2),
271         HN_ULONG_TO_UBASE(0x0000004D)
272     },
273 
274     /* 11G.y */
275     {
276         HN_ULONG_TO_UBASE(0xD2130D68), HN_ULONG_TO_UBASE(0x95BB30A7),
277         HN_ULONG_TO_UBASE(0x4C891468), HN_ULONG_TO_UBASE(0xC2A8F2A5),
278         HN_ULONG_TO_UBASE(0xB1608A4A), HN_ULONG_TO_UBASE(0x5236AE15),
279         HN_ULONG_TO_UBASE(0xC50F2485), HN_ULONG_TO_UBASE(0xBD832829),
280         HN_ULONG_TO_UBASE(0x435254ED), HN_ULONG_TO_UBASE(0xC87AF748),
281         HN_ULONG_TO_UBASE(0x3A80DC29), HN_ULONG_TO_UBASE(0xC76D7DF6),
282         HN_ULONG_TO_UBASE(0x5D881936), HN_ULONG_TO_UBASE(0x7CE57B49),
283         HN_ULONG_TO_UBASE(0xC0AEAA0D), HN_ULONG_TO_UBASE(0x8E95CB82),
284         HN_ULONG_TO_UBASE(0x0000017F)
285     },
286 
287     /* 12G.x */
288     {
289         HN_ULONG_TO_UBASE(0x829A40A3), HN_ULONG_TO_UBASE(0x21A193C7),
290         HN_ULONG_TO_UBASE(0x05F32F41), HN_ULONG_TO_UBASE(0x87B759A9),
291         HN_ULONG_TO_UBASE(0x6E143537), HN_ULONG_TO_UBASE(0xBA154763),
292         HN_ULONG_TO_UBASE(0x6B5A6433), HN_ULONG_TO_UBASE(0xFB951864),
293         HN_ULONG_TO_UBASE(0xD8E9BE43), HN_ULONG_TO_UBASE(0x81C1DADF),
294         HN_ULONG_TO_UBASE(0xB5173D47), HN_ULONG_TO_UBASE(0x3145A42C),
295         HN_ULONG_TO_UBASE(0xE5C9B799), HN_ULONG_TO_UBASE(0x22D5EF4B),
296         HN_ULONG_TO_UBASE(0xFFE36EE4), HN_ULONG_TO_UBASE(0x0BDE5942),
297         HN_ULONG_TO_UBASE(0x0000010A)
298     },
299 
300     /* 12G.y */
301     {
302         HN_ULONG_TO_UBASE(0xF4BC58E5), HN_ULONG_TO_UBASE(0xAFC83BA5),
303         HN_ULONG_TO_UBASE(0xD58698E3), HN_ULONG_TO_UBASE(0xB418E478),
304         HN_ULONG_TO_UBASE(0x1726D889), HN_ULONG_TO_UBASE(0x1F60371A),
305         HN_ULONG_TO_UBASE(0x2F0A291A), HN_ULONG_TO_UBASE(0xA5A58B57),
306         HN_ULONG_TO_UBASE(0xFD356626), HN_ULONG_TO_UBASE(0x0E44DA0A),
307         HN_ULONG_TO_UBASE(0x2D89342F), HN_ULONG_TO_UBASE(0xA3E9BE34),
308         HN_ULONG_TO_UBASE(0xC3C1B4A2), HN_ULONG_TO_UBASE(0x9195921B),
309         HN_ULONG_TO_UBASE(0x25E4191E), HN_ULONG_TO_UBASE(0xBCB21228),
310         HN_ULONG_TO_UBASE(0x00000135)
311     },
312 
313     /* 13G.x */
314     {
315         HN_ULONG_TO_UBASE(0x0EBA209A), HN_ULONG_TO_UBASE(0xA1B5F88D),
316         HN_ULONG_TO_UBASE(0x3C5E2880), HN_ULONG_TO_UBASE(0x04B54668),
317         HN_ULONG_TO_UBASE(0xEFBB25F1), HN_ULONG_TO_UBASE(0xE93591A0),
318         HN_ULONG_TO_UBASE(0xE9729982), HN_ULONG_TO_UBASE(0x1678D5F7),
319         HN_ULONG_TO_UBASE(0x7D430831), HN_ULONG_TO_UBASE(0x6EB992DA),
320         HN_ULONG_TO_UBASE(0x0B7C198F), HN_ULONG_TO_UBASE(0x1A4A91F7),
321         HN_ULONG_TO_UBASE(0x6ED1FF3E), HN_ULONG_TO_UBASE(0x3A679847),
322         HN_ULONG_TO_UBASE(0x5465E131), HN_ULONG_TO_UBASE(0x18A5E132),
323         HN_ULONG_TO_UBASE(0x00000042)
324     },
325 
326     /* 13G.y */
327     {
328         HN_ULONG_TO_UBASE(0x59486FC8), HN_ULONG_TO_UBASE(0xAF8471EB),
329         HN_ULONG_TO_UBASE(0x9B6AB9E2), HN_ULONG_TO_UBASE(0x397D8CAB),
330         HN_ULONG_TO_UBASE(0x10C0F9EA), HN_ULONG_TO_UBASE(0x942279C2),
331         HN_ULONG_TO_UBASE(0xDDDF11B9), HN_ULONG_TO_UBASE(0xB3186547),
332         HN_ULONG_TO_UBASE(0x7E0E49B0), HN_ULONG_TO_UBASE(0x2910861A),
333         HN_ULONG_TO_UBASE(0x4C374108), HN_ULONG_TO_UBASE(0x0AC066AB),
334         HN_ULONG_TO_UBASE(0x9C34F007), HN_ULONG_TO_UBASE(0x67C76F4C),
335         HN_ULONG_TO_UBASE(0x6A9E031F), HN_ULONG_TO_UBASE(0x3635EDBE),
336         HN_ULONG_TO_UBASE(0x000000F7)
337     },
338 
339     /* 14G.x */
340     {
341         HN_ULONG_TO_UBASE(0x4CCFA596), HN_ULONG_TO_UBASE(0x2E91929F),
342         HN_ULONG_TO_UBASE(0x844098CF), HN_ULONG_TO_UBASE(0x3B168733),
343         HN_ULONG_TO_UBASE(0x616A36DF), HN_ULONG_TO_UBASE(0x0FEA437E),
344         HN_ULONG_TO_UBASE(0xE0DC39AE), HN_ULONG_TO_UBASE(0xBEA5755D),
345         HN_ULONG_TO_UBASE(0xCA20C73A), HN_ULONG_TO_UBASE(0x721050E6),
346         HN_ULONG_TO_UBASE(0xA6534DE2), HN_ULONG_TO_UBASE(0x5D86BB64),
347         HN_ULONG_TO_UBASE(0xAF758AEF), HN_ULONG_TO_UBASE(0x0C65FF4F),
348         HN_ULONG_TO_UBASE(0x33832CCA), HN_ULONG_TO_UBASE(0x38D7BD4D),
349         HN_ULONG_TO_UBASE(0x00000127)
350     },
351 
352     /* 14G.y */
353     {
354         HN_ULONG_TO_UBASE(0xF7B22FC2), HN_ULONG_TO_UBASE(0xAABE7E25),
355         HN_ULONG_TO_UBASE(0x138537BE), HN_ULONG_TO_UBASE(0x44EC7B6E),
356         HN_ULONG_TO_UBASE(0x5AD7C324), HN_ULONG_TO_UBASE(0x33CD05C9),
357         HN_ULONG_TO_UBASE(0xC1602459), HN_ULONG_TO_UBASE(0x28A6115C),
358         HN_ULONG_TO_UBASE(0xDF229461), HN_ULONG_TO_UBASE(0x05C1AA34),
359         HN_ULONG_TO_UBASE(0xBDB1D24D), HN_ULONG_TO_UBASE(0x39FC35D8),
360         HN_ULONG_TO_UBASE(0x4B5F6223), HN_ULONG_TO_UBASE(0x536AA0D5),
361         HN_ULONG_TO_UBASE(0x703BD0F3), HN_ULONG_TO_UBASE(0x1D5287E3),
362         HN_ULONG_TO_UBASE(0x00000186)
363     },
364 
365     /* 15G.x */
366     {
367         HN_ULONG_TO_UBASE(0x5E6A7807), HN_ULONG_TO_UBASE(0x9F9A072D),
368         HN_ULONG_TO_UBASE(0x39EEB105), HN_ULONG_TO_UBASE(0xF9A38A83),
369         HN_ULONG_TO_UBASE(0x17DDB1B4), HN_ULONG_TO_UBASE(0x1503495F),
370         HN_ULONG_TO_UBASE(0x732310B4), HN_ULONG_TO_UBASE(0xDA780A6C),
371         HN_ULONG_TO_UBASE(0x403A5D57), HN_ULONG_TO_UBASE(0x7B287813),
372         HN_ULONG_TO_UBASE(0xE7C481E7), HN_ULONG_TO_UBASE(0x6BB08815),
373         HN_ULONG_TO_UBASE(0x574C23E2), HN_ULONG_TO_UBASE(0x1198C8A4),
374         HN_ULONG_TO_UBASE(0x673DFC44), HN_ULONG_TO_UBASE(0xA8DA92A4),
375         HN_ULONG_TO_UBASE(0x0000002A)
376     },
377 
378     /* 15G.y */
379     {
380         HN_ULONG_TO_UBASE(0xBFB7CE31), HN_ULONG_TO_UBASE(0x92DF33AE),
381         HN_ULONG_TO_UBASE(0x4A686F13), HN_ULONG_TO_UBASE(0x1648E528),
382         HN_ULONG_TO_UBASE(0xE45BA7F2), HN_ULONG_TO_UBASE(0x4429B3AF),
383         HN_ULONG_TO_UBASE(0x397C1D83), HN_ULONG_TO_UBASE(0x216C5137),
384         HN_ULONG_TO_UBASE(0xC8C8EE26), HN_ULONG_TO_UBASE(0xCAC9D3C3),
385         HN_ULONG_TO_UBASE(0x40C73424), HN_ULONG_TO_UBASE(0x0711605E),
386         HN_ULONG_TO_UBASE(0x219C8C3F), HN_ULONG_TO_UBASE(0x008B93A5),
387         HN_ULONG_TO_UBASE(0xC6F10BB3), HN_ULONG_TO_UBASE(0xAB1EE7B8),
388         HN_ULONG_TO_UBASE(0x000000E0)
389     },
390 
391     /* 16G.x */
392     {
393         HN_ULONG_TO_UBASE(0x10A8C4FB), HN_ULONG_TO_UBASE(0x73A6BA38),
394         HN_ULONG_TO_UBASE(0xECC93E5D), HN_ULONG_TO_UBASE(0x5153D959),
395         HN_ULONG_TO_UBASE(0xB59E9871), HN_ULONG_TO_UBASE(0x7CA58012),
396         HN_ULONG_TO_UBASE(0xAFD442F1), HN_ULONG_TO_UBASE(0xEDC0DBEF),
397         HN_ULONG_TO_UBASE(0xB9CF7691), HN_ULONG_TO_UBASE(0xB9050A22),
398         HN_ULONG_TO_UBASE(0x464D017D), HN_ULONG_TO_UBASE(0x3D1E96FE),
399         HN_ULONG_TO_UBASE(0x82074DCA), HN_ULONG_TO_UBASE(0x541781A4),
400         HN_ULONG_TO_UBASE(0x8B355413), HN_ULONG_TO_UBASE(0xEDCE0DB3),
401         HN_ULONG_TO_UBASE(0x0000006B)
402     },
403 
404     /* 16G.y */
405     {
406         HN_ULONG_TO_UBASE(0xAE2B39C2), HN_ULONG_TO_UBASE(0x1A13E3EE),
407         HN_ULONG_TO_UBASE(0x3C218179), HN_ULONG_TO_UBASE(0xC431081D),
408         HN_ULONG_TO_UBASE(0xAE68B7C6), HN_ULONG_TO_UBASE(0x5CBC14C1),
409         HN_ULONG_TO_UBASE(0x9005A304), HN_ULONG_TO_UBASE(0xCF2559BB),
410         HN_ULONG_TO_UBASE(0x2EC7AED5), HN_ULONG_TO_UBASE(0x14D7C1E9),
411         HN_ULONG_TO_UBASE(0x1E2E2F0D), HN_ULONG_TO_UBASE(0x5C379BFE),
412         HN_ULONG_TO_UBASE(0x886F0CF9), HN_ULONG_TO_UBASE(0xFC33E4D2),
413         HN_ULONG_TO_UBASE(0xAC4E1D17), HN_ULONG_TO_UBASE(0x2F14E7D0),
414         HN_ULONG_TO_UBASE(0x00000071)
415     },
416 
417     /* 17G.x */
418     {
419         HN_ULONG_TO_UBASE(0xEDDE488A), HN_ULONG_TO_UBASE(0x2F1F1497),
420         HN_ULONG_TO_UBASE(0x31EE698E), HN_ULONG_TO_UBASE(0x3D0364B2),
421         HN_ULONG_TO_UBASE(0xA47E048E), HN_ULONG_TO_UBASE(0x88A32C39),
422         HN_ULONG_TO_UBASE(0x86DA37C4), HN_ULONG_TO_UBASE(0x80ABD8DE),
423         HN_ULONG_TO_UBASE(0x07895C9C), HN_ULONG_TO_UBASE(0x6608EED9),
424         HN_ULONG_TO_UBASE(0xD18A7081), HN_ULONG_TO_UBASE(0xCCA6B9E6),
425         HN_ULONG_TO_UBASE(0x0CA87303), HN_ULONG_TO_UBASE(0x44F63AA9),
426         HN_ULONG_TO_UBASE(0x094F9789), HN_ULONG_TO_UBASE(0x84281EED),
427         HN_ULONG_TO_UBASE(0x0000017F)
428     },
429 
430     /* 17G.y */
431     {
432         HN_ULONG_TO_UBASE(0x6AA5F7A3), HN_ULONG_TO_UBASE(0x5703727D),
433         HN_ULONG_TO_UBASE(0x09DA94A2), HN_ULONG_TO_UBASE(0xD9C33512),
434         HN_ULONG_TO_UBASE(0xADDCCFD6), HN_ULONG_TO_UBASE(0x80572F9E),
435         HN_ULONG_TO_UBASE(0x45FEBCC1), HN_ULONG_TO_UBASE(0xF95BF8B0),
436         HN_ULONG_TO_UBASE(0x30A48DAC), HN_ULONG_TO_UBASE(0x4BCD4B12),
437         HN_ULONG_TO_UBASE(0xF00F8619), HN_ULONG_TO_UBASE(0x32A16A21),
438         HN_ULONG_TO_UBASE(0x1BCAD341), HN_ULONG_TO_UBASE(0x612D82B9),
439         HN_ULONG_TO_UBASE(0xE2BABC4A), HN_ULONG_TO_UBASE(0xF42138DA),
440         HN_ULONG_TO_UBASE(0x0000014B)
441     },
442 
443     /* 18G.x */
444     {
445         HN_ULONG_TO_UBASE(0x1510E086), HN_ULONG_TO_UBASE(0x7E9364EA),
446         HN_ULONG_TO_UBASE(0x31D0F679), HN_ULONG_TO_UBASE(0x524B63B1),
447         HN_ULONG_TO_UBASE(0x9AEAE146), HN_ULONG_TO_UBASE(0xF8F3CC52),
448         HN_ULONG_TO_UBASE(0x36F90818), HN_ULONG_TO_UBASE(0x8C05C88D),
449         HN_ULONG_TO_UBASE(0x80D7DAB5), HN_ULONG_TO_UBASE(0x16ED75E5),
450         HN_ULONG_TO_UBASE(0x54000C49), HN_ULONG_TO_UBASE(0x8F872700),
451         HN_ULONG_TO_UBASE(0x843C5F7A), HN_ULONG_TO_UBASE(0x9740A2A1),
452         HN_ULONG_TO_UBASE(0x6E680411), HN_ULONG_TO_UBASE(0x8DC46AC5),
453         HN_ULONG_TO_UBASE(0x000000D8)
454     },
455 
456     /* 18G.y */
457     {
458         HN_ULONG_TO_UBASE(0xBAC1FCBC), HN_ULONG_TO_UBASE(0x9492A1D6),
459         HN_ULONG_TO_UBASE(0x8A9CA207), HN_ULONG_TO_UBASE(0xCD7CD811),
460         HN_ULONG_TO_UBASE(0xCDED0753), HN_ULONG_TO_UBASE(0xD61403A1),
461         HN_ULONG_TO_UBASE(0x6702B3FA), HN_ULONG_TO_UBASE(0x2D232E49),
462         HN_ULONG_TO_UBASE(0x83E33229), HN_ULONG_TO_UBASE(0x5BD01FC9),
463         HN_ULONG_TO_UBASE(0x4DBE98F9), HN_ULONG_TO_UBASE(0x157C427C),
464         HN_ULONG_TO_UBASE(0x1C5B4229), HN_ULONG_TO_UBASE(0xD2594A9F),
465         HN_ULONG_TO_UBASE(0xE6318047), HN_ULONG_TO_UBASE(0xE0207B85),
466         HN_ULONG_TO_UBASE(0x000001F5)
467     },
468 
469     /* 19G.x */
470     {
471         HN_ULONG_TO_UBASE(0x71AAEF75), HN_ULONG_TO_UBASE(0x6BF98381),
472         HN_ULONG_TO_UBASE(0xC14B076A), HN_ULONG_TO_UBASE(0x479CC2A8),
473         HN_ULONG_TO_UBASE(0xCC783DC5), HN_ULONG_TO_UBASE(0xC0466EC4),
474         HN_ULONG_TO_UBASE(0x682E48F9), HN_ULONG_TO_UBASE(0x7F120DA2),
475         HN_ULONG_TO_UBASE(0x4A4ED12F), HN_ULONG_TO_UBASE(0xE02258AC),
476         HN_ULONG_TO_UBASE(0x83DA05ED), HN_ULONG_TO_UBASE(0x8D8AB9B9),
477         HN_ULONG_TO_UBASE(0x394701B0), HN_ULONG_TO_UBASE(0xB1B1EC54),
478         HN_ULONG_TO_UBASE(0x82D2C76E), HN_ULONG_TO_UBASE(0x8FC99926),
479         HN_ULONG_TO_UBASE(0x00000079)
480     },
481 
482     /* 19G.y */
483     {
484         HN_ULONG_TO_UBASE(0x96C5465A), HN_ULONG_TO_UBASE(0x0A611BF4),
485         HN_ULONG_TO_UBASE(0x74F20F8F), HN_ULONG_TO_UBASE(0xD0A6B210),
486         HN_ULONG_TO_UBASE(0xB7200111), HN_ULONG_TO_UBASE(0x2178F283),
487         HN_ULONG_TO_UBASE(0x48705A27), HN_ULONG_TO_UBASE(0xBD71855C),
488         HN_ULONG_TO_UBASE(0xE797AA46), HN_ULONG_TO_UBASE(0x204B17EB),
489         HN_ULONG_TO_UBASE(0x1A418C95), HN_ULONG_TO_UBASE(0x8200553C),
490         HN_ULONG_TO_UBASE(0x7C5363E9), HN_ULONG_TO_UBASE(0x0AC39A6A),
491         HN_ULONG_TO_UBASE(0x38E587EC), HN_ULONG_TO_UBASE(0x41E58BA1),
492         HN_ULONG_TO_UBASE(0x00000092)
493     },
494 
495     /* 20G.x */
496     {
497         HN_ULONG_TO_UBASE(0xD580C2BF), HN_ULONG_TO_UBASE(0x7A1128D3),
498         HN_ULONG_TO_UBASE(0x33CB48FF), HN_ULONG_TO_UBASE(0x54CB80B9),
499         HN_ULONG_TO_UBASE(0x124988A8), HN_ULONG_TO_UBASE(0x12E00E24),
500         HN_ULONG_TO_UBASE(0x8973B0B6), HN_ULONG_TO_UBASE(0x2E41BD3E),
501         HN_ULONG_TO_UBASE(0x0729F811), HN_ULONG_TO_UBASE(0x81F9B249),
502         HN_ULONG_TO_UBASE(0x0B26F7D0), HN_ULONG_TO_UBASE(0x82B1E837),
503         HN_ULONG_TO_UBASE(0x453D977E), HN_ULONG_TO_UBASE(0x66102520),
504         HN_ULONG_TO_UBASE(0x76AF2FF3), HN_ULONG_TO_UBASE(0x86404FBF),
505         HN_ULONG_TO_UBASE(0x00000122)
506     },
507 
508     /* 20G.y */
509     {
510         HN_ULONG_TO_UBASE(0xDA706520), HN_ULONG_TO_UBASE(0x935EED87),
511         HN_ULONG_TO_UBASE(0x72990FDC), HN_ULONG_TO_UBASE(0x35AEFF20),
512         HN_ULONG_TO_UBASE(0x75F99B1D), HN_ULONG_TO_UBASE(0xF65CFB16),
513         HN_ULONG_TO_UBASE(0x8369D686), HN_ULONG_TO_UBASE(0x0E6D254D),
514         HN_ULONG_TO_UBASE(0x0882827E), HN_ULONG_TO_UBASE(0xC3493C5E),
515         HN_ULONG_TO_UBASE(0x4F166119), HN_ULONG_TO_UBASE(0xA0EDF2DA),
516         HN_ULONG_TO_UBASE(0x59363A25), HN_ULONG_TO_UBASE(0x7638D201),
517         HN_ULONG_TO_UBASE(0x76088E6B), HN_ULONG_TO_UBASE(0xECE18042),
518         HN_ULONG_TO_UBASE(0x00000138)
519     },
520 
521     /* 21G.x */
522     {
523         HN_ULONG_TO_UBASE(0xF8913CC2), HN_ULONG_TO_UBASE(0x02FB999B),
524         HN_ULONG_TO_UBASE(0xC961F4D7), HN_ULONG_TO_UBASE(0x81688347),
525         HN_ULONG_TO_UBASE(0x8D0435C3), HN_ULONG_TO_UBASE(0xD54C91F7),
526         HN_ULONG_TO_UBASE(0x990E6AB3), HN_ULONG_TO_UBASE(0xCBD0BCCA),
527         HN_ULONG_TO_UBASE(0xD848398A), HN_ULONG_TO_UBASE(0x3C8BCE08),
528         HN_ULONG_TO_UBASE(0xD5370ED6), HN_ULONG_TO_UBASE(0x83F3F979),
529         HN_ULONG_TO_UBASE(0x74FD3AC3), HN_ULONG_TO_UBASE(0x7449BBD2),
530         HN_ULONG_TO_UBASE(0x4E73CFAA), HN_ULONG_TO_UBASE(0xE6145DB8),
531         HN_ULONG_TO_UBASE(0x0000015E)
532     },
533 
534     /* 21G.y */
535     {
536         HN_ULONG_TO_UBASE(0x58044777), HN_ULONG_TO_UBASE(0x8A435E24),
537         HN_ULONG_TO_UBASE(0x937E7687), HN_ULONG_TO_UBASE(0x29B9D279),
538         HN_ULONG_TO_UBASE(0xE44D2874), HN_ULONG_TO_UBASE(0x42C2E303),
539         HN_ULONG_TO_UBASE(0x9845F55F), HN_ULONG_TO_UBASE(0xFDE623CA),
540         HN_ULONG_TO_UBASE(0x2FA1BC3E), HN_ULONG_TO_UBASE(0x752C258F),
541         HN_ULONG_TO_UBASE(0xCE8A096A), HN_ULONG_TO_UBASE(0x198DB2B3),
542         HN_ULONG_TO_UBASE(0x6F2EC50F), HN_ULONG_TO_UBASE(0x59B5361B),
543         HN_ULONG_TO_UBASE(0x1A2AA43F), HN_ULONG_TO_UBASE(0x5A4F209C),
544         HN_ULONG_TO_UBASE(0x0000014A)
545     },
546 
547     /* 22G.x */
548     {
549         HN_ULONG_TO_UBASE(0x4F005DA0), HN_ULONG_TO_UBASE(0xFCBB48B5),
550         HN_ULONG_TO_UBASE(0x50CBC0C5), HN_ULONG_TO_UBASE(0x2A8D3120),
551         HN_ULONG_TO_UBASE(0xE9AC811D), HN_ULONG_TO_UBASE(0xB33C1526),
552         HN_ULONG_TO_UBASE(0x586013F2), HN_ULONG_TO_UBASE(0x91E493CE),
553         HN_ULONG_TO_UBASE(0x488D1688), HN_ULONG_TO_UBASE(0x99412264),
554         HN_ULONG_TO_UBASE(0x875C45E1), HN_ULONG_TO_UBASE(0x7966C1C1),
555         HN_ULONG_TO_UBASE(0xBE0D5B72), HN_ULONG_TO_UBASE(0x9DBC86D2),
556         HN_ULONG_TO_UBASE(0x1553D029), HN_ULONG_TO_UBASE(0x63A83498),
557         HN_ULONG_TO_UBASE(0x00000068)
558     },
559 
560     /* 22G.y */
561     {
562         HN_ULONG_TO_UBASE(0x9D44055B), HN_ULONG_TO_UBASE(0x184F3300),
563         HN_ULONG_TO_UBASE(0xD232A2F5), HN_ULONG_TO_UBASE(0xADBEC2BB),
564         HN_ULONG_TO_UBASE(0x5A2A5EB5), HN_ULONG_TO_UBASE(0x4E0B32A8),
565         HN_ULONG_TO_UBASE(0xE3535F4C), HN_ULONG_TO_UBASE(0x938D776C),
566         HN_ULONG_TO_UBASE(0x0F169CF8), HN_ULONG_TO_UBASE(0xD2591A1A),
567         HN_ULONG_TO_UBASE(0xE7A2093D), HN_ULONG_TO_UBASE(0x8DCA29F4),
568         HN_ULONG_TO_UBASE(0x145F902B), HN_ULONG_TO_UBASE(0xB8746330),
569         HN_ULONG_TO_UBASE(0xFE2CEBEC), HN_ULONG_TO_UBASE(0x816D6F86),
570         HN_ULONG_TO_UBASE(0x00000068)
571     },
572 
573     /* 23G.x */
574     {
575         HN_ULONG_TO_UBASE(0x2A7FABD6), HN_ULONG_TO_UBASE(0x5B774088),
576         HN_ULONG_TO_UBASE(0x826F236E), HN_ULONG_TO_UBASE(0x0911E7F0),
577         HN_ULONG_TO_UBASE(0x84F0BBD3), HN_ULONG_TO_UBASE(0xBC4D014C),
578         HN_ULONG_TO_UBASE(0x2E000C1A), HN_ULONG_TO_UBASE(0x0B8BCD8F),
579         HN_ULONG_TO_UBASE(0x2DDEB721), HN_ULONG_TO_UBASE(0xD5FF7778),
580         HN_ULONG_TO_UBASE(0x7EF826A9), HN_ULONG_TO_UBASE(0x0F7A76F9),
581         HN_ULONG_TO_UBASE(0x644D2F94), HN_ULONG_TO_UBASE(0x031CE26F),
582         HN_ULONG_TO_UBASE(0x78FDC7ED), HN_ULONG_TO_UBASE(0x1EAFDC82),
583         HN_ULONG_TO_UBASE(0x000001E2)
584     },
585 
586     /* 23G.y */
587     {
588         HN_ULONG_TO_UBASE(0xA60BC2A1), HN_ULONG_TO_UBASE(0x16BF1952),
589         HN_ULONG_TO_UBASE(0x3DD7DCD5), HN_ULONG_TO_UBASE(0x2CE4110C),
590         HN_ULONG_TO_UBASE(0x78E260C3), HN_ULONG_TO_UBASE(0x3DF02BF1),
591         HN_ULONG_TO_UBASE(0x3944B29C), HN_ULONG_TO_UBASE(0x132208C2),
592         HN_ULONG_TO_UBASE(0x59682E01), HN_ULONG_TO_UBASE(0x13ADD246),
593         HN_ULONG_TO_UBASE(0x133B08C5), HN_ULONG_TO_UBASE(0x87922B46),
594         HN_ULONG_TO_UBASE(0x51C7AEA4), HN_ULONG_TO_UBASE(0x5B3E4932),
595         HN_ULONG_TO_UBASE(0x9380BDFF), HN_ULONG_TO_UBASE(0x9E77C83B),
596         HN_ULONG_TO_UBASE(0x000000E0)
597     },
598 
599     /* 24G.x */
600     {
601         HN_ULONG_TO_UBASE(0x54746586), HN_ULONG_TO_UBASE(0x3CE44040),
602         HN_ULONG_TO_UBASE(0x31E2CB31), HN_ULONG_TO_UBASE(0x5260F1BE),
603         HN_ULONG_TO_UBASE(0x1C0A1DC6), HN_ULONG_TO_UBASE(0x802E6890),
604         HN_ULONG_TO_UBASE(0xF84363BB), HN_ULONG_TO_UBASE(0x5E9AAEA8),
605         HN_ULONG_TO_UBASE(0x4CCCCA39), HN_ULONG_TO_UBASE(0xFFD8A962),
606         HN_ULONG_TO_UBASE(0xFA9EF6E4), HN_ULONG_TO_UBASE(0xE12A8BE6),
607         HN_ULONG_TO_UBASE(0x31BE868F), HN_ULONG_TO_UBASE(0x85338185),
608         HN_ULONG_TO_UBASE(0xA23A3B36), HN_ULONG_TO_UBASE(0x25878406),
609         HN_ULONG_TO_UBASE(0x0000003C)
610     },
611 
612     /* 24G.y */
613     {
614         HN_ULONG_TO_UBASE(0x96E54499), HN_ULONG_TO_UBASE(0x14827414),
615         HN_ULONG_TO_UBASE(0x8E050034), HN_ULONG_TO_UBASE(0xA0732F96),
616         HN_ULONG_TO_UBASE(0x467CADC7), HN_ULONG_TO_UBASE(0x1C6FA676),
617         HN_ULONG_TO_UBASE(0x98D6927C), HN_ULONG_TO_UBASE(0xA63BA10C),
618         HN_ULONG_TO_UBASE(0xDCC2500F), HN_ULONG_TO_UBASE(0x58CB6F96),
619         HN_ULONG_TO_UBASE(0xEA4FD9C5), HN_ULONG_TO_UBASE(0xACCB76D6),
620         HN_ULONG_TO_UBASE(0x30786990), HN_ULONG_TO_UBASE(0xE2A2F59B),
621         HN_ULONG_TO_UBASE(0xD224CCFE), HN_ULONG_TO_UBASE(0xD8B24679),
622         HN_ULONG_TO_UBASE(0x000001B2)
623     },
624 
625     /* 25G.x */
626     {
627         HN_ULONG_TO_UBASE(0xA84D476C), HN_ULONG_TO_UBASE(0xDBE7BC43),
628         HN_ULONG_TO_UBASE(0x0DF0F82F), HN_ULONG_TO_UBASE(0x80C66135),
629         HN_ULONG_TO_UBASE(0x7996B3DD), HN_ULONG_TO_UBASE(0xFDA3915E),
630         HN_ULONG_TO_UBASE(0x5460B6A5), HN_ULONG_TO_UBASE(0xD309856F),
631         HN_ULONG_TO_UBASE(0xFB5F2A03), HN_ULONG_TO_UBASE(0xDA60ECFB),
632         HN_ULONG_TO_UBASE(0x87F5C81E), HN_ULONG_TO_UBASE(0xB45421CC),
633         HN_ULONG_TO_UBASE(0x93297E69), HN_ULONG_TO_UBASE(0xE78F50B7),
634         HN_ULONG_TO_UBASE(0x92B7AB1B), HN_ULONG_TO_UBASE(0xB57EF6E0),
635         HN_ULONG_TO_UBASE(0x00000020)
636     },
637 
638     /* 25G.y */
639     {
640         HN_ULONG_TO_UBASE(0xD5A7E947), HN_ULONG_TO_UBASE(0x2FAC246B),
641         HN_ULONG_TO_UBASE(0x3C2C0E9E), HN_ULONG_TO_UBASE(0xA3560F17),
642         HN_ULONG_TO_UBASE(0x99A15EDC), HN_ULONG_TO_UBASE(0x36F3BEA7),
643         HN_ULONG_TO_UBASE(0xF6DF7626), HN_ULONG_TO_UBASE(0x51E0953F),
644         HN_ULONG_TO_UBASE(0xE181410F), HN_ULONG_TO_UBASE(0x791FB8F1),
645         HN_ULONG_TO_UBASE(0x065B1CD7), HN_ULONG_TO_UBASE(0x9E592427),
646         HN_ULONG_TO_UBASE(0x6E9A54B5), HN_ULONG_TO_UBASE(0x492C7736),
647         HN_ULONG_TO_UBASE(0xF664EAD5), HN_ULONG_TO_UBASE(0x8F186347),
648         HN_ULONG_TO_UBASE(0x000001DE)
649     },
650 
651     /* 26G.x */
652     {
653         HN_ULONG_TO_UBASE(0xCC9F295B), HN_ULONG_TO_UBASE(0xF8B25DE3),
654         HN_ULONG_TO_UBASE(0xD481F758), HN_ULONG_TO_UBASE(0x6A3A6AFD),
655         HN_ULONG_TO_UBASE(0xD7194DD7), HN_ULONG_TO_UBASE(0x0F362D65),
656         HN_ULONG_TO_UBASE(0x72839C8B), HN_ULONG_TO_UBASE(0xD0706B14),
657         HN_ULONG_TO_UBASE(0x86E79D73), HN_ULONG_TO_UBASE(0x863FC677),
658         HN_ULONG_TO_UBASE(0xBD51AA66), HN_ULONG_TO_UBASE(0x7A312DD4),
659         HN_ULONG_TO_UBASE(0xE2FB1520), HN_ULONG_TO_UBASE(0x4F54148B),
660         HN_ULONG_TO_UBASE(0xD3FAFAA8), HN_ULONG_TO_UBASE(0xF819350E),
661         HN_ULONG_TO_UBASE(0x000000A5)
662     },
663 
664     /* 26G.y */
665     {
666         HN_ULONG_TO_UBASE(0xD0BA1319), HN_ULONG_TO_UBASE(0xDADE2B22),
667         HN_ULONG_TO_UBASE(0x0E128DE4), HN_ULONG_TO_UBASE(0xEC0DF712),
668         HN_ULONG_TO_UBASE(0xA47D34B8), HN_ULONG_TO_UBASE(0xBFBB4A30),
669         HN_ULONG_TO_UBASE(0x6C0FE4B4), HN_ULONG_TO_UBASE(0x27A996FE),
670         HN_ULONG_TO_UBASE(0xFC390C4C), HN_ULONG_TO_UBASE(0xF37AC376),
671         HN_ULONG_TO_UBASE(0x8F1D9559), HN_ULONG_TO_UBASE(0xA28F1992),
672         HN_ULONG_TO_UBASE(0x7917FB9E), HN_ULONG_TO_UBASE(0x59A81149),
673         HN_ULONG_TO_UBASE(0x24E5BB5E), HN_ULONG_TO_UBASE(0x5658B74F),
674         HN_ULONG_TO_UBASE(0x000001C1)
675     },
676 
677     /* 27G.x */
678     {
679         HN_ULONG_TO_UBASE(0xE090CB47), HN_ULONG_TO_UBASE(0x0B8C54ED),
680         HN_ULONG_TO_UBASE(0xABACC4B9), HN_ULONG_TO_UBASE(0xDDCEF543),
681         HN_ULONG_TO_UBASE(0x6F45D144), HN_ULONG_TO_UBASE(0xAA5D9F95),
682         HN_ULONG_TO_UBASE(0x6D5B0B7D), HN_ULONG_TO_UBASE(0x5829EA88),
683         HN_ULONG_TO_UBASE(0x5D9B5A9B), HN_ULONG_TO_UBASE(0xA08415C0),
684         HN_ULONG_TO_UBASE(0x9D469207), HN_ULONG_TO_UBASE(0x0DCDD858),
685         HN_ULONG_TO_UBASE(0xAD47D576), HN_ULONG_TO_UBASE(0x91EF5090),
686         HN_ULONG_TO_UBASE(0xFC9C5403), HN_ULONG_TO_UBASE(0x286B59F7),
687         HN_ULONG_TO_UBASE(0x000000A4)
688     },
689 
690     /* 27G.y */
691     {
692         HN_ULONG_TO_UBASE(0x681A6033), HN_ULONG_TO_UBASE(0x51F28B4E),
693         HN_ULONG_TO_UBASE(0x5586A02D), HN_ULONG_TO_UBASE(0x92C8812F),
694         HN_ULONG_TO_UBASE(0x37F75BE9), HN_ULONG_TO_UBASE(0x65497752),
695         HN_ULONG_TO_UBASE(0xE465AC3D), HN_ULONG_TO_UBASE(0x39ED9C48),
696         HN_ULONG_TO_UBASE(0xEA5746A3), HN_ULONG_TO_UBASE(0x52B0558D),
697         HN_ULONG_TO_UBASE(0x2281BF57), HN_ULONG_TO_UBASE(0xB1AD72EA),
698         HN_ULONG_TO_UBASE(0xC29BC5BA), HN_ULONG_TO_UBASE(0xFA48BE23),
699         HN_ULONG_TO_UBASE(0xB11E0B1A), HN_ULONG_TO_UBASE(0x5DDD7E6B),
700         HN_ULONG_TO_UBASE(0x00000144)
701     },
702 
703     /* 28G.x */
704     {
705         HN_ULONG_TO_UBASE(0xDFBF1C5D), HN_ULONG_TO_UBASE(0x6B91BD8F),
706         HN_ULONG_TO_UBASE(0x35CBBE74), HN_ULONG_TO_UBASE(0x29CBC8C5),
707         HN_ULONG_TO_UBASE(0xECA1F1E8), HN_ULONG_TO_UBASE(0xF2BF1BF0),
708         HN_ULONG_TO_UBASE(0x8B74129C), HN_ULONG_TO_UBASE(0x64BC1B61),
709         HN_ULONG_TO_UBASE(0xA26DB0BA), HN_ULONG_TO_UBASE(0x5701D92D),
710         HN_ULONG_TO_UBASE(0x629C49B0), HN_ULONG_TO_UBASE(0x3BBBDA1D),
711         HN_ULONG_TO_UBASE(0x628F9CF9), HN_ULONG_TO_UBASE(0x77932B00),
712         HN_ULONG_TO_UBASE(0xE3B93FD6), HN_ULONG_TO_UBASE(0xF4DD2F98),
713         HN_ULONG_TO_UBASE(0x0000004E)
714     },
715 
716     /* 28G.y */
717     {
718         HN_ULONG_TO_UBASE(0xE84D1AA9), HN_ULONG_TO_UBASE(0x50D3F239),
719         HN_ULONG_TO_UBASE(0x80BE7733), HN_ULONG_TO_UBASE(0x76243D29),
720         HN_ULONG_TO_UBASE(0x5F3A7F3E), HN_ULONG_TO_UBASE(0x8F1F1050),
721         HN_ULONG_TO_UBASE(0xFCEF3C41), HN_ULONG_TO_UBASE(0x5B49D4A6),
722         HN_ULONG_TO_UBASE(0x15608CF3), HN_ULONG_TO_UBASE(0x97025D37),
723         HN_ULONG_TO_UBASE(0x0ADCFFE2), HN_ULONG_TO_UBASE(0x8CE7FBDA),
724         HN_ULONG_TO_UBASE(0xF8EFC79A), HN_ULONG_TO_UBASE(0xDB4849EC),
725         HN_ULONG_TO_UBASE(0x67855D5B), HN_ULONG_TO_UBASE(0xFE454312),
726         HN_ULONG_TO_UBASE(0x00000087)
727     },
728 
729     /* 29G.x */
730     {
731         HN_ULONG_TO_UBASE(0x643FA4EF), HN_ULONG_TO_UBASE(0xC6D4508A),
732         HN_ULONG_TO_UBASE(0x2F666F82), HN_ULONG_TO_UBASE(0xA54E8CC0),
733         HN_ULONG_TO_UBASE(0x2DC798A4), HN_ULONG_TO_UBASE(0x34A01969),
734         HN_ULONG_TO_UBASE(0x111EBEC5), HN_ULONG_TO_UBASE(0x3B92FC56),
735         HN_ULONG_TO_UBASE(0xCE2FEDD7), HN_ULONG_TO_UBASE(0x8F6BDC34),
736         HN_ULONG_TO_UBASE(0x57CC1DC0), HN_ULONG_TO_UBASE(0x9D5D1B75),
737         HN_ULONG_TO_UBASE(0xB8FEF3F8), HN_ULONG_TO_UBASE(0x8019D044),
738         HN_ULONG_TO_UBASE(0xA5F3C3DA), HN_ULONG_TO_UBASE(0x8CB35753),
739         HN_ULONG_TO_UBASE(0x00000091)
740     },
741 
742     /* 29G.y */
743     {
744         HN_ULONG_TO_UBASE(0x1D608111), HN_ULONG_TO_UBASE(0x81975CB9),
745         HN_ULONG_TO_UBASE(0x6D5131E8), HN_ULONG_TO_UBASE(0x423B14C7),
746         HN_ULONG_TO_UBASE(0x9822E028), HN_ULONG_TO_UBASE(0xCD872107),
747         HN_ULONG_TO_UBASE(0x55997E16), HN_ULONG_TO_UBASE(0x3B325E7E),
748         HN_ULONG_TO_UBASE(0x77CB3C94), HN_ULONG_TO_UBASE(0x076A9D7A),
749         HN_ULONG_TO_UBASE(0xA0038852), HN_ULONG_TO_UBASE(0xBC1550AA),
750         HN_ULONG_TO_UBASE(0xF47B925F), HN_ULONG_TO_UBASE(0x4F0E3B8E),
751         HN_ULONG_TO_UBASE(0xDAA979F8), HN_ULONG_TO_UBASE(0xEFD3DA16),
752         HN_ULONG_TO_UBASE(0x00000117)
753     },
754 
755     /* 30G.x */
756     {
757         HN_ULONG_TO_UBASE(0x8D320182), HN_ULONG_TO_UBASE(0x39D27F3B),
758         HN_ULONG_TO_UBASE(0x57F13AD2), HN_ULONG_TO_UBASE(0xAF725A25),
759         HN_ULONG_TO_UBASE(0x21F64D54), HN_ULONG_TO_UBASE(0x776680A4),
760         HN_ULONG_TO_UBASE(0x346AD04E), HN_ULONG_TO_UBASE(0x8C76F109),
761         HN_ULONG_TO_UBASE(0x02313957), HN_ULONG_TO_UBASE(0x1C57732C),
762         HN_ULONG_TO_UBASE(0x0026D082), HN_ULONG_TO_UBASE(0xD610C412),
763         HN_ULONG_TO_UBASE(0x9F070119), HN_ULONG_TO_UBASE(0xBF2AFD03),
764         HN_ULONG_TO_UBASE(0x0FE119E2), HN_ULONG_TO_UBASE(0xB78AB112),
765         HN_ULONG_TO_UBASE(0x00000195)
766     },
767 
768     /* 30G.y */
769     {
770         HN_ULONG_TO_UBASE(0xDE80E59F), HN_ULONG_TO_UBASE(0x6759CF0F),
771         HN_ULONG_TO_UBASE(0x1C569A55), HN_ULONG_TO_UBASE(0xBC9C518D),
772         HN_ULONG_TO_UBASE(0x6CCC33E7), HN_ULONG_TO_UBASE(0x9EF3AFB2),
773         HN_ULONG_TO_UBASE(0x3B2B65A2), HN_ULONG_TO_UBASE(0x54CD7E1C),
774         HN_ULONG_TO_UBASE(0x89020840), HN_ULONG_TO_UBASE(0x056D2549),
775         HN_ULONG_TO_UBASE(0xEA20691F), HN_ULONG_TO_UBASE(0x2B8C3C49),
776         HN_ULONG_TO_UBASE(0xECF9ED3D), HN_ULONG_TO_UBASE(0xDD6F6CAD),
777         HN_ULONG_TO_UBASE(0xCD81C6B2), HN_ULONG_TO_UBASE(0x0287ED9E),
778         HN_ULONG_TO_UBASE(0x000001AA)
779     },
780 
781     /* 31G.x */
782     {
783         HN_ULONG_TO_UBASE(0x0886FCE5), HN_ULONG_TO_UBASE(0x0932A85E),
784         HN_ULONG_TO_UBASE(0x539E0749), HN_ULONG_TO_UBASE(0xF22990FC),
785         HN_ULONG_TO_UBASE(0x9622B480), HN_ULONG_TO_UBASE(0x0900525D),
786         HN_ULONG_TO_UBASE(0x2322A79E), HN_ULONG_TO_UBASE(0xF8159FB8),
787         HN_ULONG_TO_UBASE(0x52225E4A), HN_ULONG_TO_UBASE(0x16BC8FBA),
788         HN_ULONG_TO_UBASE(0x3A8B6083), HN_ULONG_TO_UBASE(0x80AED84F),
789         HN_ULONG_TO_UBASE(0x7C8B52D4), HN_ULONG_TO_UBASE(0x0EC2EA9E),
790         HN_ULONG_TO_UBASE(0x8C474025), HN_ULONG_TO_UBASE(0x88586280),
791         HN_ULONG_TO_UBASE(0x00000122)
792     },
793 
794     /* 31G.y */
795     {
796         HN_ULONG_TO_UBASE(0x1FA537FC), HN_ULONG_TO_UBASE(0x7E82B98A),
797         HN_ULONG_TO_UBASE(0xB07AEE91), HN_ULONG_TO_UBASE(0x06814D94),
798         HN_ULONG_TO_UBASE(0x39BBF49E), HN_ULONG_TO_UBASE(0x2ACE89A4),
799         HN_ULONG_TO_UBASE(0x572F35DE), HN_ULONG_TO_UBASE(0x4272B632),
800         HN_ULONG_TO_UBASE(0xA6132D49), HN_ULONG_TO_UBASE(0x4AA5EC9C),
801         HN_ULONG_TO_UBASE(0x0AC0CC3E), HN_ULONG_TO_UBASE(0x6DA8505B),
802         HN_ULONG_TO_UBASE(0xF0B72ACE), HN_ULONG_TO_UBASE(0xE50B950F),
803         HN_ULONG_TO_UBASE(0xEB7A6DCB), HN_ULONG_TO_UBASE(0x38D4E07D),
804         HN_ULONG_TO_UBASE(0x000000BB)
805     }
806 };
807 static NX_CRYPTO_CONST HN_UBASE           secp521r1_fixed_points_2e_data[][68 >> HN_SIZE_SHIFT] =
808 {
809 
810     /* 2^e * 1G.x */
811     {
812         HN_ULONG_TO_UBASE(0x676A875A), HN_ULONG_TO_UBASE(0xB19A5828),
813         HN_ULONG_TO_UBASE(0xC83A4911), HN_ULONG_TO_UBASE(0x40729F28),
814         HN_ULONG_TO_UBASE(0xC6DCE05B), HN_ULONG_TO_UBASE(0x511949B1),
815         HN_ULONG_TO_UBASE(0x3FCF0490), HN_ULONG_TO_UBASE(0x25914C8C),
816         HN_ULONG_TO_UBASE(0x0C6C2742), HN_ULONG_TO_UBASE(0xC49490DE),
817         HN_ULONG_TO_UBASE(0xDF6CD770), HN_ULONG_TO_UBASE(0x3B21FEEF),
818         HN_ULONG_TO_UBASE(0xDD1A82A2), HN_ULONG_TO_UBASE(0x012D2802),
819         HN_ULONG_TO_UBASE(0x6453439D), HN_ULONG_TO_UBASE(0x72F5A0B7),
820         HN_ULONG_TO_UBASE(0x00000020)
821     },
822 
823     /* 2^e * 1G.y */
824     {
825         HN_ULONG_TO_UBASE(0x9B58E26D), HN_ULONG_TO_UBASE(0x3E85D07D),
826         HN_ULONG_TO_UBASE(0x1C50AF24), HN_ULONG_TO_UBASE(0x56527BDD),
827         HN_ULONG_TO_UBASE(0x7DF377D0), HN_ULONG_TO_UBASE(0x564B5658),
828         HN_ULONG_TO_UBASE(0x65E97A30), HN_ULONG_TO_UBASE(0xF5B03358),
829         HN_ULONG_TO_UBASE(0x6B31BC52), HN_ULONG_TO_UBASE(0x2B22D6E9),
830         HN_ULONG_TO_UBASE(0xCCCD4BBA), HN_ULONG_TO_UBASE(0x8AD449AB),
831         HN_ULONG_TO_UBASE(0xF7C162A2), HN_ULONG_TO_UBASE(0x84B8B888),
832         HN_ULONG_TO_UBASE(0x4D56F29B), HN_ULONG_TO_UBASE(0x3B647F0E),
833         HN_ULONG_TO_UBASE(0x000001FB)
834     },
835 
836     /* 2^e * 2G.x */
837     {
838         HN_ULONG_TO_UBASE(0x9CAFE97E), HN_ULONG_TO_UBASE(0x686698E8),
839         HN_ULONG_TO_UBASE(0xB6891510), HN_ULONG_TO_UBASE(0x3F2A465D),
840         HN_ULONG_TO_UBASE(0xC9AAD498), HN_ULONG_TO_UBASE(0xA99BCD91),
841         HN_ULONG_TO_UBASE(0xA47C770B), HN_ULONG_TO_UBASE(0x0C7AE217),
842         HN_ULONG_TO_UBASE(0x6A5E6F06), HN_ULONG_TO_UBASE(0x95067A8B),
843         HN_ULONG_TO_UBASE(0x25A11429), HN_ULONG_TO_UBASE(0x0B55DA40),
844         HN_ULONG_TO_UBASE(0x997CABFF), HN_ULONG_TO_UBASE(0x5372B805),
845         HN_ULONG_TO_UBASE(0x963D233F), HN_ULONG_TO_UBASE(0x1E8BF414),
846         HN_ULONG_TO_UBASE(0x0000002B)
847     },
848 
849     /* 2^e * 2G.y */
850     {
851         HN_ULONG_TO_UBASE(0xAB613409), HN_ULONG_TO_UBASE(0x1343EBE6),
852         HN_ULONG_TO_UBASE(0xAC96CD26), HN_ULONG_TO_UBASE(0x7AAB5A01),
853         HN_ULONG_TO_UBASE(0x112C0B65), HN_ULONG_TO_UBASE(0x243758AF),
854         HN_ULONG_TO_UBASE(0xB236CAD6), HN_ULONG_TO_UBASE(0xD276E441),
855         HN_ULONG_TO_UBASE(0x557111DA), HN_ULONG_TO_UBASE(0x88A7D43F),
856         HN_ULONG_TO_UBASE(0xA0F46068), HN_ULONG_TO_UBASE(0xC6DACE8B),
857         HN_ULONG_TO_UBASE(0xCF4A5CEB), HN_ULONG_TO_UBASE(0x866C31EF),
858         HN_ULONG_TO_UBASE(0x9554F30C), HN_ULONG_TO_UBASE(0x6DD991B8),
859         HN_ULONG_TO_UBASE(0x00000066)
860     },
861 
862     /* 2^e * 3G.x */
863     {
864         HN_ULONG_TO_UBASE(0xD3E5BCDA), HN_ULONG_TO_UBASE(0x542A7180),
865         HN_ULONG_TO_UBASE(0x7A94EFCB), HN_ULONG_TO_UBASE(0x4AF33286),
866         HN_ULONG_TO_UBASE(0x17AB6AE0), HN_ULONG_TO_UBASE(0x7B9B88E1),
867         HN_ULONG_TO_UBASE(0x040672E3), HN_ULONG_TO_UBASE(0x39D62FAB),
868         HN_ULONG_TO_UBASE(0x32FEB463), HN_ULONG_TO_UBASE(0x41F41B8A),
869         HN_ULONG_TO_UBASE(0x0A699C83), HN_ULONG_TO_UBASE(0x0268C13E),
870         HN_ULONG_TO_UBASE(0x3B3B6CD8), HN_ULONG_TO_UBASE(0x111976EA),
871         HN_ULONG_TO_UBASE(0x404660C9), HN_ULONG_TO_UBASE(0x5CFB4C1D),
872         HN_ULONG_TO_UBASE(0x000000FB)
873     },
874 
875     /* 2^e * 3G.y */
876     {
877         HN_ULONG_TO_UBASE(0x6810A938), HN_ULONG_TO_UBASE(0x87E514CE),
878         HN_ULONG_TO_UBASE(0x48BA41A4), HN_ULONG_TO_UBASE(0x65A8EA95),
879         HN_ULONG_TO_UBASE(0x3B052CBF), HN_ULONG_TO_UBASE(0xAAE6A840),
880         HN_ULONG_TO_UBASE(0x7DEB11C0), HN_ULONG_TO_UBASE(0xD470CDFF),
881         HN_ULONG_TO_UBASE(0x822A18AF), HN_ULONG_TO_UBASE(0xC3531E99),
882         HN_ULONG_TO_UBASE(0x1428CB49), HN_ULONG_TO_UBASE(0xD53F05C1),
883         HN_ULONG_TO_UBASE(0xB6E4EDA7), HN_ULONG_TO_UBASE(0xF2217457),
884         HN_ULONG_TO_UBASE(0x4561F140), HN_ULONG_TO_UBASE(0x92F3A027),
885         HN_ULONG_TO_UBASE(0x000000A8)
886     },
887 
888     /* 2^e * 4G.x */
889     {
890         HN_ULONG_TO_UBASE(0x4876BAB8), HN_ULONG_TO_UBASE(0xC68052C9),
891         HN_ULONG_TO_UBASE(0xF84C2E38), HN_ULONG_TO_UBASE(0x81F704BA),
892         HN_ULONG_TO_UBASE(0xF2CF9927), HN_ULONG_TO_UBASE(0x28BB9436),
893         HN_ULONG_TO_UBASE(0xD06C972C), HN_ULONG_TO_UBASE(0xB89BBFA0),
894         HN_ULONG_TO_UBASE(0xB7A78E76), HN_ULONG_TO_UBASE(0x00FE1DD8),
895         HN_ULONG_TO_UBASE(0xF7F1E1AA), HN_ULONG_TO_UBASE(0x3ADFB05A),
896         HN_ULONG_TO_UBASE(0xB7278EEE), HN_ULONG_TO_UBASE(0x45321E42),
897         HN_ULONG_TO_UBASE(0xA528EBE4), HN_ULONG_TO_UBASE(0x13D850E0),
898         HN_ULONG_TO_UBASE(0x0000006F)
899     },
900 
901     /* 2^e * 4G.y */
902     {
903         HN_ULONG_TO_UBASE(0x1934143A), HN_ULONG_TO_UBASE(0x6B724C68),
904         HN_ULONG_TO_UBASE(0xB657D809), HN_ULONG_TO_UBASE(0x2F944AFD),
905         HN_ULONG_TO_UBASE(0xABA2FA08), HN_ULONG_TO_UBASE(0x38E501DF),
906         HN_ULONG_TO_UBASE(0xBE66E568), HN_ULONG_TO_UBASE(0x9285ECE1),
907         HN_ULONG_TO_UBASE(0xF9DF3327), HN_ULONG_TO_UBASE(0x7AF221F7),
908         HN_ULONG_TO_UBASE(0xDE74AEFC), HN_ULONG_TO_UBASE(0x00B8A86F),
909         HN_ULONG_TO_UBASE(0x9A992072), HN_ULONG_TO_UBASE(0x19D67518),
910         HN_ULONG_TO_UBASE(0xD9DDBBB6), HN_ULONG_TO_UBASE(0x806D1C88),
911         HN_ULONG_TO_UBASE(0x0000009B)
912     },
913 
914     /* 2^e * 5G.x */
915     {
916         HN_ULONG_TO_UBASE(0x69223216), HN_ULONG_TO_UBASE(0x903F9E4D),
917         HN_ULONG_TO_UBASE(0x605F145F), HN_ULONG_TO_UBASE(0x27CA08BA),
918         HN_ULONG_TO_UBASE(0xCE206603), HN_ULONG_TO_UBASE(0xA7806921),
919         HN_ULONG_TO_UBASE(0xE613A7B5), HN_ULONG_TO_UBASE(0x605F63EA),
920         HN_ULONG_TO_UBASE(0xAEE0B687), HN_ULONG_TO_UBASE(0xC9522A1A),
921         HN_ULONG_TO_UBASE(0xA0B479D4), HN_ULONG_TO_UBASE(0xA3FEBB3F),
922         HN_ULONG_TO_UBASE(0x63C1DC7E), HN_ULONG_TO_UBASE(0x4E4C7434),
923         HN_ULONG_TO_UBASE(0x3BE76DB6), HN_ULONG_TO_UBASE(0xF25C30D1),
924         HN_ULONG_TO_UBASE(0x0000011B)
925     },
926 
927     /* 2^e * 5G.y */
928     {
929         HN_ULONG_TO_UBASE(0x34782D9F), HN_ULONG_TO_UBASE(0x0C5E62AF),
930         HN_ULONG_TO_UBASE(0xD72C5FF7), HN_ULONG_TO_UBASE(0xD7820151),
931         HN_ULONG_TO_UBASE(0x6803C198), HN_ULONG_TO_UBASE(0xD373F830),
932         HN_ULONG_TO_UBASE(0x4A7D6949), HN_ULONG_TO_UBASE(0x0130F180),
933         HN_ULONG_TO_UBASE(0x45F00A89), HN_ULONG_TO_UBASE(0x3D1806E1),
934         HN_ULONG_TO_UBASE(0x9141560F), HN_ULONG_TO_UBASE(0x34452841),
935         HN_ULONG_TO_UBASE(0x1202463D), HN_ULONG_TO_UBASE(0xEC6077CF),
936         HN_ULONG_TO_UBASE(0x78B546B9), HN_ULONG_TO_UBASE(0xC8FECC41),
937         HN_ULONG_TO_UBASE(0x0000009D)
938     },
939 
940     /* 2^e * 6G.x */
941     {
942         HN_ULONG_TO_UBASE(0x5CBA8E1C), HN_ULONG_TO_UBASE(0x1C8C8F82),
943         HN_ULONG_TO_UBASE(0xD444D2D8), HN_ULONG_TO_UBASE(0xA591AB99),
944         HN_ULONG_TO_UBASE(0xD33871C0), HN_ULONG_TO_UBASE(0xA61764E5),
945         HN_ULONG_TO_UBASE(0x3DF6159A), HN_ULONG_TO_UBASE(0x53C89BEC),
946         HN_ULONG_TO_UBASE(0x43E938E7), HN_ULONG_TO_UBASE(0x27B258B6),
947         HN_ULONG_TO_UBASE(0xDCAB4FDB), HN_ULONG_TO_UBASE(0x82AE0C0A),
948         HN_ULONG_TO_UBASE(0xE5690F75), HN_ULONG_TO_UBASE(0x7265C1A3),
949         HN_ULONG_TO_UBASE(0x9D05D099), HN_ULONG_TO_UBASE(0xAEFDF1FC),
950         HN_ULONG_TO_UBASE(0x00000084)
951     },
952 
953     /* 2^e * 6G.y */
954     {
955         HN_ULONG_TO_UBASE(0xA25FE19D), HN_ULONG_TO_UBASE(0x1D3A011F),
956         HN_ULONG_TO_UBASE(0x56E437F8), HN_ULONG_TO_UBASE(0x6173D09C),
957         HN_ULONG_TO_UBASE(0x17C1F149), HN_ULONG_TO_UBASE(0x139B51BB),
958         HN_ULONG_TO_UBASE(0x610A2561), HN_ULONG_TO_UBASE(0x15F39F5A),
959         HN_ULONG_TO_UBASE(0x9C5FFCF7), HN_ULONG_TO_UBASE(0x83860303),
960         HN_ULONG_TO_UBASE(0xADACF2EE), HN_ULONG_TO_UBASE(0x1D7B83D0),
961         HN_ULONG_TO_UBASE(0xEFB9E833), HN_ULONG_TO_UBASE(0xC947072C),
962         HN_ULONG_TO_UBASE(0x9E785B57), HN_ULONG_TO_UBASE(0xDCFAB8C0),
963         HN_ULONG_TO_UBASE(0x00000028)
964     },
965 
966     /* 2^e * 7G.x */
967     {
968         HN_ULONG_TO_UBASE(0xA14A0C3B), HN_ULONG_TO_UBASE(0xC8AE34DA),
969         HN_ULONG_TO_UBASE(0x360B4741), HN_ULONG_TO_UBASE(0xBF6251D0),
970         HN_ULONG_TO_UBASE(0x3AA611C7), HN_ULONG_TO_UBASE(0x4DA0E31F),
971         HN_ULONG_TO_UBASE(0x043332E7), HN_ULONG_TO_UBASE(0xCED6DAB0),
972         HN_ULONG_TO_UBASE(0xA7202A78), HN_ULONG_TO_UBASE(0x6EA39A17),
973         HN_ULONG_TO_UBASE(0x72A1A2A0), HN_ULONG_TO_UBASE(0x8166A916),
974         HN_ULONG_TO_UBASE(0x9E01EFA7), HN_ULONG_TO_UBASE(0x885466C5),
975         HN_ULONG_TO_UBASE(0x2F36F714), HN_ULONG_TO_UBASE(0x86F2D088),
976         HN_ULONG_TO_UBASE(0x00000048)
977     },
978 
979     /* 2^e * 7G.y */
980     {
981         HN_ULONG_TO_UBASE(0x0B9C62F8), HN_ULONG_TO_UBASE(0x10A8AB6A),
982         HN_ULONG_TO_UBASE(0x9F1A0FCA), HN_ULONG_TO_UBASE(0xE2DC4728),
983         HN_ULONG_TO_UBASE(0x131F3E96), HN_ULONG_TO_UBASE(0x6D685928),
984         HN_ULONG_TO_UBASE(0x5EF9C6BE), HN_ULONG_TO_UBASE(0x5593F3DE),
985         HN_ULONG_TO_UBASE(0xFDA508D5), HN_ULONG_TO_UBASE(0x28A1C653),
986         HN_ULONG_TO_UBASE(0xEEF18BF0), HN_ULONG_TO_UBASE(0x8D202E40),
987         HN_ULONG_TO_UBASE(0xEB6017C8), HN_ULONG_TO_UBASE(0xA67A3238),
988         HN_ULONG_TO_UBASE(0x302DECD2), HN_ULONG_TO_UBASE(0xDAAF32B6),
989         HN_ULONG_TO_UBASE(0x000000C0)
990     },
991 
992     /* 2^e * 8G.x */
993     {
994         HN_ULONG_TO_UBASE(0x75804DA9), HN_ULONG_TO_UBASE(0x2A7E8AC1),
995         HN_ULONG_TO_UBASE(0x8D50BDC6), HN_ULONG_TO_UBASE(0x0B41F611),
996         HN_ULONG_TO_UBASE(0xD8FAFB1C), HN_ULONG_TO_UBASE(0xCFA0A757),
997         HN_ULONG_TO_UBASE(0xD231A6B0), HN_ULONG_TO_UBASE(0x75540D94),
998         HN_ULONG_TO_UBASE(0x0C4FE03D), HN_ULONG_TO_UBASE(0x524440FB),
999         HN_ULONG_TO_UBASE(0xCE9738DD), HN_ULONG_TO_UBASE(0xB8665FBF),
1000         HN_ULONG_TO_UBASE(0x8F1BD64F), HN_ULONG_TO_UBASE(0xBB74F6A8),
1001         HN_ULONG_TO_UBASE(0xBB8D6C67), HN_ULONG_TO_UBASE(0x063AFA3C),
1002         HN_ULONG_TO_UBASE(0x00000189)
1003     },
1004 
1005     /* 2^e * 8G.y */
1006     {
1007         HN_ULONG_TO_UBASE(0xA864385F), HN_ULONG_TO_UBASE(0x259B9DA4),
1008         HN_ULONG_TO_UBASE(0x17C2597B), HN_ULONG_TO_UBASE(0xDBAFC55C),
1009         HN_ULONG_TO_UBASE(0x56BF5D23), HN_ULONG_TO_UBASE(0xDE890ACB),
1010         HN_ULONG_TO_UBASE(0xF8455B59), HN_ULONG_TO_UBASE(0xE51182C0),
1011         HN_ULONG_TO_UBASE(0xC456E1C7), HN_ULONG_TO_UBASE(0x75D51A03),
1012         HN_ULONG_TO_UBASE(0xB318E747), HN_ULONG_TO_UBASE(0x9C7929C6),
1013         HN_ULONG_TO_UBASE(0x39B3ED84), HN_ULONG_TO_UBASE(0xAF23A7F1),
1014         HN_ULONG_TO_UBASE(0x910F4AB2), HN_ULONG_TO_UBASE(0xEE136A2B),
1015         HN_ULONG_TO_UBASE(0x000001AC)
1016     },
1017 
1018     /* 2^e * 9G.x */
1019     {
1020         HN_ULONG_TO_UBASE(0x10EDB455), HN_ULONG_TO_UBASE(0x5A846285),
1021         HN_ULONG_TO_UBASE(0x7CB3C393), HN_ULONG_TO_UBASE(0x492D3EE0),
1022         HN_ULONG_TO_UBASE(0x49F1C83D), HN_ULONG_TO_UBASE(0x779FD159),
1023         HN_ULONG_TO_UBASE(0x0C164C56), HN_ULONG_TO_UBASE(0x70F2BD93),
1024         HN_ULONG_TO_UBASE(0x87270536), HN_ULONG_TO_UBASE(0xF11541B1),
1025         HN_ULONG_TO_UBASE(0x001F110D), HN_ULONG_TO_UBASE(0x9A1D03EC),
1026         HN_ULONG_TO_UBASE(0x2CD19157), HN_ULONG_TO_UBASE(0x9A9CD471),
1027         HN_ULONG_TO_UBASE(0x16F2F4E9), HN_ULONG_TO_UBASE(0x692625ED),
1028         HN_ULONG_TO_UBASE(0x00000113)
1029     },
1030 
1031     /* 2^e * 9G.y */
1032     {
1033         HN_ULONG_TO_UBASE(0xA2375E46), HN_ULONG_TO_UBASE(0xADF5832B),
1034         HN_ULONG_TO_UBASE(0x4E45C385), HN_ULONG_TO_UBASE(0x9B5B3203),
1035         HN_ULONG_TO_UBASE(0xD7314FC0), HN_ULONG_TO_UBASE(0xCEE366FB),
1036         HN_ULONG_TO_UBASE(0x9FB9F8DF), HN_ULONG_TO_UBASE(0x83E59B17),
1037         HN_ULONG_TO_UBASE(0x7616255D), HN_ULONG_TO_UBASE(0xE5B74F6A),
1038         HN_ULONG_TO_UBASE(0x3A87EC4B), HN_ULONG_TO_UBASE(0xBB827578),
1039         HN_ULONG_TO_UBASE(0x7C844501), HN_ULONG_TO_UBASE(0x4E0A3BA8),
1040         HN_ULONG_TO_UBASE(0x406C10EA), HN_ULONG_TO_UBASE(0x26B9131F),
1041         HN_ULONG_TO_UBASE(0x00000072)
1042     },
1043 
1044     /* 2^e * 10G.x */
1045     {
1046         HN_ULONG_TO_UBASE(0x1B2224AE), HN_ULONG_TO_UBASE(0x8102F95D),
1047         HN_ULONG_TO_UBASE(0x02003EE8), HN_ULONG_TO_UBASE(0xC8D99E6E),
1048         HN_ULONG_TO_UBASE(0x6769CA9A), HN_ULONG_TO_UBASE(0x62C2B5FE),
1049         HN_ULONG_TO_UBASE(0x21539A2F), HN_ULONG_TO_UBASE(0x33F46864),
1050         HN_ULONG_TO_UBASE(0x65BAE93C), HN_ULONG_TO_UBASE(0xBA60DDBC),
1051         HN_ULONG_TO_UBASE(0x6607E20B), HN_ULONG_TO_UBASE(0xC7DA4B45),
1052         HN_ULONG_TO_UBASE(0xED92F4A7), HN_ULONG_TO_UBASE(0xE2AEEE9E),
1053         HN_ULONG_TO_UBASE(0x0E2758C0), HN_ULONG_TO_UBASE(0x0B441AD0),
1054         HN_ULONG_TO_UBASE(0x00000062)
1055     },
1056 
1057     /* 2^e * 10G.y */
1058     {
1059         HN_ULONG_TO_UBASE(0xDF3933D0), HN_ULONG_TO_UBASE(0x83D72850),
1060         HN_ULONG_TO_UBASE(0x4A60FCCD), HN_ULONG_TO_UBASE(0x12A095B3),
1061         HN_ULONG_TO_UBASE(0xBD945946), HN_ULONG_TO_UBASE(0xC738C99A),
1062         HN_ULONG_TO_UBASE(0x1C3701C9), HN_ULONG_TO_UBASE(0xF24672E8),
1063         HN_ULONG_TO_UBASE(0xC32B64B2), HN_ULONG_TO_UBASE(0xDD434498),
1064         HN_ULONG_TO_UBASE(0xAFE1CB1B), HN_ULONG_TO_UBASE(0x186CCDD9),
1065         HN_ULONG_TO_UBASE(0x9231BE0D), HN_ULONG_TO_UBASE(0x08AB7CA2),
1066         HN_ULONG_TO_UBASE(0xD9725EB2), HN_ULONG_TO_UBASE(0x2138E749),
1067         HN_ULONG_TO_UBASE(0x0000008F)
1068     },
1069 
1070     /* 2^e * 11G.x */
1071     {
1072         HN_ULONG_TO_UBASE(0x8D8E4201), HN_ULONG_TO_UBASE(0x380B390D),
1073         HN_ULONG_TO_UBASE(0x2D998419), HN_ULONG_TO_UBASE(0xE5EA50D0),
1074         HN_ULONG_TO_UBASE(0xBEE95A0D), HN_ULONG_TO_UBASE(0x8A2EF170),
1075         HN_ULONG_TO_UBASE(0xF0E0DC21), HN_ULONG_TO_UBASE(0xF66AC193),
1076         HN_ULONG_TO_UBASE(0x5E7BBC57), HN_ULONG_TO_UBASE(0x95D0F8EF),
1077         HN_ULONG_TO_UBASE(0x2077303D), HN_ULONG_TO_UBASE(0x4BE62601),
1078         HN_ULONG_TO_UBASE(0xA11052F9), HN_ULONG_TO_UBASE(0x2CDDE57F),
1079         HN_ULONG_TO_UBASE(0x10E34694), HN_ULONG_TO_UBASE(0xB61494A5),
1080         HN_ULONG_TO_UBASE(0x0000005D)
1081     },
1082 
1083     /* 2^e * 11G.y */
1084     {
1085         HN_ULONG_TO_UBASE(0x33371EAD), HN_ULONG_TO_UBASE(0x66DB89E1),
1086         HN_ULONG_TO_UBASE(0x2FF6715D), HN_ULONG_TO_UBASE(0x4D0E181E),
1087         HN_ULONG_TO_UBASE(0x35DFB301), HN_ULONG_TO_UBASE(0x7E12B26D),
1088         HN_ULONG_TO_UBASE(0x861468AC), HN_ULONG_TO_UBASE(0x7CD336DE),
1089         HN_ULONG_TO_UBASE(0xB83B16B5), HN_ULONG_TO_UBASE(0x7813A4DA),
1090         HN_ULONG_TO_UBASE(0xCACD41AD), HN_ULONG_TO_UBASE(0x589C9008),
1091         HN_ULONG_TO_UBASE(0xF3E6D2BC), HN_ULONG_TO_UBASE(0x36FBC288),
1092         HN_ULONG_TO_UBASE(0x09BBA03F), HN_ULONG_TO_UBASE(0xCD479ED2),
1093         HN_ULONG_TO_UBASE(0x000001E9)
1094     },
1095 
1096     /* 2^e * 12G.x */
1097     {
1098         HN_ULONG_TO_UBASE(0x91489C53), HN_ULONG_TO_UBASE(0x25066A08),
1099         HN_ULONG_TO_UBASE(0x05082881), HN_ULONG_TO_UBASE(0x15A59222),
1100         HN_ULONG_TO_UBASE(0x2773DE00), HN_ULONG_TO_UBASE(0x5A74DBF6),
1101         HN_ULONG_TO_UBASE(0x5ABB1822), HN_ULONG_TO_UBASE(0x4004EA8A),
1102         HN_ULONG_TO_UBASE(0x44446ABA), HN_ULONG_TO_UBASE(0x7234A193),
1103         HN_ULONG_TO_UBASE(0xF80F21BA), HN_ULONG_TO_UBASE(0xC8039867),
1104         HN_ULONG_TO_UBASE(0x0B0277C1), HN_ULONG_TO_UBASE(0x57B09BF9),
1105         HN_ULONG_TO_UBASE(0x07FBAA90), HN_ULONG_TO_UBASE(0x90F47A5D),
1106         HN_ULONG_TO_UBASE(0x000001A6)
1107     },
1108 
1109     /* 2^e * 12G.y */
1110     {
1111         HN_ULONG_TO_UBASE(0x66A9943A), HN_ULONG_TO_UBASE(0x863B8C68),
1112         HN_ULONG_TO_UBASE(0xB3ECB8F1), HN_ULONG_TO_UBASE(0x1EB77A2A),
1113         HN_ULONG_TO_UBASE(0x5F0CF86A), HN_ULONG_TO_UBASE(0xC5BF5AD4),
1114         HN_ULONG_TO_UBASE(0x492A65D3), HN_ULONG_TO_UBASE(0x54F6D638),
1115         HN_ULONG_TO_UBASE(0xBB2FF375), HN_ULONG_TO_UBASE(0x74758E9C),
1116         HN_ULONG_TO_UBASE(0xEEF24C47), HN_ULONG_TO_UBASE(0x8E2A6AAC),
1117         HN_ULONG_TO_UBASE(0x5108A526), HN_ULONG_TO_UBASE(0x7D5F8E0D),
1118         HN_ULONG_TO_UBASE(0x0DF1CC2F), HN_ULONG_TO_UBASE(0xAC8D6017),
1119         HN_ULONG_TO_UBASE(0x000001E3)
1120     },
1121 
1122     /* 2^e * 13G.x */
1123     {
1124         HN_ULONG_TO_UBASE(0xCF2F551A), HN_ULONG_TO_UBASE(0x601ED1E8),
1125         HN_ULONG_TO_UBASE(0xAF8168FE), HN_ULONG_TO_UBASE(0x39EF8675),
1126         HN_ULONG_TO_UBASE(0xE3134C4E), HN_ULONG_TO_UBASE(0x9AF97216),
1127         HN_ULONG_TO_UBASE(0x6EE59F26), HN_ULONG_TO_UBASE(0x66D9AF36),
1128         HN_ULONG_TO_UBASE(0xB88A023F), HN_ULONG_TO_UBASE(0x2E6550E0),
1129         HN_ULONG_TO_UBASE(0x43858CE3), HN_ULONG_TO_UBASE(0x7CB91B61),
1130         HN_ULONG_TO_UBASE(0x57909965), HN_ULONG_TO_UBASE(0x75692C88),
1131         HN_ULONG_TO_UBASE(0x9075D0F2), HN_ULONG_TO_UBASE(0x04504573),
1132         HN_ULONG_TO_UBASE(0x000000E4)
1133     },
1134 
1135     /* 2^e * 13G.y */
1136     {
1137         HN_ULONG_TO_UBASE(0x85B9A86D), HN_ULONG_TO_UBASE(0x448ABDD4),
1138         HN_ULONG_TO_UBASE(0x5741BB99), HN_ULONG_TO_UBASE(0x7D30A2D6),
1139         HN_ULONG_TO_UBASE(0xB94CD1AA), HN_ULONG_TO_UBASE(0x11CCF882),
1140         HN_ULONG_TO_UBASE(0xE6FE3CB5), HN_ULONG_TO_UBASE(0x3E4DD048),
1141         HN_ULONG_TO_UBASE(0x35D6DA36), HN_ULONG_TO_UBASE(0x6B23A98E),
1142         HN_ULONG_TO_UBASE(0x10F12633), HN_ULONG_TO_UBASE(0xCCCC9D1F),
1143         HN_ULONG_TO_UBASE(0xE6D04EE8), HN_ULONG_TO_UBASE(0xA8A67168),
1144         HN_ULONG_TO_UBASE(0x9F38E9BA), HN_ULONG_TO_UBASE(0x7B0E18CB),
1145         HN_ULONG_TO_UBASE(0x00000174)
1146     },
1147 
1148     /* 2^e * 14G.x */
1149     {
1150         HN_ULONG_TO_UBASE(0xC47DA14D), HN_ULONG_TO_UBASE(0x76599B16),
1151         HN_ULONG_TO_UBASE(0xECCD8EB8), HN_ULONG_TO_UBASE(0x5CBD674E),
1152         HN_ULONG_TO_UBASE(0x31B1CE8C), HN_ULONG_TO_UBASE(0x0381C1BE),
1153         HN_ULONG_TO_UBASE(0xD9787586), HN_ULONG_TO_UBASE(0x1A4CC8A7),
1154         HN_ULONG_TO_UBASE(0x82D6647A), HN_ULONG_TO_UBASE(0x1E14E554),
1155         HN_ULONG_TO_UBASE(0xB5276105), HN_ULONG_TO_UBASE(0x0C9D21B8),
1156         HN_ULONG_TO_UBASE(0x555BBF90), HN_ULONG_TO_UBASE(0x01C81C60),
1157         HN_ULONG_TO_UBASE(0x441FD043), HN_ULONG_TO_UBASE(0xD30E5BDF),
1158         HN_ULONG_TO_UBASE(0x0000017F)
1159     },
1160 
1161     /* 2^e * 14G.y */
1162     {
1163         HN_ULONG_TO_UBASE(0xF2A11F1D), HN_ULONG_TO_UBASE(0x56FF1478),
1164         HN_ULONG_TO_UBASE(0x26BF7BFF), HN_ULONG_TO_UBASE(0x5EEFD30E),
1165         HN_ULONG_TO_UBASE(0xAEBEEBC0), HN_ULONG_TO_UBASE(0x91DF30F6),
1166         HN_ULONG_TO_UBASE(0xD467164E), HN_ULONG_TO_UBASE(0x6FA9CF72),
1167         HN_ULONG_TO_UBASE(0xFC9F6B8C), HN_ULONG_TO_UBASE(0xDF3EB9DE),
1168         HN_ULONG_TO_UBASE(0x7EB6A7AD), HN_ULONG_TO_UBASE(0x466C3ED2),
1169         HN_ULONG_TO_UBASE(0x39DACF99), HN_ULONG_TO_UBASE(0x9DF5BBB3),
1170         HN_ULONG_TO_UBASE(0x6ED70A2D), HN_ULONG_TO_UBASE(0xAAEF2093),
1171         HN_ULONG_TO_UBASE(0x0000009F)
1172     },
1173 
1174     /* 2^e * 15G.x */
1175     {
1176         HN_ULONG_TO_UBASE(0x2F0213E3), HN_ULONG_TO_UBASE(0x05E0CF26),
1177         HN_ULONG_TO_UBASE(0xC41F8B29), HN_ULONG_TO_UBASE(0x0E2C764A),
1178         HN_ULONG_TO_UBASE(0x2FD6407D), HN_ULONG_TO_UBASE(0x17E7DE66),
1179         HN_ULONG_TO_UBASE(0xE44FD06E), HN_ULONG_TO_UBASE(0xEF95AADA),
1180         HN_ULONG_TO_UBASE(0xE561D1BE), HN_ULONG_TO_UBASE(0x1BC6FEE3),
1181         HN_ULONG_TO_UBASE(0x892B2FD5), HN_ULONG_TO_UBASE(0x04BACC8C),
1182         HN_ULONG_TO_UBASE(0x2FC3DEF6), HN_ULONG_TO_UBASE(0xE2BE924E),
1183         HN_ULONG_TO_UBASE(0x137AEBFD), HN_ULONG_TO_UBASE(0xCD6EBB93),
1184         HN_ULONG_TO_UBASE(0x00000000)
1185     },
1186 
1187     /* 2^e * 15G.y */
1188     {
1189         HN_ULONG_TO_UBASE(0xEDF2B39B), HN_ULONG_TO_UBASE(0xE9CFE98F),
1190         HN_ULONG_TO_UBASE(0x4CD2BE13), HN_ULONG_TO_UBASE(0x6B57B776),
1191         HN_ULONG_TO_UBASE(0xDC33EC78), HN_ULONG_TO_UBASE(0x942BC3AB),
1192         HN_ULONG_TO_UBASE(0x45E081CE), HN_ULONG_TO_UBASE(0x99E931E8),
1193         HN_ULONG_TO_UBASE(0x5E55B855), HN_ULONG_TO_UBASE(0x595E70C7),
1194         HN_ULONG_TO_UBASE(0x163FB2D6), HN_ULONG_TO_UBASE(0x8D58B2C5),
1195         HN_ULONG_TO_UBASE(0x1EA48357), HN_ULONG_TO_UBASE(0x69BD6665),
1196         HN_ULONG_TO_UBASE(0xD1DB8EE7), HN_ULONG_TO_UBASE(0x79F54D5A),
1197         HN_ULONG_TO_UBASE(0x0000010F)
1198     },
1199 
1200     /* 2^e * 16G.x */
1201     {
1202         HN_ULONG_TO_UBASE(0x18E71DD8), HN_ULONG_TO_UBASE(0xCB300761),
1203         HN_ULONG_TO_UBASE(0x04886B27), HN_ULONG_TO_UBASE(0x01D26846),
1204         HN_ULONG_TO_UBASE(0x7CC1D69E), HN_ULONG_TO_UBASE(0x22871D7B),
1205         HN_ULONG_TO_UBASE(0xD0B3CAF9), HN_ULONG_TO_UBASE(0x1D138A47),
1206         HN_ULONG_TO_UBASE(0x00A7C0B0), HN_ULONG_TO_UBASE(0x53AEB974),
1207         HN_ULONG_TO_UBASE(0x262F9366), HN_ULONG_TO_UBASE(0x712AA1A2),
1208         HN_ULONG_TO_UBASE(0x6BCAE07A), HN_ULONG_TO_UBASE(0x58C84DA4),
1209         HN_ULONG_TO_UBASE(0xAE8708B5), HN_ULONG_TO_UBASE(0x521B7DBC),
1210         HN_ULONG_TO_UBASE(0x00000045)
1211     },
1212 
1213     /* 2^e * 16G.y */
1214     {
1215         HN_ULONG_TO_UBASE(0x8D3CD884), HN_ULONG_TO_UBASE(0x03BD3643),
1216         HN_ULONG_TO_UBASE(0x1D62A335), HN_ULONG_TO_UBASE(0x20A737EE),
1217         HN_ULONG_TO_UBASE(0x904F5C53), HN_ULONG_TO_UBASE(0x37E1775F),
1218         HN_ULONG_TO_UBASE(0x3BAA91FD), HN_ULONG_TO_UBASE(0xB76783DD),
1219         HN_ULONG_TO_UBASE(0x9A84E971), HN_ULONG_TO_UBASE(0x7C552118),
1220         HN_ULONG_TO_UBASE(0x4488EDE7), HN_ULONG_TO_UBASE(0xD085796E),
1221         HN_ULONG_TO_UBASE(0x5068D6DC), HN_ULONG_TO_UBASE(0xB418E708),
1222         HN_ULONG_TO_UBASE(0xE5275A73), HN_ULONG_TO_UBASE(0x4417E81A),
1223         HN_ULONG_TO_UBASE(0x000000D2)
1224     },
1225 
1226     /* 2^e * 17G.x */
1227     {
1228         HN_ULONG_TO_UBASE(0x214D97FA), HN_ULONG_TO_UBASE(0x706CD750),
1229         HN_ULONG_TO_UBASE(0x5F780C94), HN_ULONG_TO_UBASE(0x08FE7535),
1230         HN_ULONG_TO_UBASE(0xF6E319D3), HN_ULONG_TO_UBASE(0x1E0CD31C),
1231         HN_ULONG_TO_UBASE(0x40EE8186), HN_ULONG_TO_UBASE(0x6876C4B2),
1232         HN_ULONG_TO_UBASE(0xDC35B5F2), HN_ULONG_TO_UBASE(0x3576B7A1),
1233         HN_ULONG_TO_UBASE(0xDC7BC4FE), HN_ULONG_TO_UBASE(0xA547E6A6),
1234         HN_ULONG_TO_UBASE(0xD6BB9E84), HN_ULONG_TO_UBASE(0x48C9AF44),
1235         HN_ULONG_TO_UBASE(0x0296E1D8), HN_ULONG_TO_UBASE(0x603902C9),
1236         HN_ULONG_TO_UBASE(0x000000B2)
1237     },
1238 
1239     /* 2^e * 17G.y */
1240     {
1241         HN_ULONG_TO_UBASE(0xD841AC3B), HN_ULONG_TO_UBASE(0x2A879081),
1242         HN_ULONG_TO_UBASE(0x67931CEB), HN_ULONG_TO_UBASE(0x068D9BB6),
1243         HN_ULONG_TO_UBASE(0x33A82324), HN_ULONG_TO_UBASE(0x53B9F2E2),
1244         HN_ULONG_TO_UBASE(0xF906B735), HN_ULONG_TO_UBASE(0xEE92294F),
1245         HN_ULONG_TO_UBASE(0xEBF90917), HN_ULONG_TO_UBASE(0x69828276),
1246         HN_ULONG_TO_UBASE(0x2A62D98A), HN_ULONG_TO_UBASE(0x63F2689E),
1247         HN_ULONG_TO_UBASE(0xBC4ECE10), HN_ULONG_TO_UBASE(0x04B43AAF),
1248         HN_ULONG_TO_UBASE(0x5FA73616), HN_ULONG_TO_UBASE(0x0CFA03A9),
1249         HN_ULONG_TO_UBASE(0x00000195)
1250     },
1251 
1252     /* 2^e * 18G.x */
1253     {
1254         HN_ULONG_TO_UBASE(0xF3A411D3), HN_ULONG_TO_UBASE(0x73FEA98E),
1255         HN_ULONG_TO_UBASE(0x98E5CBCE), HN_ULONG_TO_UBASE(0x7C97905C),
1256         HN_ULONG_TO_UBASE(0xAF1D3F28), HN_ULONG_TO_UBASE(0x1C7610EE),
1257         HN_ULONG_TO_UBASE(0xD6727BA7), HN_ULONG_TO_UBASE(0xCEF371EA),
1258         HN_ULONG_TO_UBASE(0xAF8DD567), HN_ULONG_TO_UBASE(0xBD54FC4D),
1259         HN_ULONG_TO_UBASE(0xF5240B46), HN_ULONG_TO_UBASE(0x95E69AD2),
1260         HN_ULONG_TO_UBASE(0x999679DD), HN_ULONG_TO_UBASE(0xFAA49AB7),
1261         HN_ULONG_TO_UBASE(0x39FF5965), HN_ULONG_TO_UBASE(0x882E7907),
1262         HN_ULONG_TO_UBASE(0x000000AA)
1263     },
1264 
1265     /* 2^e * 18G.y */
1266     {
1267         HN_ULONG_TO_UBASE(0x038E2424), HN_ULONG_TO_UBASE(0x357CE2C8),
1268         HN_ULONG_TO_UBASE(0x694CE848), HN_ULONG_TO_UBASE(0x6E1A67BC),
1269         HN_ULONG_TO_UBASE(0x6F7FA9BC), HN_ULONG_TO_UBASE(0xF12A4334),
1270         HN_ULONG_TO_UBASE(0x83527993), HN_ULONG_TO_UBASE(0xA81D9CC6),
1271         HN_ULONG_TO_UBASE(0x25F39419), HN_ULONG_TO_UBASE(0xD0BBAB07),
1272         HN_ULONG_TO_UBASE(0xD0C3DEFD), HN_ULONG_TO_UBASE(0xAC7E3CF3),
1273         HN_ULONG_TO_UBASE(0x2759E25D), HN_ULONG_TO_UBASE(0x240F29B9),
1274         HN_ULONG_TO_UBASE(0xDA828381), HN_ULONG_TO_UBASE(0x93D17A45),
1275         HN_ULONG_TO_UBASE(0x0000008C)
1276     },
1277 
1278     /* 2^e * 19G.x */
1279     {
1280         HN_ULONG_TO_UBASE(0x02FCB910), HN_ULONG_TO_UBASE(0x902C8A08),
1281         HN_ULONG_TO_UBASE(0xF531DECF), HN_ULONG_TO_UBASE(0xCAFB63DF),
1282         HN_ULONG_TO_UBASE(0xF3FC2396), HN_ULONG_TO_UBASE(0xDAD73D20),
1283         HN_ULONG_TO_UBASE(0x0845A72D), HN_ULONG_TO_UBASE(0x5746F263),
1284         HN_ULONG_TO_UBASE(0xB7454756), HN_ULONG_TO_UBASE(0x8755F372),
1285         HN_ULONG_TO_UBASE(0x44992953), HN_ULONG_TO_UBASE(0xFFFDDC68),
1286         HN_ULONG_TO_UBASE(0x90DE6DBE), HN_ULONG_TO_UBASE(0xC8C2089B),
1287         HN_ULONG_TO_UBASE(0x12CBE3D3), HN_ULONG_TO_UBASE(0x9C892E45),
1288         HN_ULONG_TO_UBASE(0x000001FA)
1289     },
1290 
1291     /* 2^e * 19G.y */
1292     {
1293         HN_ULONG_TO_UBASE(0xBE470471), HN_ULONG_TO_UBASE(0xCA6AE03B),
1294         HN_ULONG_TO_UBASE(0xE0385EA3), HN_ULONG_TO_UBASE(0x00FFFC9D),
1295         HN_ULONG_TO_UBASE(0x419AAFD3), HN_ULONG_TO_UBASE(0x13F7B1C7),
1296         HN_ULONG_TO_UBASE(0x67B74CA1), HN_ULONG_TO_UBASE(0x8C78C5CB),
1297         HN_ULONG_TO_UBASE(0xFD93FD1A), HN_ULONG_TO_UBASE(0x9CBB84EA),
1298         HN_ULONG_TO_UBASE(0x4CA23F38), HN_ULONG_TO_UBASE(0x3A2B3037),
1299         HN_ULONG_TO_UBASE(0xDCA7C63D), HN_ULONG_TO_UBASE(0x6B8CEE16),
1300         HN_ULONG_TO_UBASE(0x77B5E211), HN_ULONG_TO_UBASE(0x676AB915),
1301         HN_ULONG_TO_UBASE(0x0000006A)
1302     },
1303 
1304     /* 2^e * 20G.x */
1305     {
1306         HN_ULONG_TO_UBASE(0xFF27B0B5), HN_ULONG_TO_UBASE(0x3D26B7E5),
1307         HN_ULONG_TO_UBASE(0x29B02F17), HN_ULONG_TO_UBASE(0x1136AA18),
1308         HN_ULONG_TO_UBASE(0x445A2D18), HN_ULONG_TO_UBASE(0xABA2EABB),
1309         HN_ULONG_TO_UBASE(0x1F49A650), HN_ULONG_TO_UBASE(0x142D8D3E),
1310         HN_ULONG_TO_UBASE(0xF552BAAB), HN_ULONG_TO_UBASE(0x78D632C0),
1311         HN_ULONG_TO_UBASE(0xA8D7A91F), HN_ULONG_TO_UBASE(0xCADCD51C),
1312         HN_ULONG_TO_UBASE(0x487EFFC9), HN_ULONG_TO_UBASE(0xF10758B0),
1313         HN_ULONG_TO_UBASE(0x80F399AC), HN_ULONG_TO_UBASE(0x7A17FD89),
1314         HN_ULONG_TO_UBASE(0x00000125)
1315     },
1316 
1317     /* 2^e * 20G.y */
1318     {
1319         HN_ULONG_TO_UBASE(0xF5F4FF7A), HN_ULONG_TO_UBASE(0xFC5E19FF),
1320         HN_ULONG_TO_UBASE(0xA7F0AE54), HN_ULONG_TO_UBASE(0x0CD69AC0),
1321         HN_ULONG_TO_UBASE(0x69F05E26), HN_ULONG_TO_UBASE(0xDF1ECA97),
1322         HN_ULONG_TO_UBASE(0xE2D705A9), HN_ULONG_TO_UBASE(0xAE28D46F),
1323         HN_ULONG_TO_UBASE(0x612E1D65), HN_ULONG_TO_UBASE(0x8F8E9912),
1324         HN_ULONG_TO_UBASE(0x34923A11), HN_ULONG_TO_UBASE(0x771F5FDF),
1325         HN_ULONG_TO_UBASE(0xC332DF8F), HN_ULONG_TO_UBASE(0xC06E39CE),
1326         HN_ULONG_TO_UBASE(0x4F10FFD1), HN_ULONG_TO_UBASE(0x6CCBE123),
1327         HN_ULONG_TO_UBASE(0x000000EA)
1328     },
1329 
1330     /* 2^e * 21G.x */
1331     {
1332         HN_ULONG_TO_UBASE(0x5A415FC9), HN_ULONG_TO_UBASE(0xEAFEA65F),
1333         HN_ULONG_TO_UBASE(0xB6524111), HN_ULONG_TO_UBASE(0xE6067847),
1334         HN_ULONG_TO_UBASE(0x1A1A21A6), HN_ULONG_TO_UBASE(0xB071AC62),
1335         HN_ULONG_TO_UBASE(0xC5EA21B1), HN_ULONG_TO_UBASE(0x7BBE62D4),
1336         HN_ULONG_TO_UBASE(0x302E2445), HN_ULONG_TO_UBASE(0x4BFFA5D4),
1337         HN_ULONG_TO_UBASE(0x65364381), HN_ULONG_TO_UBASE(0x7740EB41),
1338         HN_ULONG_TO_UBASE(0xA6D79B3A), HN_ULONG_TO_UBASE(0x94649FB7),
1339         HN_ULONG_TO_UBASE(0x67C37F98), HN_ULONG_TO_UBASE(0xC7F325B4),
1340         HN_ULONG_TO_UBASE(0x0000010C)
1341     },
1342 
1343     /* 2^e * 21G.y */
1344     {
1345         HN_ULONG_TO_UBASE(0x37577713), HN_ULONG_TO_UBASE(0xC872C98C),
1346         HN_ULONG_TO_UBASE(0xAD79810C), HN_ULONG_TO_UBASE(0xFD73F990),
1347         HN_ULONG_TO_UBASE(0xE12D0640), HN_ULONG_TO_UBASE(0x7E85646D),
1348         HN_ULONG_TO_UBASE(0xDC0CD5EE), HN_ULONG_TO_UBASE(0xEB850FEC),
1349         HN_ULONG_TO_UBASE(0x3109AD42), HN_ULONG_TO_UBASE(0xFD8A4FAD),
1350         HN_ULONG_TO_UBASE(0xC15EBE5E), HN_ULONG_TO_UBASE(0xE43B24AF),
1351         HN_ULONG_TO_UBASE(0xE65EBC48), HN_ULONG_TO_UBASE(0xC0F0D5CB),
1352         HN_ULONG_TO_UBASE(0xBCEF2AE2), HN_ULONG_TO_UBASE(0x0CB90F23),
1353         HN_ULONG_TO_UBASE(0x00000135)
1354     },
1355 
1356     /* 2^e * 22G.x */
1357     {
1358         HN_ULONG_TO_UBASE(0xDD9AB07E), HN_ULONG_TO_UBASE(0x51AB0502),
1359         HN_ULONG_TO_UBASE(0x31639329), HN_ULONG_TO_UBASE(0xFFE752C0),
1360         HN_ULONG_TO_UBASE(0x777D9243), HN_ULONG_TO_UBASE(0x59558384),
1361         HN_ULONG_TO_UBASE(0xE8CD61AC), HN_ULONG_TO_UBASE(0xCF5F9D1D),
1362         HN_ULONG_TO_UBASE(0x00BAD307), HN_ULONG_TO_UBASE(0xC9091087),
1363         HN_ULONG_TO_UBASE(0xEB9C6441), HN_ULONG_TO_UBASE(0x176ADF78),
1364         HN_ULONG_TO_UBASE(0xBD1ABEBC), HN_ULONG_TO_UBASE(0x6B678E90),
1365         HN_ULONG_TO_UBASE(0x562561AB), HN_ULONG_TO_UBASE(0xC4DD06B2),
1366         HN_ULONG_TO_UBASE(0x000001A7)
1367     },
1368 
1369     /* 2^e * 22G.y */
1370     {
1371         HN_ULONG_TO_UBASE(0xB826F85D), HN_ULONG_TO_UBASE(0xA9AB9A04),
1372         HN_ULONG_TO_UBASE(0x420A802D), HN_ULONG_TO_UBASE(0x3B12FBDC),
1373         HN_ULONG_TO_UBASE(0x631BFCA8), HN_ULONG_TO_UBASE(0x5F0E4787),
1374         HN_ULONG_TO_UBASE(0x9C4D5DFC), HN_ULONG_TO_UBASE(0xA39795EE),
1375         HN_ULONG_TO_UBASE(0x8778DB79), HN_ULONG_TO_UBASE(0x381180A0),
1376         HN_ULONG_TO_UBASE(0x31B42781), HN_ULONG_TO_UBASE(0x0602DD54),
1377         HN_ULONG_TO_UBASE(0x785A9AE2), HN_ULONG_TO_UBASE(0x27BEADC3),
1378         HN_ULONG_TO_UBASE(0xD0CDBC7B), HN_ULONG_TO_UBASE(0xEF3B5C3B),
1379         HN_ULONG_TO_UBASE(0x000001B2)
1380     },
1381 
1382     /* 2^e * 23G.x */
1383     {
1384         HN_ULONG_TO_UBASE(0x74589440), HN_ULONG_TO_UBASE(0xA179FDDD),
1385         HN_ULONG_TO_UBASE(0x234C300C), HN_ULONG_TO_UBASE(0xEC2B04AB),
1386         HN_ULONG_TO_UBASE(0x9DE7BE76), HN_ULONG_TO_UBASE(0xDBFEE84D),
1387         HN_ULONG_TO_UBASE(0x4BC3DB87), HN_ULONG_TO_UBASE(0xD1AA9274),
1388         HN_ULONG_TO_UBASE(0xE102DA93), HN_ULONG_TO_UBASE(0xE27F52F9),
1389         HN_ULONG_TO_UBASE(0x398C324F), HN_ULONG_TO_UBASE(0xC9827581),
1390         HN_ULONG_TO_UBASE(0x0B9CAF80), HN_ULONG_TO_UBASE(0xFC80D771),
1391         HN_ULONG_TO_UBASE(0x3C9F77E2), HN_ULONG_TO_UBASE(0x22AA1ADA),
1392         HN_ULONG_TO_UBASE(0x000000C8)
1393     },
1394 
1395     /* 2^e * 23G.y */
1396     {
1397         HN_ULONG_TO_UBASE(0xD731ABC2), HN_ULONG_TO_UBASE(0x80583409),
1398         HN_ULONG_TO_UBASE(0xE46D97A9), HN_ULONG_TO_UBASE(0xCF611182),
1399         HN_ULONG_TO_UBASE(0x4F1C3B28), HN_ULONG_TO_UBASE(0x2CD5C0EB),
1400         HN_ULONG_TO_UBASE(0x8F363E1A), HN_ULONG_TO_UBASE(0x4C776C78),
1401         HN_ULONG_TO_UBASE(0x8F3385B8), HN_ULONG_TO_UBASE(0xF4D60732),
1402         HN_ULONG_TO_UBASE(0xDAB5D18D), HN_ULONG_TO_UBASE(0x9A409F59),
1403         HN_ULONG_TO_UBASE(0x2D053736), HN_ULONG_TO_UBASE(0x51DF0AEB),
1404         HN_ULONG_TO_UBASE(0x5E6C9B06), HN_ULONG_TO_UBASE(0xB4A66CE7),
1405         HN_ULONG_TO_UBASE(0x000001B3)
1406     },
1407 
1408     /* 2^e * 24G.x */
1409     {
1410         HN_ULONG_TO_UBASE(0xA1AF2987), HN_ULONG_TO_UBASE(0x1F0491D7),
1411         HN_ULONG_TO_UBASE(0xF5EE72FA), HN_ULONG_TO_UBASE(0xEFB019B3),
1412         HN_ULONG_TO_UBASE(0x4B8FF71C), HN_ULONG_TO_UBASE(0x73232D69),
1413         HN_ULONG_TO_UBASE(0xAB4A9C53), HN_ULONG_TO_UBASE(0x9E9BD679),
1414         HN_ULONG_TO_UBASE(0x95869A29), HN_ULONG_TO_UBASE(0xF52CB78F),
1415         HN_ULONG_TO_UBASE(0xEBA82541), HN_ULONG_TO_UBASE(0xD9792C42),
1416         HN_ULONG_TO_UBASE(0x8E842BBB), HN_ULONG_TO_UBASE(0x023B2307),
1417         HN_ULONG_TO_UBASE(0x377703F8), HN_ULONG_TO_UBASE(0x5EF5276B),
1418         HN_ULONG_TO_UBASE(0x0000001C)
1419     },
1420 
1421     /* 2^e * 24G.y */
1422     {
1423         HN_ULONG_TO_UBASE(0xCA31A9CC), HN_ULONG_TO_UBASE(0x640352D4),
1424         HN_ULONG_TO_UBASE(0xAEA459C0), HN_ULONG_TO_UBASE(0x9FD01575),
1425         HN_ULONG_TO_UBASE(0x8BEAB4A2), HN_ULONG_TO_UBASE(0xC4358ECE),
1426         HN_ULONG_TO_UBASE(0x96AA4B07), HN_ULONG_TO_UBASE(0x3A184D17),
1427         HN_ULONG_TO_UBASE(0xCF60BD74), HN_ULONG_TO_UBASE(0x59DE560F),
1428         HN_ULONG_TO_UBASE(0xF40E4EF7), HN_ULONG_TO_UBASE(0x7A9DC454),
1429         HN_ULONG_TO_UBASE(0xB826C890), HN_ULONG_TO_UBASE(0xCB3035F3),
1430         HN_ULONG_TO_UBASE(0x9B117280), HN_ULONG_TO_UBASE(0x020FB726),
1431         HN_ULONG_TO_UBASE(0x0000007D)
1432     },
1433 
1434     /* 2^e * 25G.x */
1435     {
1436         HN_ULONG_TO_UBASE(0xDEFB874E), HN_ULONG_TO_UBASE(0xEF878600),
1437         HN_ULONG_TO_UBASE(0xC14A8051), HN_ULONG_TO_UBASE(0xE9B94A26),
1438         HN_ULONG_TO_UBASE(0x7D77C97F), HN_ULONG_TO_UBASE(0x0F81A278),
1439         HN_ULONG_TO_UBASE(0xA3E681EE), HN_ULONG_TO_UBASE(0x06965AC4),
1440         HN_ULONG_TO_UBASE(0x71379B8C), HN_ULONG_TO_UBASE(0x9AEED4F7),
1441         HN_ULONG_TO_UBASE(0xA37AC136), HN_ULONG_TO_UBASE(0xDB705990),
1442         HN_ULONG_TO_UBASE(0xD5823BC0), HN_ULONG_TO_UBASE(0x389A5D5D),
1443         HN_ULONG_TO_UBASE(0x1B4EE4E2), HN_ULONG_TO_UBASE(0x57D40581),
1444         HN_ULONG_TO_UBASE(0x00000135)
1445     },
1446 
1447     /* 2^e * 25G.y */
1448     {
1449         HN_ULONG_TO_UBASE(0xC7AF700E), HN_ULONG_TO_UBASE(0x636CE1BA),
1450         HN_ULONG_TO_UBASE(0x8B0C0D67), HN_ULONG_TO_UBASE(0xB2F9306F),
1451         HN_ULONG_TO_UBASE(0xE20A95C7), HN_ULONG_TO_UBASE(0xA9BD916E),
1452         HN_ULONG_TO_UBASE(0x497B8831), HN_ULONG_TO_UBASE(0x4837218B),
1453         HN_ULONG_TO_UBASE(0x86B6BC7B), HN_ULONG_TO_UBASE(0xBAF8C4D3),
1454         HN_ULONG_TO_UBASE(0x69E3739D), HN_ULONG_TO_UBASE(0x4F0A86B9),
1455         HN_ULONG_TO_UBASE(0x726613CF), HN_ULONG_TO_UBASE(0x38ED636B),
1456         HN_ULONG_TO_UBASE(0x75F12296), HN_ULONG_TO_UBASE(0xB8A65251),
1457         HN_ULONG_TO_UBASE(0x0000014B)
1458     },
1459 
1460     /* 2^e * 26G.x */
1461     {
1462         HN_ULONG_TO_UBASE(0x2BEFB3A0), HN_ULONG_TO_UBASE(0x4A18B81E),
1463         HN_ULONG_TO_UBASE(0xB4A83956), HN_ULONG_TO_UBASE(0x6F08D7D4),
1464         HN_ULONG_TO_UBASE(0xA3A6B4EB), HN_ULONG_TO_UBASE(0xA90EC94F),
1465         HN_ULONG_TO_UBASE(0xD108D6E7), HN_ULONG_TO_UBASE(0x747A02ED),
1466         HN_ULONG_TO_UBASE(0xF9119265), HN_ULONG_TO_UBASE(0x6062D725),
1467         HN_ULONG_TO_UBASE(0xB7A0EDF7), HN_ULONG_TO_UBASE(0x4943F52C),
1468         HN_ULONG_TO_UBASE(0xF06FA9D7), HN_ULONG_TO_UBASE(0x6E3EA682),
1469         HN_ULONG_TO_UBASE(0xBF39C61E), HN_ULONG_TO_UBASE(0x515D756E),
1470         HN_ULONG_TO_UBASE(0x000001A3)
1471     },
1472 
1473     /* 2^e * 26G.y */
1474     {
1475         HN_ULONG_TO_UBASE(0x40922050), HN_ULONG_TO_UBASE(0x39688D76),
1476         HN_ULONG_TO_UBASE(0x4BACED4B), HN_ULONG_TO_UBASE(0x8C32ABBD),
1477         HN_ULONG_TO_UBASE(0x8902374F), HN_ULONG_TO_UBASE(0xA3C8F88D),
1478         HN_ULONG_TO_UBASE(0x549E30B0), HN_ULONG_TO_UBASE(0x12BE74D4),
1479         HN_ULONG_TO_UBASE(0x7D821EDF), HN_ULONG_TO_UBASE(0xB2728CE5),
1480         HN_ULONG_TO_UBASE(0xF37EBB0E), HN_ULONG_TO_UBASE(0xB09FA111),
1481         HN_ULONG_TO_UBASE(0x6EA18A93), HN_ULONG_TO_UBASE(0xAC5742C9),
1482         HN_ULONG_TO_UBASE(0xE0781A61), HN_ULONG_TO_UBASE(0x98D97597),
1483         HN_ULONG_TO_UBASE(0x000001E8)
1484     },
1485 
1486     /* 2^e * 27G.x */
1487     {
1488         HN_ULONG_TO_UBASE(0xC206D597), HN_ULONG_TO_UBASE(0x43FED51D),
1489         HN_ULONG_TO_UBASE(0x15901BE6), HN_ULONG_TO_UBASE(0x783AD4CD),
1490         HN_ULONG_TO_UBASE(0x27BFFF4E), HN_ULONG_TO_UBASE(0xEFE0FDDF),
1491         HN_ULONG_TO_UBASE(0x7B15B710), HN_ULONG_TO_UBASE(0x5967E2B4),
1492         HN_ULONG_TO_UBASE(0x6BDF98CC), HN_ULONG_TO_UBASE(0x16FED041),
1493         HN_ULONG_TO_UBASE(0x459328C3), HN_ULONG_TO_UBASE(0xB51401B3),
1494         HN_ULONG_TO_UBASE(0x960F3C2A), HN_ULONG_TO_UBASE(0x852B90EC),
1495         HN_ULONG_TO_UBASE(0x5B7E0576), HN_ULONG_TO_UBASE(0x1125A3B5),
1496         HN_ULONG_TO_UBASE(0x0000013B)
1497     },
1498 
1499     /* 2^e * 27G.y */
1500     {
1501         HN_ULONG_TO_UBASE(0xE8E0082E), HN_ULONG_TO_UBASE(0x0841E7A6),
1502         HN_ULONG_TO_UBASE(0xD29794CB), HN_ULONG_TO_UBASE(0x35781EA4),
1503         HN_ULONG_TO_UBASE(0x3C7AC894), HN_ULONG_TO_UBASE(0xD6428158),
1504         HN_ULONG_TO_UBASE(0xA42C2608), HN_ULONG_TO_UBASE(0x6B1F1B60),
1505         HN_ULONG_TO_UBASE(0x9115C670), HN_ULONG_TO_UBASE(0x54140A82),
1506         HN_ULONG_TO_UBASE(0x4B600B19), HN_ULONG_TO_UBASE(0x13391329),
1507         HN_ULONG_TO_UBASE(0x3FA27D38), HN_ULONG_TO_UBASE(0x88B5AE42),
1508         HN_ULONG_TO_UBASE(0x91056425), HN_ULONG_TO_UBASE(0x8D7B88C0),
1509         HN_ULONG_TO_UBASE(0x0000010A)
1510     },
1511 
1512     /* 2^e * 28G.x */
1513     {
1514         HN_ULONG_TO_UBASE(0x8B46D3F8), HN_ULONG_TO_UBASE(0x0A2F3F39),
1515         HN_ULONG_TO_UBASE(0x7EA5E9F5), HN_ULONG_TO_UBASE(0x74609CC4),
1516         HN_ULONG_TO_UBASE(0x90BADF07), HN_ULONG_TO_UBASE(0x799C1034),
1517         HN_ULONG_TO_UBASE(0xE0B233EA), HN_ULONG_TO_UBASE(0x164A4076),
1518         HN_ULONG_TO_UBASE(0x2E774B0B), HN_ULONG_TO_UBASE(0xB520A9B3),
1519         HN_ULONG_TO_UBASE(0x29470BD1), HN_ULONG_TO_UBASE(0xBA5A091C),
1520         HN_ULONG_TO_UBASE(0xDCC3BF73), HN_ULONG_TO_UBASE(0xE2C865C4),
1521         HN_ULONG_TO_UBASE(0x681CFF26), HN_ULONG_TO_UBASE(0xF4282B04),
1522         HN_ULONG_TO_UBASE(0x000000D2)
1523     },
1524 
1525     /* 2^e * 28G.y */
1526     {
1527         HN_ULONG_TO_UBASE(0x24998F7C), HN_ULONG_TO_UBASE(0xE5969A11),
1528         HN_ULONG_TO_UBASE(0x363B0729), HN_ULONG_TO_UBASE(0xEDCE074B),
1529         HN_ULONG_TO_UBASE(0xD890DA94), HN_ULONG_TO_UBASE(0x4440C60D),
1530         HN_ULONG_TO_UBASE(0x03EAA158), HN_ULONG_TO_UBASE(0x77689A18),
1531         HN_ULONG_TO_UBASE(0x18FD5E39), HN_ULONG_TO_UBASE(0xAC028859),
1532         HN_ULONG_TO_UBASE(0x48312251), HN_ULONG_TO_UBASE(0xA7AB91E1),
1533         HN_ULONG_TO_UBASE(0x9837DE51), HN_ULONG_TO_UBASE(0x3174DDB9),
1534         HN_ULONG_TO_UBASE(0xB6896BAF), HN_ULONG_TO_UBASE(0x2E36BC78),
1535         HN_ULONG_TO_UBASE(0x0000000F)
1536     },
1537 
1538     /* 2^e * 29G.x */
1539     {
1540         HN_ULONG_TO_UBASE(0x5D17A876), HN_ULONG_TO_UBASE(0x8D44E247),
1541         HN_ULONG_TO_UBASE(0x18F46528), HN_ULONG_TO_UBASE(0x5B2865A2),
1542         HN_ULONG_TO_UBASE(0xB8C23140), HN_ULONG_TO_UBASE(0x320E0884),
1543         HN_ULONG_TO_UBASE(0x81FAF3B6), HN_ULONG_TO_UBASE(0xE73006F1),
1544         HN_ULONG_TO_UBASE(0x0D762D20), HN_ULONG_TO_UBASE(0x56DC5142),
1545         HN_ULONG_TO_UBASE(0xC2C03220), HN_ULONG_TO_UBASE(0x8F8A3B56),
1546         HN_ULONG_TO_UBASE(0x3FF0CA07), HN_ULONG_TO_UBASE(0x977E34D1),
1547         HN_ULONG_TO_UBASE(0xDB7AF041), HN_ULONG_TO_UBASE(0x3FD45603),
1548         HN_ULONG_TO_UBASE(0x000000C0)
1549     },
1550 
1551     /* 2^e * 29G.y */
1552     {
1553         HN_ULONG_TO_UBASE(0xFE79F342), HN_ULONG_TO_UBASE(0x6E5519A9),
1554         HN_ULONG_TO_UBASE(0x05DE7057), HN_ULONG_TO_UBASE(0xAA3980BA),
1555         HN_ULONG_TO_UBASE(0x9C0D4E81), HN_ULONG_TO_UBASE(0xCE830928),
1556         HN_ULONG_TO_UBASE(0x3CDEA8F5), HN_ULONG_TO_UBASE(0x6009A11C),
1557         HN_ULONG_TO_UBASE(0xBB30ACE9), HN_ULONG_TO_UBASE(0xE89D7A25),
1558         HN_ULONG_TO_UBASE(0x359FCD76), HN_ULONG_TO_UBASE(0x118E7ABB),
1559         HN_ULONG_TO_UBASE(0x4815E518), HN_ULONG_TO_UBASE(0xD0871F6D),
1560         HN_ULONG_TO_UBASE(0x6AA2EA4D), HN_ULONG_TO_UBASE(0xA4CE655C),
1561         HN_ULONG_TO_UBASE(0x000000AF)
1562     },
1563 
1564     /* 2^e * 30G.x */
1565     {
1566         HN_ULONG_TO_UBASE(0x6C500737), HN_ULONG_TO_UBASE(0x3EB3BE81),
1567         HN_ULONG_TO_UBASE(0x1587CBBF), HN_ULONG_TO_UBASE(0x89F48224),
1568         HN_ULONG_TO_UBASE(0xCD261D7F), HN_ULONG_TO_UBASE(0x3F9877E4),
1569         HN_ULONG_TO_UBASE(0xADFD4F51), HN_ULONG_TO_UBASE(0xF2AE780D),
1570         HN_ULONG_TO_UBASE(0xC8BA1966), HN_ULONG_TO_UBASE(0xE15E5259),
1571         HN_ULONG_TO_UBASE(0x840D4515), HN_ULONG_TO_UBASE(0xCD413B47),
1572         HN_ULONG_TO_UBASE(0xC7699653), HN_ULONG_TO_UBASE(0x4EE5EFA5),
1573         HN_ULONG_TO_UBASE(0x2B609955), HN_ULONG_TO_UBASE(0xEA69BB2C),
1574         HN_ULONG_TO_UBASE(0x00000162)
1575     },
1576 
1577     /* 2^e * 30G.y */
1578     {
1579         HN_ULONG_TO_UBASE(0x292A38F0), HN_ULONG_TO_UBASE(0x6DDD0387),
1580         HN_ULONG_TO_UBASE(0xD69B1C6A), HN_ULONG_TO_UBASE(0x8BECFF5E),
1581         HN_ULONG_TO_UBASE(0x058B203D), HN_ULONG_TO_UBASE(0x215F27D6),
1582         HN_ULONG_TO_UBASE(0x7BB1B254), HN_ULONG_TO_UBASE(0x06FB452B),
1583         HN_ULONG_TO_UBASE(0xEA41B3F2), HN_ULONG_TO_UBASE(0x36986BCF),
1584         HN_ULONG_TO_UBASE(0x82095E84), HN_ULONG_TO_UBASE(0x9265CEF9),
1585         HN_ULONG_TO_UBASE(0xAA24D352), HN_ULONG_TO_UBASE(0xE7F26B92),
1586         HN_ULONG_TO_UBASE(0x885501EF), HN_ULONG_TO_UBASE(0x8B248B76),
1587         HN_ULONG_TO_UBASE(0x00000023)
1588     },
1589 
1590     /* 2^e * 31G.x */
1591     {
1592         HN_ULONG_TO_UBASE(0x5E95556E), HN_ULONG_TO_UBASE(0x4DE9BE95),
1593         HN_ULONG_TO_UBASE(0x2AA302F0), HN_ULONG_TO_UBASE(0x8E35493E),
1594         HN_ULONG_TO_UBASE(0x75652B59), HN_ULONG_TO_UBASE(0x01F4511D),
1595         HN_ULONG_TO_UBASE(0xA6D539C0), HN_ULONG_TO_UBASE(0xDF602ACC),
1596         HN_ULONG_TO_UBASE(0xA4843060), HN_ULONG_TO_UBASE(0xB29FC167),
1597         HN_ULONG_TO_UBASE(0x0D79514B), HN_ULONG_TO_UBASE(0x908C3E41),
1598         HN_ULONG_TO_UBASE(0xF91DC68B), HN_ULONG_TO_UBASE(0x47482920),
1599         HN_ULONG_TO_UBASE(0xB0716173), HN_ULONG_TO_UBASE(0x1251AF48),
1600         HN_ULONG_TO_UBASE(0x00000178)
1601     },
1602 
1603     /* 2^e * 31G.y */
1604     {
1605         HN_ULONG_TO_UBASE(0x6C3214B1), HN_ULONG_TO_UBASE(0x0FF3F326),
1606         HN_ULONG_TO_UBASE(0x6326BF28), HN_ULONG_TO_UBASE(0x78B040CD),
1607         HN_ULONG_TO_UBASE(0x0E0518B4), HN_ULONG_TO_UBASE(0x8DDEEC33),
1608         HN_ULONG_TO_UBASE(0x6F02F5C9), HN_ULONG_TO_UBASE(0x1CD3CE74),
1609         HN_ULONG_TO_UBASE(0x87A46169), HN_ULONG_TO_UBASE(0x407B3F21),
1610         HN_ULONG_TO_UBASE(0x9FE3E626), HN_ULONG_TO_UBASE(0x48203860),
1611         HN_ULONG_TO_UBASE(0xCCFA97C2), HN_ULONG_TO_UBASE(0xC0DF1ECF),
1612         HN_ULONG_TO_UBASE(0xFB2CBDC6), HN_ULONG_TO_UBASE(0x18772C40),
1613         HN_ULONG_TO_UBASE(0x0000008E)
1614     }
1615 };
1616 static NX_CRYPTO_CONST NX_CRYPTO_EC_POINT secp521r1_fixed_points_array[] =
1617 {
1618 
1619     /* 2G */
1620     {
1621         NX_CRYPTO_EC_POINT_AFFINE,
1622         {
1623             (HN_UBASE *)&secp521r1_fixed_points_data[0],
1624             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1625         },
1626         {
1627             (HN_UBASE *)&secp521r1_fixed_points_data[1],
1628             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1629         },
1630         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1631     },
1632 
1633     /* 3G */
1634     {
1635         NX_CRYPTO_EC_POINT_AFFINE,
1636         {
1637             (HN_UBASE *)&secp521r1_fixed_points_data[2],
1638             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1639         },
1640         {
1641             (HN_UBASE *)&secp521r1_fixed_points_data[3],
1642             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1643         },
1644         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1645     },
1646 
1647     /* 4G */
1648     {
1649         NX_CRYPTO_EC_POINT_AFFINE,
1650         {
1651             (HN_UBASE *)&secp521r1_fixed_points_data[4],
1652             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1653         },
1654         {
1655             (HN_UBASE *)&secp521r1_fixed_points_data[5],
1656             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1657         },
1658         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1659     },
1660 
1661     /* 5G */
1662     {
1663         NX_CRYPTO_EC_POINT_AFFINE,
1664         {
1665             (HN_UBASE *)&secp521r1_fixed_points_data[6],
1666             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1667         },
1668         {
1669             (HN_UBASE *)&secp521r1_fixed_points_data[7],
1670             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1671         },
1672         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1673     },
1674 
1675     /* 6G */
1676     {
1677         NX_CRYPTO_EC_POINT_AFFINE,
1678         {
1679             (HN_UBASE *)&secp521r1_fixed_points_data[8],
1680             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1681         },
1682         {
1683             (HN_UBASE *)&secp521r1_fixed_points_data[9],
1684             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1685         },
1686         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1687     },
1688 
1689     /* 7G */
1690     {
1691         NX_CRYPTO_EC_POINT_AFFINE,
1692         {
1693             (HN_UBASE *)&secp521r1_fixed_points_data[10],
1694             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1695         },
1696         {
1697             (HN_UBASE *)&secp521r1_fixed_points_data[11],
1698             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1699         },
1700         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1701     },
1702 
1703     /* 8G */
1704     {
1705         NX_CRYPTO_EC_POINT_AFFINE,
1706         {
1707             (HN_UBASE *)&secp521r1_fixed_points_data[12],
1708             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1709         },
1710         {
1711             (HN_UBASE *)&secp521r1_fixed_points_data[13],
1712             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1713         },
1714         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1715     },
1716 
1717     /* 9G */
1718     {
1719         NX_CRYPTO_EC_POINT_AFFINE,
1720         {
1721             (HN_UBASE *)&secp521r1_fixed_points_data[14],
1722             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1723         },
1724         {
1725             (HN_UBASE *)&secp521r1_fixed_points_data[15],
1726             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1727         },
1728         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1729     },
1730 
1731     /* 10G */
1732     {
1733         NX_CRYPTO_EC_POINT_AFFINE,
1734         {
1735             (HN_UBASE *)&secp521r1_fixed_points_data[16],
1736             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1737         },
1738         {
1739             (HN_UBASE *)&secp521r1_fixed_points_data[17],
1740             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1741         },
1742         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1743     },
1744 
1745     /* 11G */
1746     {
1747         NX_CRYPTO_EC_POINT_AFFINE,
1748         {
1749             (HN_UBASE *)&secp521r1_fixed_points_data[18],
1750             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1751         },
1752         {
1753             (HN_UBASE *)&secp521r1_fixed_points_data[19],
1754             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1755         },
1756         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1757     },
1758 
1759     /* 12G */
1760     {
1761         NX_CRYPTO_EC_POINT_AFFINE,
1762         {
1763             (HN_UBASE *)&secp521r1_fixed_points_data[20],
1764             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1765         },
1766         {
1767             (HN_UBASE *)&secp521r1_fixed_points_data[21],
1768             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1769         },
1770         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1771     },
1772 
1773     /* 13G */
1774     {
1775         NX_CRYPTO_EC_POINT_AFFINE,
1776         {
1777             (HN_UBASE *)&secp521r1_fixed_points_data[22],
1778             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1779         },
1780         {
1781             (HN_UBASE *)&secp521r1_fixed_points_data[23],
1782             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1783         },
1784         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1785     },
1786 
1787     /* 14G */
1788     {
1789         NX_CRYPTO_EC_POINT_AFFINE,
1790         {
1791             (HN_UBASE *)&secp521r1_fixed_points_data[24],
1792             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1793         },
1794         {
1795             (HN_UBASE *)&secp521r1_fixed_points_data[25],
1796             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1797         },
1798         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1799     },
1800 
1801     /* 15G */
1802     {
1803         NX_CRYPTO_EC_POINT_AFFINE,
1804         {
1805             (HN_UBASE *)&secp521r1_fixed_points_data[26],
1806             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1807         },
1808         {
1809             (HN_UBASE *)&secp521r1_fixed_points_data[27],
1810             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1811         },
1812         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1813     },
1814 
1815     /* 16G */
1816     {
1817         NX_CRYPTO_EC_POINT_AFFINE,
1818         {
1819             (HN_UBASE *)&secp521r1_fixed_points_data[28],
1820             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1821         },
1822         {
1823             (HN_UBASE *)&secp521r1_fixed_points_data[29],
1824             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1825         },
1826         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1827     },
1828 
1829     /* 17G */
1830     {
1831         NX_CRYPTO_EC_POINT_AFFINE,
1832         {
1833             (HN_UBASE *)&secp521r1_fixed_points_data[30],
1834             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1835         },
1836         {
1837             (HN_UBASE *)&secp521r1_fixed_points_data[31],
1838             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1839         },
1840         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1841     },
1842 
1843     /* 18G */
1844     {
1845         NX_CRYPTO_EC_POINT_AFFINE,
1846         {
1847             (HN_UBASE *)&secp521r1_fixed_points_data[32],
1848             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1849         },
1850         {
1851             (HN_UBASE *)&secp521r1_fixed_points_data[33],
1852             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1853         },
1854         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1855     },
1856 
1857     /* 19G */
1858     {
1859         NX_CRYPTO_EC_POINT_AFFINE,
1860         {
1861             (HN_UBASE *)&secp521r1_fixed_points_data[34],
1862             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1863         },
1864         {
1865             (HN_UBASE *)&secp521r1_fixed_points_data[35],
1866             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1867         },
1868         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1869     },
1870 
1871     /* 20G */
1872     {
1873         NX_CRYPTO_EC_POINT_AFFINE,
1874         {
1875             (HN_UBASE *)&secp521r1_fixed_points_data[36],
1876             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1877         },
1878         {
1879             (HN_UBASE *)&secp521r1_fixed_points_data[37],
1880             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1881         },
1882         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1883     },
1884 
1885     /* 21G */
1886     {
1887         NX_CRYPTO_EC_POINT_AFFINE,
1888         {
1889             (HN_UBASE *)&secp521r1_fixed_points_data[38],
1890             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1891         },
1892         {
1893             (HN_UBASE *)&secp521r1_fixed_points_data[39],
1894             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1895         },
1896         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1897     },
1898 
1899     /* 22G */
1900     {
1901         NX_CRYPTO_EC_POINT_AFFINE,
1902         {
1903             (HN_UBASE *)&secp521r1_fixed_points_data[40],
1904             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1905         },
1906         {
1907             (HN_UBASE *)&secp521r1_fixed_points_data[41],
1908             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1909         },
1910         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1911     },
1912 
1913     /* 23G */
1914     {
1915         NX_CRYPTO_EC_POINT_AFFINE,
1916         {
1917             (HN_UBASE *)&secp521r1_fixed_points_data[42],
1918             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1919         },
1920         {
1921             (HN_UBASE *)&secp521r1_fixed_points_data[43],
1922             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1923         },
1924         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1925     },
1926 
1927     /* 24G */
1928     {
1929         NX_CRYPTO_EC_POINT_AFFINE,
1930         {
1931             (HN_UBASE *)&secp521r1_fixed_points_data[44],
1932             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1933         },
1934         {
1935             (HN_UBASE *)&secp521r1_fixed_points_data[45],
1936             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1937         },
1938         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1939     },
1940 
1941     /* 25G */
1942     {
1943         NX_CRYPTO_EC_POINT_AFFINE,
1944         {
1945             (HN_UBASE *)&secp521r1_fixed_points_data[46],
1946             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1947         },
1948         {
1949             (HN_UBASE *)&secp521r1_fixed_points_data[47],
1950             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1951         },
1952         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1953     },
1954 
1955     /* 26G */
1956     {
1957         NX_CRYPTO_EC_POINT_AFFINE,
1958         {
1959             (HN_UBASE *)&secp521r1_fixed_points_data[48],
1960             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1961         },
1962         {
1963             (HN_UBASE *)&secp521r1_fixed_points_data[49],
1964             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1965         },
1966         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1967     },
1968 
1969     /* 27G */
1970     {
1971         NX_CRYPTO_EC_POINT_AFFINE,
1972         {
1973             (HN_UBASE *)&secp521r1_fixed_points_data[50],
1974             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1975         },
1976         {
1977             (HN_UBASE *)&secp521r1_fixed_points_data[51],
1978             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1979         },
1980         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1981     },
1982 
1983     /* 28G */
1984     {
1985         NX_CRYPTO_EC_POINT_AFFINE,
1986         {
1987             (HN_UBASE *)&secp521r1_fixed_points_data[52],
1988             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1989         },
1990         {
1991             (HN_UBASE *)&secp521r1_fixed_points_data[53],
1992             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
1993         },
1994         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1995     },
1996 
1997     /* 29G */
1998     {
1999         NX_CRYPTO_EC_POINT_AFFINE,
2000         {
2001             (HN_UBASE *)&secp521r1_fixed_points_data[54],
2002             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2003         },
2004         {
2005             (HN_UBASE *)&secp521r1_fixed_points_data[55],
2006             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2007         },
2008         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
2009     },
2010 
2011     /* 30G */
2012     {
2013         NX_CRYPTO_EC_POINT_AFFINE,
2014         {
2015             (HN_UBASE *)&secp521r1_fixed_points_data[56],
2016             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2017         },
2018         {
2019             (HN_UBASE *)&secp521r1_fixed_points_data[57],
2020             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2021         },
2022         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
2023     },
2024 
2025     /* 31G */
2026     {
2027         NX_CRYPTO_EC_POINT_AFFINE,
2028         {
2029             (HN_UBASE *)&secp521r1_fixed_points_data[58],
2030             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2031         },
2032         {
2033             (HN_UBASE *)&secp521r1_fixed_points_data[59],
2034             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2035         },
2036         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
2037     }
2038 };
2039 static NX_CRYPTO_CONST NX_CRYPTO_EC_POINT secp521r1_fixed_points_2e_array[] =
2040 {
2041 
2042     /* 2^e * 1G */
2043     {
2044         NX_CRYPTO_EC_POINT_AFFINE,
2045         {
2046             (HN_UBASE *)&secp521r1_fixed_points_2e_data[0],
2047             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2048         },
2049         {
2050             (HN_UBASE *)&secp521r1_fixed_points_2e_data[1],
2051             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2052         },
2053         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
2054     },
2055 
2056     /* 2^e * 2G */
2057     {
2058         NX_CRYPTO_EC_POINT_AFFINE,
2059         {
2060             (HN_UBASE *)&secp521r1_fixed_points_2e_data[2],
2061             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2062         },
2063         {
2064             (HN_UBASE *)&secp521r1_fixed_points_2e_data[3],
2065             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2066         },
2067         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
2068     },
2069 
2070     /* 2^e * 3G */
2071     {
2072         NX_CRYPTO_EC_POINT_AFFINE,
2073         {
2074             (HN_UBASE *)&secp521r1_fixed_points_2e_data[4],
2075             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2076         },
2077         {
2078             (HN_UBASE *)&secp521r1_fixed_points_2e_data[5],
2079             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2080         },
2081         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
2082     },
2083 
2084     /* 2^e * 4G */
2085     {
2086         NX_CRYPTO_EC_POINT_AFFINE,
2087         {
2088             (HN_UBASE *)&secp521r1_fixed_points_2e_data[6],
2089             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2090         },
2091         {
2092             (HN_UBASE *)&secp521r1_fixed_points_2e_data[7],
2093             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2094         },
2095         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
2096     },
2097 
2098     /* 2^e * 5G */
2099     {
2100         NX_CRYPTO_EC_POINT_AFFINE,
2101         {
2102             (HN_UBASE *)&secp521r1_fixed_points_2e_data[8],
2103             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2104         },
2105         {
2106             (HN_UBASE *)&secp521r1_fixed_points_2e_data[9],
2107             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2108         },
2109         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
2110     },
2111 
2112     /* 2^e * 6G */
2113     {
2114         NX_CRYPTO_EC_POINT_AFFINE,
2115         {
2116             (HN_UBASE *)&secp521r1_fixed_points_2e_data[10],
2117             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2118         },
2119         {
2120             (HN_UBASE *)&secp521r1_fixed_points_2e_data[11],
2121             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2122         },
2123         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
2124     },
2125 
2126     /* 2^e * 7G */
2127     {
2128         NX_CRYPTO_EC_POINT_AFFINE,
2129         {
2130             (HN_UBASE *)&secp521r1_fixed_points_2e_data[12],
2131             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2132         },
2133         {
2134             (HN_UBASE *)&secp521r1_fixed_points_2e_data[13],
2135             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2136         },
2137         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
2138     },
2139 
2140     /* 2^e * 8G */
2141     {
2142         NX_CRYPTO_EC_POINT_AFFINE,
2143         {
2144             (HN_UBASE *)&secp521r1_fixed_points_2e_data[14],
2145             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2146         },
2147         {
2148             (HN_UBASE *)&secp521r1_fixed_points_2e_data[15],
2149             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2150         },
2151         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
2152     },
2153 
2154     /* 2^e * 9G */
2155     {
2156         NX_CRYPTO_EC_POINT_AFFINE,
2157         {
2158             (HN_UBASE *)&secp521r1_fixed_points_2e_data[16],
2159             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2160         },
2161         {
2162             (HN_UBASE *)&secp521r1_fixed_points_2e_data[17],
2163             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2164         },
2165         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
2166     },
2167 
2168     /* 2^e * 10G */
2169     {
2170         NX_CRYPTO_EC_POINT_AFFINE,
2171         {
2172             (HN_UBASE *)&secp521r1_fixed_points_2e_data[18],
2173             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2174         },
2175         {
2176             (HN_UBASE *)&secp521r1_fixed_points_2e_data[19],
2177             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2178         },
2179         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
2180     },
2181 
2182     /* 2^e * 11G */
2183     {
2184         NX_CRYPTO_EC_POINT_AFFINE,
2185         {
2186             (HN_UBASE *)&secp521r1_fixed_points_2e_data[20],
2187             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2188         },
2189         {
2190             (HN_UBASE *)&secp521r1_fixed_points_2e_data[21],
2191             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2192         },
2193         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
2194     },
2195 
2196     /* 2^e * 12G */
2197     {
2198         NX_CRYPTO_EC_POINT_AFFINE,
2199         {
2200             (HN_UBASE *)&secp521r1_fixed_points_2e_data[22],
2201             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2202         },
2203         {
2204             (HN_UBASE *)&secp521r1_fixed_points_2e_data[23],
2205             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2206         },
2207         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
2208     },
2209 
2210     /* 2^e * 13G */
2211     {
2212         NX_CRYPTO_EC_POINT_AFFINE,
2213         {
2214             (HN_UBASE *)&secp521r1_fixed_points_2e_data[24],
2215             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2216         },
2217         {
2218             (HN_UBASE *)&secp521r1_fixed_points_2e_data[25],
2219             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2220         },
2221         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
2222     },
2223 
2224     /* 2^e * 14G */
2225     {
2226         NX_CRYPTO_EC_POINT_AFFINE,
2227         {
2228             (HN_UBASE *)&secp521r1_fixed_points_2e_data[26],
2229             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2230         },
2231         {
2232             (HN_UBASE *)&secp521r1_fixed_points_2e_data[27],
2233             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2234         },
2235         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
2236     },
2237 
2238     /* 2^e * 15G */
2239     {
2240         NX_CRYPTO_EC_POINT_AFFINE,
2241         {
2242             (HN_UBASE *)&secp521r1_fixed_points_2e_data[28],
2243             64 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2244         },
2245         {
2246             (HN_UBASE *)&secp521r1_fixed_points_2e_data[29],
2247             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2248         },
2249         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
2250     },
2251 
2252     /* 2^e * 16G */
2253     {
2254         NX_CRYPTO_EC_POINT_AFFINE,
2255         {
2256             (HN_UBASE *)&secp521r1_fixed_points_2e_data[30],
2257             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2258         },
2259         {
2260             (HN_UBASE *)&secp521r1_fixed_points_2e_data[31],
2261             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2262         },
2263         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
2264     },
2265 
2266     /* 2^e * 17G */
2267     {
2268         NX_CRYPTO_EC_POINT_AFFINE,
2269         {
2270             (HN_UBASE *)&secp521r1_fixed_points_2e_data[32],
2271             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2272         },
2273         {
2274             (HN_UBASE *)&secp521r1_fixed_points_2e_data[33],
2275             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2276         },
2277         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
2278     },
2279 
2280     /* 2^e * 18G */
2281     {
2282         NX_CRYPTO_EC_POINT_AFFINE,
2283         {
2284             (HN_UBASE *)&secp521r1_fixed_points_2e_data[34],
2285             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2286         },
2287         {
2288             (HN_UBASE *)&secp521r1_fixed_points_2e_data[35],
2289             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2290         },
2291         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
2292     },
2293 
2294     /* 2^e * 19G */
2295     {
2296         NX_CRYPTO_EC_POINT_AFFINE,
2297         {
2298             (HN_UBASE *)&secp521r1_fixed_points_2e_data[36],
2299             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2300         },
2301         {
2302             (HN_UBASE *)&secp521r1_fixed_points_2e_data[37],
2303             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2304         },
2305         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
2306     },
2307 
2308     /* 2^e * 20G */
2309     {
2310         NX_CRYPTO_EC_POINT_AFFINE,
2311         {
2312             (HN_UBASE *)&secp521r1_fixed_points_2e_data[38],
2313             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2314         },
2315         {
2316             (HN_UBASE *)&secp521r1_fixed_points_2e_data[39],
2317             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2318         },
2319         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
2320     },
2321 
2322     /* 2^e * 21G */
2323     {
2324         NX_CRYPTO_EC_POINT_AFFINE,
2325         {
2326             (HN_UBASE *)&secp521r1_fixed_points_2e_data[40],
2327             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2328         },
2329         {
2330             (HN_UBASE *)&secp521r1_fixed_points_2e_data[41],
2331             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2332         },
2333         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
2334     },
2335 
2336     /* 2^e * 22G */
2337     {
2338         NX_CRYPTO_EC_POINT_AFFINE,
2339         {
2340             (HN_UBASE *)&secp521r1_fixed_points_2e_data[42],
2341             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2342         },
2343         {
2344             (HN_UBASE *)&secp521r1_fixed_points_2e_data[43],
2345             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2346         },
2347         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
2348     },
2349 
2350     /* 2^e * 23G */
2351     {
2352         NX_CRYPTO_EC_POINT_AFFINE,
2353         {
2354             (HN_UBASE *)&secp521r1_fixed_points_2e_data[44],
2355             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2356         },
2357         {
2358             (HN_UBASE *)&secp521r1_fixed_points_2e_data[45],
2359             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2360         },
2361         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
2362     },
2363 
2364     /* 2^e * 24G */
2365     {
2366         NX_CRYPTO_EC_POINT_AFFINE,
2367         {
2368             (HN_UBASE *)&secp521r1_fixed_points_2e_data[46],
2369             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2370         },
2371         {
2372             (HN_UBASE *)&secp521r1_fixed_points_2e_data[47],
2373             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2374         },
2375         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
2376     },
2377 
2378     /* 2^e * 25G */
2379     {
2380         NX_CRYPTO_EC_POINT_AFFINE,
2381         {
2382             (HN_UBASE *)&secp521r1_fixed_points_2e_data[48],
2383             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2384         },
2385         {
2386             (HN_UBASE *)&secp521r1_fixed_points_2e_data[49],
2387             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2388         },
2389         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
2390     },
2391 
2392     /* 2^e * 26G */
2393     {
2394         NX_CRYPTO_EC_POINT_AFFINE,
2395         {
2396             (HN_UBASE *)&secp521r1_fixed_points_2e_data[50],
2397             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2398         },
2399         {
2400             (HN_UBASE *)&secp521r1_fixed_points_2e_data[51],
2401             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2402         },
2403         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
2404     },
2405 
2406     /* 2^e * 27G */
2407     {
2408         NX_CRYPTO_EC_POINT_AFFINE,
2409         {
2410             (HN_UBASE *)&secp521r1_fixed_points_2e_data[52],
2411             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2412         },
2413         {
2414             (HN_UBASE *)&secp521r1_fixed_points_2e_data[53],
2415             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2416         },
2417         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
2418     },
2419 
2420     /* 2^e * 28G */
2421     {
2422         NX_CRYPTO_EC_POINT_AFFINE,
2423         {
2424             (HN_UBASE *)&secp521r1_fixed_points_2e_data[54],
2425             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2426         },
2427         {
2428             (HN_UBASE *)&secp521r1_fixed_points_2e_data[55],
2429             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2430         },
2431         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
2432     },
2433 
2434     /* 2^e * 29G */
2435     {
2436         NX_CRYPTO_EC_POINT_AFFINE,
2437         {
2438             (HN_UBASE *)&secp521r1_fixed_points_2e_data[56],
2439             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2440         },
2441         {
2442             (HN_UBASE *)&secp521r1_fixed_points_2e_data[57],
2443             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2444         },
2445         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
2446     },
2447 
2448     /* 2^e * 30G */
2449     {
2450         NX_CRYPTO_EC_POINT_AFFINE,
2451         {
2452             (HN_UBASE *)&secp521r1_fixed_points_2e_data[58],
2453             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2454         },
2455         {
2456             (HN_UBASE *)&secp521r1_fixed_points_2e_data[59],
2457             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2458         },
2459         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
2460     },
2461 
2462     /* 2^e * 31G */
2463     {
2464         NX_CRYPTO_EC_POINT_AFFINE,
2465         {
2466             (HN_UBASE *)&secp521r1_fixed_points_2e_data[60],
2467             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2468         },
2469         {
2470             (HN_UBASE *)&secp521r1_fixed_points_2e_data[61],
2471             68 >> HN_SIZE_SHIFT, 68, (UINT)NX_CRYPTO_FALSE
2472         },
2473         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
2474     }
2475 };
2476 
2477 
2478 NX_CRYPTO_CONST NX_CRYPTO_EC_FIXED_POINTS _nx_crypto_ec_secp521r1_fixed_points =
2479 {
2480     5u, 521u, 105u, 53u,
2481     (NX_CRYPTO_EC_POINT *)secp521r1_fixed_points_array,
2482     (NX_CRYPTO_EC_POINT *)secp521r1_fixed_points_2e_array
2483 };
2484 
2485