1 /***************************************************************************
2  * Copyright (c) 2024 Microsoft Corporation
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the MIT License which is available at
6  * https://opensource.org/licenses/MIT.
7  *
8  * SPDX-License-Identifier: MIT
9  **************************************************************************/
10 
11 
12 /**************************************************************************/
13 /**************************************************************************/
14 /**                                                                       */
15 /** NetX Crypto Component                                                 */
16 /**                                                                       */
17 /**   Elliptical Curve Cryptography                                       */
18 /**                                                                       */
19 /**************************************************************************/
20 /**************************************************************************/
21 
22 
23 #include "nx_crypto_ec.h"
24 static NX_CRYPTO_CONST HN_UBASE           secp384r1_fixed_points_data[][48 >> HN_SIZE_SHIFT] =
25 {
26 
27     /* 2G.x */
28     {
29         HN_ULONG_TO_UBASE(0x574A2D7A), HN_ULONG_TO_UBASE(0x214A5541),
30         HN_ULONG_TO_UBASE(0x0BAFF67E), HN_ULONG_TO_UBASE(0x8BB26B1F),
31         HN_ULONG_TO_UBASE(0x685CB49E), HN_ULONG_TO_UBASE(0xE8E8A314),
32         HN_ULONG_TO_UBASE(0x05F1DBE9), HN_ULONG_TO_UBASE(0x6AD56435),
33         HN_ULONG_TO_UBASE(0x415B4393), HN_ULONG_TO_UBASE(0xB2128765),
34         HN_ULONG_TO_UBASE(0xE52E83A1), HN_ULONG_TO_UBASE(0xFDFF5D78)
35     },
36 
37     /* 2G.y */
38     {
39         HN_ULONG_TO_UBASE(0x978E2B11), HN_ULONG_TO_UBASE(0xE715E976),
40         HN_ULONG_TO_UBASE(0xD4D391B8), HN_ULONG_TO_UBASE(0xDCC72E10),
41         HN_ULONG_TO_UBASE(0xDD2D7EC4), HN_ULONG_TO_UBASE(0xEF01A9D8),
42         HN_ULONG_TO_UBASE(0x5963C951), HN_ULONG_TO_UBASE(0x00377F99),
43         HN_ULONG_TO_UBASE(0xF10B944A), HN_ULONG_TO_UBASE(0x13F5D41F),
44         HN_ULONG_TO_UBASE(0x7857AA4C), HN_ULONG_TO_UBASE(0x4DB0BC42)
45     },
46 
47     /* 3G.x */
48     {
49         HN_ULONG_TO_UBASE(0x8E8CF6BD), HN_ULONG_TO_UBASE(0x4DF624DB),
50         HN_ULONG_TO_UBASE(0x8547E6B6), HN_ULONG_TO_UBASE(0x8244132B),
51         HN_ULONG_TO_UBASE(0xEAAC9420), HN_ULONG_TO_UBASE(0xA9D5E399),
52         HN_ULONG_TO_UBASE(0x21AD8066), HN_ULONG_TO_UBASE(0x0A9B91BD),
53         HN_ULONG_TO_UBASE(0x3EEE915B), HN_ULONG_TO_UBASE(0x492ECEBD),
54         HN_ULONG_TO_UBASE(0x0FDD804E), HN_ULONG_TO_UBASE(0x5E54D953)
55     },
56 
57     /* 3G.y */
58     {
59         HN_ULONG_TO_UBASE(0xCC5A43B2), HN_ULONG_TO_UBASE(0x44288C00),
60         HN_ULONG_TO_UBASE(0x42727FD7), HN_ULONG_TO_UBASE(0xF66D7125),
61         HN_ULONG_TO_UBASE(0x89A66C33), HN_ULONG_TO_UBASE(0x6F98B352),
62         HN_ULONG_TO_UBASE(0x95821B09), HN_ULONG_TO_UBASE(0x5009A4B4),
63         HN_ULONG_TO_UBASE(0x0E8131D0), HN_ULONG_TO_UBASE(0xB5E534AC),
64         HN_ULONG_TO_UBASE(0x4BA24BC0), HN_ULONG_TO_UBASE(0x4A3D7763)
65     },
66 
67     /* 4G.x */
68     {
69         HN_ULONG_TO_UBASE(0xE0BDE8C2), HN_ULONG_TO_UBASE(0xD490B021),
70         HN_ULONG_TO_UBASE(0xCA52B096), HN_ULONG_TO_UBASE(0x6CC28A6C),
71         HN_ULONG_TO_UBASE(0xC30BD659), HN_ULONG_TO_UBASE(0xCF1DF4FD),
72         HN_ULONG_TO_UBASE(0x50FEAF12), HN_ULONG_TO_UBASE(0x0E63F460),
73         HN_ULONG_TO_UBASE(0x7F52C6E5), HN_ULONG_TO_UBASE(0xCD958F85),
74         HN_ULONG_TO_UBASE(0x34CB8FA1), HN_ULONG_TO_UBASE(0x2913D4EB)
75     },
76 
77     /* 4G.y */
78     {
79         HN_ULONG_TO_UBASE(0xB083DCB0), HN_ULONG_TO_UBASE(0xCBF987E9),
80         HN_ULONG_TO_UBASE(0xB1A874D8), HN_ULONG_TO_UBASE(0xB47F863A),
81         HN_ULONG_TO_UBASE(0xB3BB7DA7), HN_ULONG_TO_UBASE(0x2D48722E),
82         HN_ULONG_TO_UBASE(0x7603FD5F), HN_ULONG_TO_UBASE(0x27855D53),
83         HN_ULONG_TO_UBASE(0x7765A132), HN_ULONG_TO_UBASE(0xA5CCE5A0),
84         HN_ULONG_TO_UBASE(0x5A14FFB1), HN_ULONG_TO_UBASE(0x047B885F)
85     },
86 
87     /* 5G.x */
88     {
89         HN_ULONG_TO_UBASE(0x931694D6), HN_ULONG_TO_UBASE(0x3311EC54),
90         HN_ULONG_TO_UBASE(0xD26C55B2), HN_ULONG_TO_UBASE(0x66004EC3),
91         HN_ULONG_TO_UBASE(0x1F2CCD66), HN_ULONG_TO_UBASE(0xD50A0AC4),
92         HN_ULONG_TO_UBASE(0x4B047385), HN_ULONG_TO_UBASE(0x274E6260),
93         HN_ULONG_TO_UBASE(0xB7FD6664), HN_ULONG_TO_UBASE(0xD96204E4),
94         HN_ULONG_TO_UBASE(0x6AA71294), HN_ULONG_TO_UBASE(0xD23B746B)
95     },
96 
97     /* 5G.y */
98     {
99         HN_ULONG_TO_UBASE(0x46B64ADD), HN_ULONG_TO_UBASE(0x9A7231A7),
100         HN_ULONG_TO_UBASE(0xBE780847), HN_ULONG_TO_UBASE(0x47709B8E),
101         HN_ULONG_TO_UBASE(0xAA3AEC73), HN_ULONG_TO_UBASE(0xC5BE101D),
102         HN_ULONG_TO_UBASE(0xB89D3090), HN_ULONG_TO_UBASE(0x2786BD19),
103         HN_ULONG_TO_UBASE(0x09A71BA8), HN_ULONG_TO_UBASE(0x5F348F1D),
104         HN_ULONG_TO_UBASE(0x0169076A), HN_ULONG_TO_UBASE(0xE2F2CDA7)
105     },
106 
107     /* 6G.x */
108     {
109         HN_ULONG_TO_UBASE(0x12D256E1), HN_ULONG_TO_UBASE(0x0DB699E4),
110         HN_ULONG_TO_UBASE(0xA526F3F5), HN_ULONG_TO_UBASE(0xCC589514),
111         HN_ULONG_TO_UBASE(0xB6F8C073), HN_ULONG_TO_UBASE(0xE7EA29A0),
112         HN_ULONG_TO_UBASE(0xADBA7324), HN_ULONG_TO_UBASE(0x50359755),
113         HN_ULONG_TO_UBASE(0xE672C579), HN_ULONG_TO_UBASE(0x0FD7FC38),
114         HN_ULONG_TO_UBASE(0xF5D93F24), HN_ULONG_TO_UBASE(0xE9FB6A4D)
115     },
116 
117     /* 6G.y */
118     {
119         HN_ULONG_TO_UBASE(0x910A0FB5), HN_ULONG_TO_UBASE(0x9103B778),
120         HN_ULONG_TO_UBASE(0x1DE052BE), HN_ULONG_TO_UBASE(0x6E7107BD),
121         HN_ULONG_TO_UBASE(0xDBDBAE3D), HN_ULONG_TO_UBASE(0x6C24C094),
122         HN_ULONG_TO_UBASE(0x66F0CD5A), HN_ULONG_TO_UBASE(0x6F5424A9),
123         HN_ULONG_TO_UBASE(0xD171104B), HN_ULONG_TO_UBASE(0xEAB70FFA),
124         HN_ULONG_TO_UBASE(0xE51210F9), HN_ULONG_TO_UBASE(0x52AD7C38)
125     },
126 
127     /* 7G.x */
128     {
129         HN_ULONG_TO_UBASE(0x1A465EE0), HN_ULONG_TO_UBASE(0x70CB8A4C),
130         HN_ULONG_TO_UBASE(0xF8EE3F37), HN_ULONG_TO_UBASE(0xF04BA246),
131         HN_ULONG_TO_UBASE(0xC81EE126), HN_ULONG_TO_UBASE(0xD6BEAEB6),
132         HN_ULONG_TO_UBASE(0xDC50393C), HN_ULONG_TO_UBASE(0x5FC113E8),
133         HN_ULONG_TO_UBASE(0xD094B6A7), HN_ULONG_TO_UBASE(0xD0472DD3),
134         HN_ULONG_TO_UBASE(0xDA1C1669), HN_ULONG_TO_UBASE(0xB769B0BE)
135     },
136 
137     /* 7G.y */
138     {
139         HN_ULONG_TO_UBASE(0x4157BCA1), HN_ULONG_TO_UBASE(0x772481FA),
140         HN_ULONG_TO_UBASE(0x96BEEEC6), HN_ULONG_TO_UBASE(0xDE0AED5E),
141         HN_ULONG_TO_UBASE(0x284569C0), HN_ULONG_TO_UBASE(0xB9C04F16),
142         HN_ULONG_TO_UBASE(0x8B36D601), HN_ULONG_TO_UBASE(0xA2415911),
143         HN_ULONG_TO_UBASE(0xD415E1CA), HN_ULONG_TO_UBASE(0x81D51B7F),
144         HN_ULONG_TO_UBASE(0xEBAAD0A2), HN_ULONG_TO_UBASE(0x4FE542B9)
145     },
146 
147     /* 8G.x */
148     {
149         HN_ULONG_TO_UBASE(0xA93C10A7), HN_ULONG_TO_UBASE(0xCB610182),
150         HN_ULONG_TO_UBASE(0x036AFB3B), HN_ULONG_TO_UBASE(0xBD5059C9),
151         HN_ULONG_TO_UBASE(0xFAAC375A), HN_ULONG_TO_UBASE(0xCB538303),
152         HN_ULONG_TO_UBASE(0xAC1B02F4), HN_ULONG_TO_UBASE(0xC35A94E6),
153         HN_ULONG_TO_UBASE(0x8AE7D58B), HN_ULONG_TO_UBASE(0x8B5D4209),
154         HN_ULONG_TO_UBASE(0x004241BD), HN_ULONG_TO_UBASE(0xA8EB2114)
155     },
156 
157     /* 8G.y */
158     {
159         HN_ULONG_TO_UBASE(0x262FAC2C), HN_ULONG_TO_UBASE(0xAA3C554A),
160         HN_ULONG_TO_UBASE(0x31306B48), HN_ULONG_TO_UBASE(0xC6D2BCDF),
161         HN_ULONG_TO_UBASE(0xFAB6BE4D), HN_ULONG_TO_UBASE(0x0ADAE8A9),
162         HN_ULONG_TO_UBASE(0x0EA77D12), HN_ULONG_TO_UBASE(0x89B18AED),
163         HN_ULONG_TO_UBASE(0xA2675D24), HN_ULONG_TO_UBASE(0x2C4382FF),
164         HN_ULONG_TO_UBASE(0x105529BA), HN_ULONG_TO_UBASE(0xABB60CE6)
165     },
166 
167     /* 9G.x */
168     {
169         HN_ULONG_TO_UBASE(0xEDF8C996), HN_ULONG_TO_UBASE(0x7FFAF718),
170         HN_ULONG_TO_UBASE(0xC58B999A), HN_ULONG_TO_UBASE(0x4EE49986),
171         HN_ULONG_TO_UBASE(0xBA5328E9), HN_ULONG_TO_UBASE(0x5FDC0C0F),
172         HN_ULONG_TO_UBASE(0x4DE7B0B3), HN_ULONG_TO_UBASE(0x22BB9F3B),
173         HN_ULONG_TO_UBASE(0x79A8B5AB), HN_ULONG_TO_UBASE(0x59BDB661),
174         HN_ULONG_TO_UBASE(0x5B46960B), HN_ULONG_TO_UBASE(0xA41CEB96)
175     },
176 
177     /* 9G.y */
178     {
179         HN_ULONG_TO_UBASE(0x673F565B), HN_ULONG_TO_UBASE(0xF95FD896),
180         HN_ULONG_TO_UBASE(0x5546575D), HN_ULONG_TO_UBASE(0x1682F977),
181         HN_ULONG_TO_UBASE(0x725E981D), HN_ULONG_TO_UBASE(0x985159D4),
182         HN_ULONG_TO_UBASE(0x82EDFF44), HN_ULONG_TO_UBASE(0x2CFE484D),
183         HN_ULONG_TO_UBASE(0xE5EFAAD0), HN_ULONG_TO_UBASE(0x785CB625),
184         HN_ULONG_TO_UBASE(0x10E28346), HN_ULONG_TO_UBASE(0xC6E94CF8)
185     },
186 
187     /* 10G.x */
188     {
189         HN_ULONG_TO_UBASE(0xE79FC953), HN_ULONG_TO_UBASE(0xCFA78FCC),
190         HN_ULONG_TO_UBASE(0x62A76A5B), HN_ULONG_TO_UBASE(0xD8503095),
191         HN_ULONG_TO_UBASE(0x4AB1FB6E), HN_ULONG_TO_UBASE(0xDF363E09),
192         HN_ULONG_TO_UBASE(0xA506B01A), HN_ULONG_TO_UBASE(0x907E97BA),
193         HN_ULONG_TO_UBASE(0xA15AF7C1), HN_ULONG_TO_UBASE(0x9BEFB795),
194         HN_ULONG_TO_UBASE(0xEAC69987), HN_ULONG_TO_UBASE(0xC7FA7869)
195     },
196 
197     /* 10G.y */
198     {
199         HN_ULONG_TO_UBASE(0x1C404FE9), HN_ULONG_TO_UBASE(0xDE4D11B2),
200         HN_ULONG_TO_UBASE(0x2E6D0FB8), HN_ULONG_TO_UBASE(0xB0917D3B),
201         HN_ULONG_TO_UBASE(0xAEE80FB9), HN_ULONG_TO_UBASE(0xB37CC365),
202         HN_ULONG_TO_UBASE(0xF87F9262), HN_ULONG_TO_UBASE(0x306C8470),
203         HN_ULONG_TO_UBASE(0x43FC91F8), HN_ULONG_TO_UBASE(0x87519B7F),
204         HN_ULONG_TO_UBASE(0x0A61CDF5), HN_ULONG_TO_UBASE(0x9D434DBE)
205     },
206 
207     /* 11G.x */
208     {
209         HN_ULONG_TO_UBASE(0xB33139E7), HN_ULONG_TO_UBASE(0x49BF609F),
210         HN_ULONG_TO_UBASE(0xAC820A90), HN_ULONG_TO_UBASE(0x60FD2CEB),
211         HN_ULONG_TO_UBASE(0x164A20F6), HN_ULONG_TO_UBASE(0xA1344AD0),
212         HN_ULONG_TO_UBASE(0xCED42AB2), HN_ULONG_TO_UBASE(0xC8A16564),
213         HN_ULONG_TO_UBASE(0x87F81DB5), HN_ULONG_TO_UBASE(0xC778EF62),
214         HN_ULONG_TO_UBASE(0xDA05DE0C), HN_ULONG_TO_UBASE(0x81C02C3E)
215     },
216 
217     /* 11G.y */
218     {
219         HN_ULONG_TO_UBASE(0xC17D28B9), HN_ULONG_TO_UBASE(0x924D0E64),
220         HN_ULONG_TO_UBASE(0x90E31340), HN_ULONG_TO_UBASE(0x8BF310B1),
221         HN_ULONG_TO_UBASE(0xA9CE292C), HN_ULONG_TO_UBASE(0x9DDAD413),
222         HN_ULONG_TO_UBASE(0xC42F9A8E), HN_ULONG_TO_UBASE(0x46A2A12D),
223         HN_ULONG_TO_UBASE(0x69CB4B1D), HN_ULONG_TO_UBASE(0x0C345297),
224         HN_ULONG_TO_UBASE(0x4C3EF2D3), HN_ULONG_TO_UBASE(0x1CE0028A)
225     },
226 
227     /* 12G.x */
228     {
229         HN_ULONG_TO_UBASE(0x4484249F), HN_ULONG_TO_UBASE(0x7B2EA237),
230         HN_ULONG_TO_UBASE(0xDE8D2145), HN_ULONG_TO_UBASE(0xCDC53530),
231         HN_ULONG_TO_UBASE(0x225A3DD1), HN_ULONG_TO_UBASE(0x8B6136DD),
232         HN_ULONG_TO_UBASE(0x53740EC9), HN_ULONG_TO_UBASE(0xB18E9E73),
233         HN_ULONG_TO_UBASE(0x5F27C64A), HN_ULONG_TO_UBASE(0x644E97B7),
234         HN_ULONG_TO_UBASE(0xA9CEA0C5), HN_ULONG_TO_UBASE(0xA7208E9D)
235     },
236 
237     /* 12G.y */
238     {
239         HN_ULONG_TO_UBASE(0xA48B98EC), HN_ULONG_TO_UBASE(0x6BB544BD),
240         HN_ULONG_TO_UBASE(0x57C5F037), HN_ULONG_TO_UBASE(0x1DEBA7F3),
241         HN_ULONG_TO_UBASE(0x1F068FB5), HN_ULONG_TO_UBASE(0xBCC87131),
242         HN_ULONG_TO_UBASE(0x11CF7C4B), HN_ULONG_TO_UBASE(0xAE719373),
243         HN_ULONG_TO_UBASE(0x2CB2EC36), HN_ULONG_TO_UBASE(0x74A95C5B),
244         HN_ULONG_TO_UBASE(0x335D77B6), HN_ULONG_TO_UBASE(0x65BE9E50)
245     },
246 
247     /* 13G.x */
248     {
249         HN_ULONG_TO_UBASE(0xB2319168), HN_ULONG_TO_UBASE(0xF9A6E7F2),
250         HN_ULONG_TO_UBASE(0x51D144A0), HN_ULONG_TO_UBASE(0xEDD5F953),
251         HN_ULONG_TO_UBASE(0xAD2AD161), HN_ULONG_TO_UBASE(0x7171C038),
252         HN_ULONG_TO_UBASE(0xF7215966), HN_ULONG_TO_UBASE(0x5C01A2BE),
253         HN_ULONG_TO_UBASE(0xB978FA06), HN_ULONG_TO_UBASE(0xF696C756),
254         HN_ULONG_TO_UBASE(0x6579D248), HN_ULONG_TO_UBASE(0x714398BB)
255     },
256 
257     /* 13G.y */
258     {
259         HN_ULONG_TO_UBASE(0xAB1FB325), HN_ULONG_TO_UBASE(0x4ADE5706),
260         HN_ULONG_TO_UBASE(0xFF0C1846), HN_ULONG_TO_UBASE(0x818B42B4),
261         HN_ULONG_TO_UBASE(0xD6EE937E), HN_ULONG_TO_UBASE(0x7F0C9F34),
262         HN_ULONG_TO_UBASE(0x90CD7784), HN_ULONG_TO_UBASE(0x54AC28C5),
263         HN_ULONG_TO_UBASE(0xE17F0476), HN_ULONG_TO_UBASE(0x8701F645),
264         HN_ULONG_TO_UBASE(0xA4B5D7B8), HN_ULONG_TO_UBASE(0x6545AA51)
265     },
266 
267     /* 14G.x */
268     {
269         HN_ULONG_TO_UBASE(0x775226D6), HN_ULONG_TO_UBASE(0x880F880F),
270         HN_ULONG_TO_UBASE(0x9CB06473), HN_ULONG_TO_UBASE(0xDF312F51),
271         HN_ULONG_TO_UBASE(0x4644DBC4), HN_ULONG_TO_UBASE(0xAAE46B81),
272         HN_ULONG_TO_UBASE(0x7654C263), HN_ULONG_TO_UBASE(0x40371DC1),
273         HN_ULONG_TO_UBASE(0xBEB9F7AF), HN_ULONG_TO_UBASE(0xC747F85F),
274         HN_ULONG_TO_UBASE(0xCC281C52), HN_ULONG_TO_UBASE(0xF4B35B77)
275     },
276 
277     /* 14G.y */
278     {
279         HN_ULONG_TO_UBASE(0x8C15E275), HN_ULONG_TO_UBASE(0x28EC4AC0),
280         HN_ULONG_TO_UBASE(0xFBF5433B), HN_ULONG_TO_UBASE(0x51537CA3),
281         HN_ULONG_TO_UBASE(0xFD212D3F), HN_ULONG_TO_UBASE(0x28CF7BC3),
282         HN_ULONG_TO_UBASE(0xE1B6365E), HN_ULONG_TO_UBASE(0xD2D86E75),
283         HN_ULONG_TO_UBASE(0x120328CE), HN_ULONG_TO_UBASE(0x047BBCF0),
284         HN_ULONG_TO_UBASE(0xF07414D3), HN_ULONG_TO_UBASE(0x33E139EF)
285     },
286 
287     /* 15G.x */
288     {
289         HN_ULONG_TO_UBASE(0xCB38E86D), HN_ULONG_TO_UBASE(0xE2A2F4FC),
290         HN_ULONG_TO_UBASE(0x5382ED59), HN_ULONG_TO_UBASE(0xCB5357BA),
291         HN_ULONG_TO_UBASE(0x1B5076C2), HN_ULONG_TO_UBASE(0x6BE08D5D),
292         HN_ULONG_TO_UBASE(0x4D83E11C), HN_ULONG_TO_UBASE(0xC62DF637),
293         HN_ULONG_TO_UBASE(0x60969A97), HN_ULONG_TO_UBASE(0xD6958C1E),
294         HN_ULONG_TO_UBASE(0x54DBFC48), HN_ULONG_TO_UBASE(0xA49B602C)
295     },
296 
297     /* 15G.y */
298     {
299         HN_ULONG_TO_UBASE(0x51914BCA), HN_ULONG_TO_UBASE(0xFB97D2EE),
300         HN_ULONG_TO_UBASE(0xAA211719), HN_ULONG_TO_UBASE(0xB4BC64C9),
301         HN_ULONG_TO_UBASE(0x00644D20), HN_ULONG_TO_UBASE(0x0ADCD952),
302         HN_ULONG_TO_UBASE(0xA75F0046), HN_ULONG_TO_UBASE(0xB8E8CA59),
303         HN_ULONG_TO_UBASE(0x17A818F2), HN_ULONG_TO_UBASE(0x9F5E1FE2),
304         HN_ULONG_TO_UBASE(0xB5CF54D1), HN_ULONG_TO_UBASE(0x7E1D2F2E)
305     },
306 
307     /* 16G.x */
308     {
309         HN_ULONG_TO_UBASE(0x31E76220), HN_ULONG_TO_UBASE(0x3992D2A1),
310         HN_ULONG_TO_UBASE(0xFF7003C6), HN_ULONG_TO_UBASE(0x7AD2A60B),
311         HN_ULONG_TO_UBASE(0x8F1546BE), HN_ULONG_TO_UBASE(0xDB6A4D39),
312         HN_ULONG_TO_UBASE(0xE8A1A2A3), HN_ULONG_TO_UBASE(0xB13228B1),
313         HN_ULONG_TO_UBASE(0x993D3A02), HN_ULONG_TO_UBASE(0x1470159C),
314         HN_ULONG_TO_UBASE(0x9E9BF4D9), HN_ULONG_TO_UBASE(0x5B4E8B1D)
315     },
316 
317     /* 16G.y */
318     {
319         HN_ULONG_TO_UBASE(0x0CD001D1), HN_ULONG_TO_UBASE(0x6FCB85E9),
320         HN_ULONG_TO_UBASE(0x3DF1DFE2), HN_ULONG_TO_UBASE(0xE0781A9D),
321         HN_ULONG_TO_UBASE(0xC8A2265B), HN_ULONG_TO_UBASE(0xF650285A),
322         HN_ULONG_TO_UBASE(0x37A9B579), HN_ULONG_TO_UBASE(0x8727088A),
323         HN_ULONG_TO_UBASE(0x22C74609), HN_ULONG_TO_UBASE(0xBB844DF2),
324         HN_ULONG_TO_UBASE(0xD5476D33), HN_ULONG_TO_UBASE(0xC3742094)
325     },
326 
327     /* 17G.x */
328     {
329         HN_ULONG_TO_UBASE(0x1E060165), HN_ULONG_TO_UBASE(0x79FE2465),
330         HN_ULONG_TO_UBASE(0xB6B90F17), HN_ULONG_TO_UBASE(0x5130BDE7),
331         HN_ULONG_TO_UBASE(0x853CB459), HN_ULONG_TO_UBASE(0xCE254CFD),
332         HN_ULONG_TO_UBASE(0xBA440754), HN_ULONG_TO_UBASE(0xA8782B8E),
333         HN_ULONG_TO_UBASE(0xDAF8AA6C), HN_ULONG_TO_UBASE(0x7D81F68F),
334         HN_ULONG_TO_UBASE(0x44B8BF68), HN_ULONG_TO_UBASE(0xAA0E19AA)
335     },
336 
337     /* 17G.y */
338     {
339         HN_ULONG_TO_UBASE(0x2664A487), HN_ULONG_TO_UBASE(0x6E3EE96F),
340         HN_ULONG_TO_UBASE(0x4E9FEA80), HN_ULONG_TO_UBASE(0x8F1B7D25),
341         HN_ULONG_TO_UBASE(0x131C050D), HN_ULONG_TO_UBASE(0x7A282A2A),
342         HN_ULONG_TO_UBASE(0xCA81498E), HN_ULONG_TO_UBASE(0xD986B357),
343         HN_ULONG_TO_UBASE(0x154EC895), HN_ULONG_TO_UBASE(0xC4750753),
344         HN_ULONG_TO_UBASE(0xCB3C35A3), HN_ULONG_TO_UBASE(0x65DB0B8A)
345     },
346 
347     /* 18G.x */
348     {
349         HN_ULONG_TO_UBASE(0xCE9499EB), HN_ULONG_TO_UBASE(0x4AC90B15),
350         HN_ULONG_TO_UBASE(0x91AEE266), HN_ULONG_TO_UBASE(0xBF5777FA),
351         HN_ULONG_TO_UBASE(0x4615CE5F), HN_ULONG_TO_UBASE(0xD87272F9),
352         HN_ULONG_TO_UBASE(0xFF3C56CE), HN_ULONG_TO_UBASE(0xB92110A3),
353         HN_ULONG_TO_UBASE(0xCCA3B289), HN_ULONG_TO_UBASE(0xB327638E),
354         HN_ULONG_TO_UBASE(0x3D0A9F44), HN_ULONG_TO_UBASE(0x396B35A9)
355     },
356 
357     /* 18G.y */
358     {
359         HN_ULONG_TO_UBASE(0x8AD619EF), HN_ULONG_TO_UBASE(0x0DAD5514),
360         HN_ULONG_TO_UBASE(0x3F9AA00A), HN_ULONG_TO_UBASE(0x44242D55),
361         HN_ULONG_TO_UBASE(0xB843CDE9), HN_ULONG_TO_UBASE(0xD7E221ED),
362         HN_ULONG_TO_UBASE(0x071DDE46), HN_ULONG_TO_UBASE(0xA3C20977),
363         HN_ULONG_TO_UBASE(0xA5B4CD7A), HN_ULONG_TO_UBASE(0x16DD93B9),
364         HN_ULONG_TO_UBASE(0x021460CA), HN_ULONG_TO_UBASE(0xCCD5DF68)
365     },
366 
367     /* 19G.x */
368     {
369         HN_ULONG_TO_UBASE(0x6A570F04), HN_ULONG_TO_UBASE(0x1D21128B),
370         HN_ULONG_TO_UBASE(0x394FE427), HN_ULONG_TO_UBASE(0xE917B31C),
371         HN_ULONG_TO_UBASE(0x6BA2D13C), HN_ULONG_TO_UBASE(0xC0FE28DE),
372         HN_ULONG_TO_UBASE(0x7F08EBA2), HN_ULONG_TO_UBASE(0x2D31795F),
373         HN_ULONG_TO_UBASE(0x88492CB7), HN_ULONG_TO_UBASE(0xDABB8957),
374         HN_ULONG_TO_UBASE(0xC82A64C1), HN_ULONG_TO_UBASE(0x5B6478B4)
375     },
376 
377     /* 19G.y */
378     {
379         HN_ULONG_TO_UBASE(0xCD430E4C), HN_ULONG_TO_UBASE(0x5D14F518),
380         HN_ULONG_TO_UBASE(0x217D14F8), HN_ULONG_TO_UBASE(0x552992D1),
381         HN_ULONG_TO_UBASE(0x95033367), HN_ULONG_TO_UBASE(0xB38D3C11),
382         HN_ULONG_TO_UBASE(0xAE07E0E5), HN_ULONG_TO_UBASE(0xACBB2DDC),
383         HN_ULONG_TO_UBASE(0x7B50F818), HN_ULONG_TO_UBASE(0x7093124C),
384         HN_ULONG_TO_UBASE(0x7E9CC15B), HN_ULONG_TO_UBASE(0x0AE3337F)
385     },
386 
387     /* 20G.x */
388     {
389         HN_ULONG_TO_UBASE(0x428E5500), HN_ULONG_TO_UBASE(0x505F49BA),
390         HN_ULONG_TO_UBASE(0x20E83E0D), HN_ULONG_TO_UBASE(0x4FEB246B),
391         HN_ULONG_TO_UBASE(0x7C632779), HN_ULONG_TO_UBASE(0x8D18AB7D),
392         HN_ULONG_TO_UBASE(0xD299BC0D), HN_ULONG_TO_UBASE(0xFB435379),
393         HN_ULONG_TO_UBASE(0x89E66C63), HN_ULONG_TO_UBASE(0xDEA8F23F),
394         HN_ULONG_TO_UBASE(0xD93C74A3), HN_ULONG_TO_UBASE(0xDD790987)
395     },
396 
397     /* 20G.y */
398     {
399         HN_ULONG_TO_UBASE(0x4B79ADF6), HN_ULONG_TO_UBASE(0xA9AC8F10),
400         HN_ULONG_TO_UBASE(0x677F9849), HN_ULONG_TO_UBASE(0xFF4CAA4A),
401         HN_ULONG_TO_UBASE(0x80C84B38), HN_ULONG_TO_UBASE(0x4E1BB75C),
402         HN_ULONG_TO_UBASE(0x105393D3), HN_ULONG_TO_UBASE(0x52D2575D),
403         HN_ULONG_TO_UBASE(0x4569D2D3), HN_ULONG_TO_UBASE(0x4F465F5F),
404         HN_ULONG_TO_UBASE(0x41E36869), HN_ULONG_TO_UBASE(0xABAD1376)
405     },
406 
407     /* 21G.x */
408     {
409         HN_ULONG_TO_UBASE(0xEB3F72ED), HN_ULONG_TO_UBASE(0xB8566746),
410         HN_ULONG_TO_UBASE(0x08E114AE), HN_ULONG_TO_UBASE(0x53316ED1),
411         HN_ULONG_TO_UBASE(0x91AEA8C6), HN_ULONG_TO_UBASE(0x45E5B481),
412         HN_ULONG_TO_UBASE(0x2857A9D5), HN_ULONG_TO_UBASE(0x73C30BF5),
413         HN_ULONG_TO_UBASE(0xFD1F7C82), HN_ULONG_TO_UBASE(0x26DB96AF),
414         HN_ULONG_TO_UBASE(0xDF1822B5), HN_ULONG_TO_UBASE(0x8C9010D0)
415     },
416 
417     /* 21G.y */
418     {
419         HN_ULONG_TO_UBASE(0x20428D3D), HN_ULONG_TO_UBASE(0x246624AB),
420         HN_ULONG_TO_UBASE(0x6A02C7CD), HN_ULONG_TO_UBASE(0xA3A48C9F),
421         HN_ULONG_TO_UBASE(0x34CD1BDD), HN_ULONG_TO_UBASE(0x1298B738),
422         HN_ULONG_TO_UBASE(0x1B71B3BD), HN_ULONG_TO_UBASE(0x664833BC),
423         HN_ULONG_TO_UBASE(0x070A6E08), HN_ULONG_TO_UBASE(0xD9365CD7),
424         HN_ULONG_TO_UBASE(0xD610B66B), HN_ULONG_TO_UBASE(0xA44AD979)
425     },
426 
427     /* 22G.x */
428     {
429         HN_ULONG_TO_UBASE(0xA6690FC0), HN_ULONG_TO_UBASE(0xCC174EB1),
430         HN_ULONG_TO_UBASE(0xC9196D36), HN_ULONG_TO_UBASE(0x5883B4BE),
431         HN_ULONG_TO_UBASE(0x4FF222D2), HN_ULONG_TO_UBASE(0x6507BBC3),
432         HN_ULONG_TO_UBASE(0x8506370B), HN_ULONG_TO_UBASE(0xF90DAD22),
433         HN_ULONG_TO_UBASE(0x235C94E5), HN_ULONG_TO_UBASE(0xD5B17CEC),
434         HN_ULONG_TO_UBASE(0x4F1D0704), HN_ULONG_TO_UBASE(0x15C31CD6)
435     },
436 
437     /* 22G.y */
438     {
439         HN_ULONG_TO_UBASE(0x83692E96), HN_ULONG_TO_UBASE(0xA45E13E0),
440         HN_ULONG_TO_UBASE(0x23632198), HN_ULONG_TO_UBASE(0x30CA9241),
441         HN_ULONG_TO_UBASE(0x68C5D526), HN_ULONG_TO_UBASE(0xFB14B0B9),
442         HN_ULONG_TO_UBASE(0x53FF8F7F), HN_ULONG_TO_UBASE(0x1CB6AADE),
443         HN_ULONG_TO_UBASE(0x9277F031), HN_ULONG_TO_UBASE(0x64B1D3AA),
444         HN_ULONG_TO_UBASE(0xB57A14DD), HN_ULONG_TO_UBASE(0x92504AAD)
445     },
446 
447     /* 23G.x */
448     {
449         HN_ULONG_TO_UBASE(0x6F824A23), HN_ULONG_TO_UBASE(0xA651A249),
450         HN_ULONG_TO_UBASE(0xBC1B0886), HN_ULONG_TO_UBASE(0xABA60A2B),
451         HN_ULONG_TO_UBASE(0x67E331A8), HN_ULONG_TO_UBASE(0xC632EF51),
452         HN_ULONG_TO_UBASE(0xD3432743), HN_ULONG_TO_UBASE(0x386CAB94),
453         HN_ULONG_TO_UBASE(0x24DBDACC), HN_ULONG_TO_UBASE(0x644657CD),
454         HN_ULONG_TO_UBASE(0xEA9D8EEB), HN_ULONG_TO_UBASE(0x79BAEFE3)
455     },
456 
457     /* 23G.y */
458     {
459         HN_ULONG_TO_UBASE(0x7C0022A9), HN_ULONG_TO_UBASE(0xCE100B59),
460         HN_ULONG_TO_UBASE(0xB5552550), HN_ULONG_TO_UBASE(0xC72C67D5),
461         HN_ULONG_TO_UBASE(0xC625D47F), HN_ULONG_TO_UBASE(0xCC7C468D),
462         HN_ULONG_TO_UBASE(0x43B94872), HN_ULONG_TO_UBASE(0x54376AE2),
463         HN_ULONG_TO_UBASE(0xFD91B733), HN_ULONG_TO_UBASE(0x86116D31),
464         HN_ULONG_TO_UBASE(0xC07AB981), HN_ULONG_TO_UBASE(0xC33E942E)
465     },
466 
467     /* 24G.x */
468     {
469         HN_ULONG_TO_UBASE(0xC1A90C5B), HN_ULONG_TO_UBASE(0x7E0181B9),
470         HN_ULONG_TO_UBASE(0xEF64936E), HN_ULONG_TO_UBASE(0x4B2E6511),
471         HN_ULONG_TO_UBASE(0xAA71BE85), HN_ULONG_TO_UBASE(0x9187E8D4),
472         HN_ULONG_TO_UBASE(0xB683D1DB), HN_ULONG_TO_UBASE(0x9F03A529),
473         HN_ULONG_TO_UBASE(0xE63B581E), HN_ULONG_TO_UBASE(0xE9825AAC),
474         HN_ULONG_TO_UBASE(0x4B8A03BA), HN_ULONG_TO_UBASE(0x05E6B0A8)
475     },
476 
477     /* 24G.y */
478     {
479         HN_ULONG_TO_UBASE(0xF3938636), HN_ULONG_TO_UBASE(0x61907C78),
480         HN_ULONG_TO_UBASE(0x7CCADF9D), HN_ULONG_TO_UBASE(0x2DDA27D3),
481         HN_ULONG_TO_UBASE(0x9787C6AE), HN_ULONG_TO_UBASE(0x1E7B1E07),
482         HN_ULONG_TO_UBASE(0xA645CA8F), HN_ULONG_TO_UBASE(0x6E6A6097),
483         HN_ULONG_TO_UBASE(0x3B950770), HN_ULONG_TO_UBASE(0xA152690C),
484         HN_ULONG_TO_UBASE(0x80453061), HN_ULONG_TO_UBASE(0xCC813D19)
485     },
486 
487     /* 25G.x */
488     {
489         HN_ULONG_TO_UBASE(0xDC9BB565), HN_ULONG_TO_UBASE(0x5026D3E0),
490         HN_ULONG_TO_UBASE(0xA41DAC8D), HN_ULONG_TO_UBASE(0x3A345564),
491         HN_ULONG_TO_UBASE(0xCF05440B), HN_ULONG_TO_UBASE(0x092B8073),
492         HN_ULONG_TO_UBASE(0xE7E95F9A), HN_ULONG_TO_UBASE(0xDE1F971D),
493         HN_ULONG_TO_UBASE(0xBCB04838), HN_ULONG_TO_UBASE(0x177D47C6),
494         HN_ULONG_TO_UBASE(0x37393D29), HN_ULONG_TO_UBASE(0xB2A0C449)
495     },
496 
497     /* 25G.y */
498     {
499         HN_ULONG_TO_UBASE(0xE77340CD), HN_ULONG_TO_UBASE(0x00224C3D),
500         HN_ULONG_TO_UBASE(0x6A4E526E), HN_ULONG_TO_UBASE(0x31E37B98),
501         HN_ULONG_TO_UBASE(0xBC55A51B), HN_ULONG_TO_UBASE(0xEE98B785),
502         HN_ULONG_TO_UBASE(0x091BC664), HN_ULONG_TO_UBASE(0x4ED22126),
503         HN_ULONG_TO_UBASE(0x98C7090F), HN_ULONG_TO_UBASE(0x59C178BA),
504         HN_ULONG_TO_UBASE(0xA14CE4D5), HN_ULONG_TO_UBASE(0x597FC7F4)
505     },
506 
507     /* 26G.x */
508     {
509         HN_ULONG_TO_UBASE(0xA623862F), HN_ULONG_TO_UBASE(0x0DE0AED2),
510         HN_ULONG_TO_UBASE(0x49106B56), HN_ULONG_TO_UBASE(0x9195ACAF),
511         HN_ULONG_TO_UBASE(0x939A89D1), HN_ULONG_TO_UBASE(0x8703E4AF),
512         HN_ULONG_TO_UBASE(0x2AF3BFB2), HN_ULONG_TO_UBASE(0xDA07A303),
513         HN_ULONG_TO_UBASE(0xEB51AB60), HN_ULONG_TO_UBASE(0x72817277),
514         HN_ULONG_TO_UBASE(0xFA0CB48F), HN_ULONG_TO_UBASE(0x5AEEDCB5)
515     },
516 
517     /* 26G.y */
518     {
519         HN_ULONG_TO_UBASE(0x6A386DA2), HN_ULONG_TO_UBASE(0x43E24139),
520         HN_ULONG_TO_UBASE(0xA6284E47), HN_ULONG_TO_UBASE(0x09157D8F),
521         HN_ULONG_TO_UBASE(0xDCB7B7F6), HN_ULONG_TO_UBASE(0x10D3ABFF),
522         HN_ULONG_TO_UBASE(0xC4A4EF51), HN_ULONG_TO_UBASE(0x4FEC85D9),
523         HN_ULONG_TO_UBASE(0xE11640B5), HN_ULONG_TO_UBASE(0x6BEFAF87),
524         HN_ULONG_TO_UBASE(0x0AFBA91C), HN_ULONG_TO_UBASE(0xB05FF572)
525     },
526 
527     /* 27G.x */
528     {
529         HN_ULONG_TO_UBASE(0xFEDF311D), HN_ULONG_TO_UBASE(0x00F305D9),
530         HN_ULONG_TO_UBASE(0x6082A9F9), HN_ULONG_TO_UBASE(0x2322592A),
531         HN_ULONG_TO_UBASE(0xDFC76F75), HN_ULONG_TO_UBASE(0xF1841C28),
532         HN_ULONG_TO_UBASE(0x10AF674E), HN_ULONG_TO_UBASE(0xF0714D17),
533         HN_ULONG_TO_UBASE(0xAF895173), HN_ULONG_TO_UBASE(0xCD871803),
534         HN_ULONG_TO_UBASE(0x94F5571C), HN_ULONG_TO_UBASE(0x110AB6A9)
535     },
536 
537     /* 27G.y */
538     {
539         HN_ULONG_TO_UBASE(0x22D4D124), HN_ULONG_TO_UBASE(0x5AA3B421),
540         HN_ULONG_TO_UBASE(0xA2FE7A5F), HN_ULONG_TO_UBASE(0xCB6EB594),
541         HN_ULONG_TO_UBASE(0xB6B4AC39), HN_ULONG_TO_UBASE(0xBBE918BA),
542         HN_ULONG_TO_UBASE(0x3A31C961), HN_ULONG_TO_UBASE(0x19E5161E),
543         HN_ULONG_TO_UBASE(0x3FFFC9CD), HN_ULONG_TO_UBASE(0xC2A7A2CB),
544         HN_ULONG_TO_UBASE(0xC67BBAA3), HN_ULONG_TO_UBASE(0x1A0825B1)
545     },
546 
547     /* 28G.x */
548     {
549         HN_ULONG_TO_UBASE(0xA02D4BB0), HN_ULONG_TO_UBASE(0x283C9073),
550         HN_ULONG_TO_UBASE(0xE05DA927), HN_ULONG_TO_UBASE(0x1C06EEBC),
551         HN_ULONG_TO_UBASE(0xA7CE557B), HN_ULONG_TO_UBASE(0xEE920D22),
552         HN_ULONG_TO_UBASE(0xF79AEC92), HN_ULONG_TO_UBASE(0xF137A49C),
553         HN_ULONG_TO_UBASE(0xF7E0C93D), HN_ULONG_TO_UBASE(0xAC949AA9),
554         HN_ULONG_TO_UBASE(0xD2E5D915), HN_ULONG_TO_UBASE(0x1D7481E4)
555     },
556 
557     /* 28G.y */
558     {
559         HN_ULONG_TO_UBASE(0x5CBE77D3), HN_ULONG_TO_UBASE(0xAA5A8228),
560         HN_ULONG_TO_UBASE(0x128145FD), HN_ULONG_TO_UBASE(0x02459758),
561         HN_ULONG_TO_UBASE(0x1BDB11F5), HN_ULONG_TO_UBASE(0xF2096E10),
562         HN_ULONG_TO_UBASE(0xA5DC4090), HN_ULONG_TO_UBASE(0x2B4ECB07),
563         HN_ULONG_TO_UBASE(0x4C110C19), HN_ULONG_TO_UBASE(0xD335126C),
564         HN_ULONG_TO_UBASE(0x27EFAC4C), HN_ULONG_TO_UBASE(0xD1B5960E)
565     },
566 
567     /* 29G.x */
568     {
569         HN_ULONG_TO_UBASE(0x77E930E1), HN_ULONG_TO_UBASE(0x3D4100E8),
570         HN_ULONG_TO_UBASE(0xADC4C838), HN_ULONG_TO_UBASE(0x0899BAAD),
571         HN_ULONG_TO_UBASE(0xF6B3097E), HN_ULONG_TO_UBASE(0x5B64899F),
572         HN_ULONG_TO_UBASE(0x2790439D), HN_ULONG_TO_UBASE(0x7C060A89),
573         HN_ULONG_TO_UBASE(0x513497C6), HN_ULONG_TO_UBASE(0x40AB25D0),
574         HN_ULONG_TO_UBASE(0x202D8833), HN_ULONG_TO_UBASE(0xDFA74FE2)
575     },
576 
577     /* 29G.y */
578     {
579         HN_ULONG_TO_UBASE(0x2466F95B), HN_ULONG_TO_UBASE(0x689CCEC5),
580         HN_ULONG_TO_UBASE(0xE0B8E88E), HN_ULONG_TO_UBASE(0xE757107A),
581         HN_ULONG_TO_UBASE(0x56A78F16), HN_ULONG_TO_UBASE(0x38D0D513),
582         HN_ULONG_TO_UBASE(0x5DA9F7C2), HN_ULONG_TO_UBASE(0x47C8301C),
583         HN_ULONG_TO_UBASE(0x31956F2B), HN_ULONG_TO_UBASE(0xE8C55CC6),
584         HN_ULONG_TO_UBASE(0x0C8D4931), HN_ULONG_TO_UBASE(0x6DA590D6)
585     },
586 
587     /* 30G.x */
588     {
589         HN_ULONG_TO_UBASE(0x374E2772), HN_ULONG_TO_UBASE(0xFFEFF253),
590         HN_ULONG_TO_UBASE(0x2AFEDDA2), HN_ULONG_TO_UBASE(0xC0132D35),
591         HN_ULONG_TO_UBASE(0x6C782F3C), HN_ULONG_TO_UBASE(0xC6211452),
592         HN_ULONG_TO_UBASE(0xC98A97E8), HN_ULONG_TO_UBASE(0x7D7F61CD),
593         HN_ULONG_TO_UBASE(0x74DB0E01), HN_ULONG_TO_UBASE(0xF0602625),
594         HN_ULONG_TO_UBASE(0x5D0D215D), HN_ULONG_TO_UBASE(0x36C1AC6A)
595     },
596 
597     /* 30G.y */
598     {
599         HN_ULONG_TO_UBASE(0x59A579DE), HN_ULONG_TO_UBASE(0x88CBE3CF),
600         HN_ULONG_TO_UBASE(0xC2C17408), HN_ULONG_TO_UBASE(0x8DDEEC0B),
601         HN_ULONG_TO_UBASE(0x034D07D8), HN_ULONG_TO_UBASE(0x6D87FCED),
602         HN_ULONG_TO_UBASE(0x656A1F61), HN_ULONG_TO_UBASE(0x9066AFE4),
603         HN_ULONG_TO_UBASE(0xFBC82854), HN_ULONG_TO_UBASE(0x758AE55F),
604         HN_ULONG_TO_UBASE(0x0F73DFE9), HN_ULONG_TO_UBASE(0x0BC110FA)
605     },
606 
607     /* 31G.x */
608     {
609         HN_ULONG_TO_UBASE(0x679A2ABA), HN_ULONG_TO_UBASE(0x96EDF50F),
610         HN_ULONG_TO_UBASE(0x7FA01880), HN_ULONG_TO_UBASE(0x31B92B91),
611         HN_ULONG_TO_UBASE(0x72495766), HN_ULONG_TO_UBASE(0xFDA047EB),
612         HN_ULONG_TO_UBASE(0xCB1299C9), HN_ULONG_TO_UBASE(0xE8C663C5),
613         HN_ULONG_TO_UBASE(0x91DBE668), HN_ULONG_TO_UBASE(0x15798146),
614         HN_ULONG_TO_UBASE(0x9DA9121C), HN_ULONG_TO_UBASE(0x25E209C5)
615     },
616 
617     /* 31G.y */
618     {
619         HN_ULONG_TO_UBASE(0xF69B64DA), HN_ULONG_TO_UBASE(0x9AD033A2),
620         HN_ULONG_TO_UBASE(0xD82ADB97), HN_ULONG_TO_UBASE(0x6366E8F3),
621         HN_ULONG_TO_UBASE(0xE9103189), HN_ULONG_TO_UBASE(0x96052F28),
622         HN_ULONG_TO_UBASE(0x6E6CE744), HN_ULONG_TO_UBASE(0x6C279054),
623         HN_ULONG_TO_UBASE(0xFE5D6697), HN_ULONG_TO_UBASE(0xDA53B069),
624         HN_ULONG_TO_UBASE(0xDA09FB6A), HN_ULONG_TO_UBASE(0x553200B9)
625     }
626 };
627 static NX_CRYPTO_CONST HN_UBASE           secp384r1_fixed_points_2e_data[][48 >> HN_SIZE_SHIFT] =
628 {
629 
630     /* 2^e * 1G.x */
631     {
632         HN_ULONG_TO_UBASE(0xEE69FC0F), HN_ULONG_TO_UBASE(0xCBD89C74),
633         HN_ULONG_TO_UBASE(0x777BD97C), HN_ULONG_TO_UBASE(0xCEAA5177),
634         HN_ULONG_TO_UBASE(0x03955391), HN_ULONG_TO_UBASE(0xE113574A),
635         HN_ULONG_TO_UBASE(0x1B6FCF81), HN_ULONG_TO_UBASE(0x98BB969C),
636         HN_ULONG_TO_UBASE(0x64591D15), HN_ULONG_TO_UBASE(0xD1C6BCE5),
637         HN_ULONG_TO_UBASE(0xBA330842), HN_ULONG_TO_UBASE(0x1EC28025)
638     },
639 
640     /* 2^e * 1G.y */
641     {
642         HN_ULONG_TO_UBASE(0x34829DC8), HN_ULONG_TO_UBASE(0xFD1E4B9E),
643         HN_ULONG_TO_UBASE(0x5B2AADDE), HN_ULONG_TO_UBASE(0x1B0007D1),
644         HN_ULONG_TO_UBASE(0x25ECF474), HN_ULONG_TO_UBASE(0x391DEE1C),
645         HN_ULONG_TO_UBASE(0x70BA0B4D), HN_ULONG_TO_UBASE(0xD41EE6EC),
646         HN_ULONG_TO_UBASE(0xA942B396), HN_ULONG_TO_UBASE(0xE3C9E311),
647         HN_ULONG_TO_UBASE(0xBA9A279C), HN_ULONG_TO_UBASE(0x7BBC02CD)
648     },
649 
650     /* 2^e * 2G.x */
651     {
652         HN_ULONG_TO_UBASE(0x5CA8FAD8), HN_ULONG_TO_UBASE(0x8D12FE42),
653         HN_ULONG_TO_UBASE(0xD10970F6), HN_ULONG_TO_UBASE(0x0FBDF6B9),
654         HN_ULONG_TO_UBASE(0xC7D54F8E), HN_ULONG_TO_UBASE(0x3EFAC0DA),
655         HN_ULONG_TO_UBASE(0x081D4201), HN_ULONG_TO_UBASE(0x78D97625),
656         HN_ULONG_TO_UBASE(0xD3724AC0), HN_ULONG_TO_UBASE(0xADBE354F),
657         HN_ULONG_TO_UBASE(0xA1C855E6), HN_ULONG_TO_UBASE(0xC7706509)
658     },
659 
660     /* 2^e * 2G.y */
661     {
662         HN_ULONG_TO_UBASE(0xDDEE3FA8), HN_ULONG_TO_UBASE(0x3E610D70),
663         HN_ULONG_TO_UBASE(0x828A967F), HN_ULONG_TO_UBASE(0xBF575954),
664         HN_ULONG_TO_UBASE(0xB53A955E), HN_ULONG_TO_UBASE(0x2AE095F6),
665         HN_ULONG_TO_UBASE(0x7B90D88C), HN_ULONG_TO_UBASE(0x56033472),
666         HN_ULONG_TO_UBASE(0x8DC0A40A), HN_ULONG_TO_UBASE(0x3C112381),
667         HN_ULONG_TO_UBASE(0xD5C067D3), HN_ULONG_TO_UBASE(0x4CFEC7CE)
668     },
669 
670     /* 2^e * 3G.x */
671     {
672         HN_ULONG_TO_UBASE(0xAB06C50F), HN_ULONG_TO_UBASE(0x684BEF13),
673         HN_ULONG_TO_UBASE(0x0585A276), HN_ULONG_TO_UBASE(0x511B42EE),
674         HN_ULONG_TO_UBASE(0x22DD24D6), HN_ULONG_TO_UBASE(0xCA646B6D),
675         HN_ULONG_TO_UBASE(0x911A57E9), HN_ULONG_TO_UBASE(0xE7305483),
676         HN_ULONG_TO_UBASE(0xB5373F60), HN_ULONG_TO_UBASE(0x39E0E276),
677         HN_ULONG_TO_UBASE(0x17DE0D6D), HN_ULONG_TO_UBASE(0xF30CA26E)
678     },
679 
680     /* 2^e * 3G.y */
681     {
682         HN_ULONG_TO_UBASE(0x7BC0CB4E), HN_ULONG_TO_UBASE(0xAA4C080E),
683         HN_ULONG_TO_UBASE(0xDB7A765E), HN_ULONG_TO_UBASE(0xE09FAEEB),
684         HN_ULONG_TO_UBASE(0xCCE5A22E), HN_ULONG_TO_UBASE(0x5C7BADB8),
685         HN_ULONG_TO_UBASE(0xCD6B386D), HN_ULONG_TO_UBASE(0x25D55ACC),
686         HN_ULONG_TO_UBASE(0xB5311A5D), HN_ULONG_TO_UBASE(0xE58F1A21),
687         HN_ULONG_TO_UBASE(0x3406917C), HN_ULONG_TO_UBASE(0x6F4D1442)
688     },
689 
690     /* 2^e * 4G.x */
691     {
692         HN_ULONG_TO_UBASE(0x42167978), HN_ULONG_TO_UBASE(0x2488A5E2),
693         HN_ULONG_TO_UBASE(0x047CB677), HN_ULONG_TO_UBASE(0x21602406),
694         HN_ULONG_TO_UBASE(0x4B533913), HN_ULONG_TO_UBASE(0xBFD5AAD6),
695         HN_ULONG_TO_UBASE(0x0B6E7624), HN_ULONG_TO_UBASE(0x21511EC7),
696         HN_ULONG_TO_UBASE(0xAC359672), HN_ULONG_TO_UBASE(0xB38E9816),
697         HN_ULONG_TO_UBASE(0x58A9BDE3), HN_ULONG_TO_UBASE(0x9B793AF4)
698     },
699 
700     /* 2^e * 4G.y */
701     {
702         HN_ULONG_TO_UBASE(0x44999A6D), HN_ULONG_TO_UBASE(0xA8448AF0),
703         HN_ULONG_TO_UBASE(0x1F1061FC), HN_ULONG_TO_UBASE(0xEFD02E82),
704         HN_ULONG_TO_UBASE(0xDE5F9256), HN_ULONG_TO_UBASE(0x2F04DD33),
705         HN_ULONG_TO_UBASE(0x7A770F81), HN_ULONG_TO_UBASE(0x822A5C68),
706         HN_ULONG_TO_UBASE(0x5DED11EF), HN_ULONG_TO_UBASE(0xB24C6DEA),
707         HN_ULONG_TO_UBASE(0xC0F02EB8), HN_ULONG_TO_UBASE(0xB4744F7D)
708     },
709 
710     /* 2^e * 5G.x */
711     {
712         HN_ULONG_TO_UBASE(0x6E2CB973), HN_ULONG_TO_UBASE(0x2654F54E),
713         HN_ULONG_TO_UBASE(0x38A0A8D8), HN_ULONG_TO_UBASE(0xB05B48B3),
714         HN_ULONG_TO_UBASE(0x6A7E399A), HN_ULONG_TO_UBASE(0xDE415F78),
715         HN_ULONG_TO_UBASE(0x479B6AE3), HN_ULONG_TO_UBASE(0x92519281),
716         HN_ULONG_TO_UBASE(0x9F1F3538), HN_ULONG_TO_UBASE(0xC1C7BFDF),
717         HN_ULONG_TO_UBASE(0xC69C1384), HN_ULONG_TO_UBASE(0xB8BDB872)
718     },
719 
720     /* 2^e * 5G.y */
721     {
722         HN_ULONG_TO_UBASE(0xDBF51071), HN_ULONG_TO_UBASE(0xB0378BB9),
723         HN_ULONG_TO_UBASE(0x9D5BCB4F), HN_ULONG_TO_UBASE(0x05630F8A),
724         HN_ULONG_TO_UBASE(0x28ED6EEF), HN_ULONG_TO_UBASE(0x9C84CB52),
725         HN_ULONG_TO_UBASE(0x3C9EDC19), HN_ULONG_TO_UBASE(0x2A55DDC3),
726         HN_ULONG_TO_UBASE(0x97139A26), HN_ULONG_TO_UBASE(0x6263DE6A),
727         HN_ULONG_TO_UBASE(0x92456DEF), HN_ULONG_TO_UBASE(0x60380E9C)
728     },
729 
730     /* 2^e * 6G.x */
731     {
732         HN_ULONG_TO_UBASE(0x945C77EE), HN_ULONG_TO_UBASE(0x42BDB4E4),
733         HN_ULONG_TO_UBASE(0xF023E21E), HN_ULONG_TO_UBASE(0x7A225FDB),
734         HN_ULONG_TO_UBASE(0x80BDC638), HN_ULONG_TO_UBASE(0x14636D6F),
735         HN_ULONG_TO_UBASE(0x0C9CF3AF), HN_ULONG_TO_UBASE(0xEA97539D),
736         HN_ULONG_TO_UBASE(0xB1360638), HN_ULONG_TO_UBASE(0x998ABB8C),
737         HN_ULONG_TO_UBASE(0x43551856), HN_ULONG_TO_UBASE(0x8CBC90F9)
738     },
739 
740     /* 2^e * 6G.y */
741     {
742         HN_ULONG_TO_UBASE(0x69CB4A12), HN_ULONG_TO_UBASE(0x5281BFA5),
743         HN_ULONG_TO_UBASE(0xEA8F2EF0), HN_ULONG_TO_UBASE(0x377B1AEE),
744         HN_ULONG_TO_UBASE(0x9EC8B98C), HN_ULONG_TO_UBASE(0x1C5A859F),
745         HN_ULONG_TO_UBASE(0xA0CBF4E4), HN_ULONG_TO_UBASE(0xEC6CED56),
746         HN_ULONG_TO_UBASE(0x93888DF3), HN_ULONG_TO_UBASE(0xA4D50AD8),
747         HN_ULONG_TO_UBASE(0x75FB0761), HN_ULONG_TO_UBASE(0x43C729D0)
748     },
749 
750     /* 2^e * 7G.x */
751     {
752         HN_ULONG_TO_UBASE(0x6A1D3017), HN_ULONG_TO_UBASE(0x5730E0BE),
753         HN_ULONG_TO_UBASE(0x31A9D373), HN_ULONG_TO_UBASE(0xAD6B3AB6),
754         HN_ULONG_TO_UBASE(0xA56355D5), HN_ULONG_TO_UBASE(0x67FBFD5C),
755         HN_ULONG_TO_UBASE(0xAF532D26), HN_ULONG_TO_UBASE(0x4763B2B7),
756         HN_ULONG_TO_UBASE(0x39AC65D3), HN_ULONG_TO_UBASE(0x05683B6E),
757         HN_ULONG_TO_UBASE(0x1F39D0E5), HN_ULONG_TO_UBASE(0xD8AB073E)
758     },
759 
760     /* 2^e * 7G.y */
761     {
762         HN_ULONG_TO_UBASE(0x5B79D3EA), HN_ULONG_TO_UBASE(0xF2B54247),
763         HN_ULONG_TO_UBASE(0x8ECB1473), HN_ULONG_TO_UBASE(0xD6C4FC35),
764         HN_ULONG_TO_UBASE(0x6417E5D9), HN_ULONG_TO_UBASE(0x45D01D0B),
765         HN_ULONG_TO_UBASE(0xA689C521), HN_ULONG_TO_UBASE(0x8C30A073),
766         HN_ULONG_TO_UBASE(0x84DD4B16), HN_ULONG_TO_UBASE(0xE8EB5DE5),
767         HN_ULONG_TO_UBASE(0x8EB3E9A1), HN_ULONG_TO_UBASE(0xDCF336FF)
768     },
769 
770     /* 2^e * 8G.x */
771     {
772         HN_ULONG_TO_UBASE(0xA8EC4DCB), HN_ULONG_TO_UBASE(0x8FDD9E8B),
773         HN_ULONG_TO_UBASE(0x3E9D2CA5), HN_ULONG_TO_UBASE(0x8C7FAFBB),
774         HN_ULONG_TO_UBASE(0x986233DC), HN_ULONG_TO_UBASE(0xD902EB1F),
775         HN_ULONG_TO_UBASE(0x495E953C), HN_ULONG_TO_UBASE(0xD47D0FDA),
776         HN_ULONG_TO_UBASE(0x32E9F30E), HN_ULONG_TO_UBASE(0x000F2E0E),
777         HN_ULONG_TO_UBASE(0x226F1883), HN_ULONG_TO_UBASE(0x0B5DB75F)
778     },
779 
780     /* 2^e * 8G.y */
781     {
782         HN_ULONG_TO_UBASE(0x9F67269C), HN_ULONG_TO_UBASE(0x7028CE81),
783         HN_ULONG_TO_UBASE(0x9C045825), HN_ULONG_TO_UBASE(0xC107538A),
784         HN_ULONG_TO_UBASE(0xEC52D696), HN_ULONG_TO_UBASE(0x526F582B),
785         HN_ULONG_TO_UBASE(0x35EF4550), HN_ULONG_TO_UBASE(0x99A7FE23),
786         HN_ULONG_TO_UBASE(0x4BB5AFFE), HN_ULONG_TO_UBASE(0xD036D89E),
787         HN_ULONG_TO_UBASE(0x8BC26250), HN_ULONG_TO_UBASE(0xE17B5092)
788     },
789 
790     /* 2^e * 9G.x */
791     {
792         HN_ULONG_TO_UBASE(0x720498AD), HN_ULONG_TO_UBASE(0x79BC9288),
793         HN_ULONG_TO_UBASE(0x963268B3), HN_ULONG_TO_UBASE(0xB46D97C4),
794         HN_ULONG_TO_UBASE(0x3705CC63), HN_ULONG_TO_UBASE(0x83D6AEE2),
795         HN_ULONG_TO_UBASE(0xDC75844D), HN_ULONG_TO_UBASE(0x02EE09A7),
796         HN_ULONG_TO_UBASE(0xBCA498D6), HN_ULONG_TO_UBASE(0xFEDD7DFC),
797         HN_ULONG_TO_UBASE(0x4C28BF52), HN_ULONG_TO_UBASE(0x3CAC1535)
798     },
799 
800     /* 2^e * 9G.y */
801     {
802         HN_ULONG_TO_UBASE(0xECC811C9), HN_ULONG_TO_UBASE(0x4759AB09),
803         HN_ULONG_TO_UBASE(0x339928CD), HN_ULONG_TO_UBASE(0x6C13E2D3),
804         HN_ULONG_TO_UBASE(0x52EE7B1A), HN_ULONG_TO_UBASE(0x6F1FB566),
805         HN_ULONG_TO_UBASE(0x7BE675CC), HN_ULONG_TO_UBASE(0x8ADF88A0),
806         HN_ULONG_TO_UBASE(0x33242235), HN_ULONG_TO_UBASE(0x6B4CF3A3),
807         HN_ULONG_TO_UBASE(0x5A92C402), HN_ULONG_TO_UBASE(0xC5B7009F)
808     },
809 
810     /* 2^e * 10G.x */
811     {
812         HN_ULONG_TO_UBASE(0x996CD141), HN_ULONG_TO_UBASE(0x7B0EED0B),
813         HN_ULONG_TO_UBASE(0xAED7BF5F), HN_ULONG_TO_UBASE(0x0A9BB009),
814         HN_ULONG_TO_UBASE(0x16B3F8D5), HN_ULONG_TO_UBASE(0xA0D032D1),
815         HN_ULONG_TO_UBASE(0xA59A25EA), HN_ULONG_TO_UBASE(0x759FE004),
816         HN_ULONG_TO_UBASE(0xFE018B74), HN_ULONG_TO_UBASE(0x0496B4C9),
817         HN_ULONG_TO_UBASE(0x2368BE69), HN_ULONG_TO_UBASE(0xD803BA8A)
818     },
819 
820     /* 2^e * 10G.y */
821     {
822         HN_ULONG_TO_UBASE(0xE2A6144F), HN_ULONG_TO_UBASE(0xF2302395),
823         HN_ULONG_TO_UBASE(0x96779630), HN_ULONG_TO_UBASE(0x8EB14103),
824         HN_ULONG_TO_UBASE(0x45C61AFD), HN_ULONG_TO_UBASE(0x1DB4AFE8),
825         HN_ULONG_TO_UBASE(0xE3D19276), HN_ULONG_TO_UBASE(0x396F33E4),
826         HN_ULONG_TO_UBASE(0x9E810A00), HN_ULONG_TO_UBASE(0x3707E506),
827         HN_ULONG_TO_UBASE(0xCF8E1C92), HN_ULONG_TO_UBASE(0x49DAE5B3)
828     },
829 
830     /* 2^e * 11G.x */
831     {
832         HN_ULONG_TO_UBASE(0xC2BF6B77), HN_ULONG_TO_UBASE(0x12FB7EEE),
833         HN_ULONG_TO_UBASE(0x108568A2), HN_ULONG_TO_UBASE(0x1A71F797),
834         HN_ULONG_TO_UBASE(0x1A23CC1F), HN_ULONG_TO_UBASE(0x29677318),
835         HN_ULONG_TO_UBASE(0xA0845D27), HN_ULONG_TO_UBASE(0x5C7F10FD),
836         HN_ULONG_TO_UBASE(0x33979B89), HN_ULONG_TO_UBASE(0xF5C3C79E),
837         HN_ULONG_TO_UBASE(0x3BAB63ED), HN_ULONG_TO_UBASE(0xF75A53EF)
838     },
839 
840     /* 2^e * 11G.y */
841     {
842         HN_ULONG_TO_UBASE(0xF3F0C08B), HN_ULONG_TO_UBASE(0x051A54FD),
843         HN_ULONG_TO_UBASE(0x91A70E2D), HN_ULONG_TO_UBASE(0xEE7E565D),
844         HN_ULONG_TO_UBASE(0x83DCCE34), HN_ULONG_TO_UBASE(0x290AD17C),
845         HN_ULONG_TO_UBASE(0xC8BDE478), HN_ULONG_TO_UBASE(0xAE573F1A),
846         HN_ULONG_TO_UBASE(0xD5F69236), HN_ULONG_TO_UBASE(0x2D75CE0A),
847         HN_ULONG_TO_UBASE(0xE1294F1C), HN_ULONG_TO_UBASE(0xB76D891E)
848     },
849 
850     /* 2^e * 12G.x */
851     {
852         HN_ULONG_TO_UBASE(0xF32FB310), HN_ULONG_TO_UBASE(0xAE93A25A),
853         HN_ULONG_TO_UBASE(0xE6E47280), HN_ULONG_TO_UBASE(0x6D0CBD1F),
854         HN_ULONG_TO_UBASE(0x6C1BA226), HN_ULONG_TO_UBASE(0xA68C6214),
855         HN_ULONG_TO_UBASE(0x3EA4307E), HN_ULONG_TO_UBASE(0xCB06F445),
856         HN_ULONG_TO_UBASE(0x90B8B6BF), HN_ULONG_TO_UBASE(0xC2964BD1),
857         HN_ULONG_TO_UBASE(0xD788E64E), HN_ULONG_TO_UBASE(0x220E5B2E)
858     },
859 
860     /* 2^e * 12G.y */
861     {
862         HN_ULONG_TO_UBASE(0x8C2738AA), HN_ULONG_TO_UBASE(0xF0CA4E90),
863         HN_ULONG_TO_UBASE(0xFB5BB075), HN_ULONG_TO_UBASE(0xCAD449F3),
864         HN_ULONG_TO_UBASE(0x7352836B), HN_ULONG_TO_UBASE(0xCA78A9BA),
865         HN_ULONG_TO_UBASE(0x5E3E1251), HN_ULONG_TO_UBASE(0x51DDE73C),
866         HN_ULONG_TO_UBASE(0x63B8C3F2), HN_ULONG_TO_UBASE(0xC8604CC4),
867         HN_ULONG_TO_UBASE(0x9802EF45), HN_ULONG_TO_UBASE(0xF3DB1991)
868     },
869 
870     /* 2^e * 13G.x */
871     {
872         HN_ULONG_TO_UBASE(0x400DDFBF), HN_ULONG_TO_UBASE(0x81C539F3),
873         HN_ULONG_TO_UBASE(0xAF546DE4), HN_ULONG_TO_UBASE(0xAA31AD90),
874         HN_ULONG_TO_UBASE(0xDACD1FC3), HN_ULONG_TO_UBASE(0xACF6A5C4),
875         HN_ULONG_TO_UBASE(0x2E931CA5), HN_ULONG_TO_UBASE(0xEF870E03),
876         HN_ULONG_TO_UBASE(0xC3878346), HN_ULONG_TO_UBASE(0x47D59E06),
877         HN_ULONG_TO_UBASE(0x6966EBE3), HN_ULONG_TO_UBASE(0x3D7152F0)
878     },
879 
880     /* 2^e * 13G.y */
881     {
882         HN_ULONG_TO_UBASE(0x18D57993), HN_ULONG_TO_UBASE(0x650F5A0A),
883         HN_ULONG_TO_UBASE(0x2FA7928F), HN_ULONG_TO_UBASE(0xD60D84E3),
884         HN_ULONG_TO_UBASE(0x78E647E1), HN_ULONG_TO_UBASE(0x4B6430F8),
885         HN_ULONG_TO_UBASE(0x6C0FB1BA), HN_ULONG_TO_UBASE(0x216BEE04),
886         HN_ULONG_TO_UBASE(0x243F664F), HN_ULONG_TO_UBASE(0xA6E898A8),
887         HN_ULONG_TO_UBASE(0x5DFA6541), HN_ULONG_TO_UBASE(0xADFB9337)
888     },
889 
890     /* 2^e * 14G.x */
891     {
892         HN_ULONG_TO_UBASE(0x2AB7BAFC), HN_ULONG_TO_UBASE(0x6F8975D6),
893         HN_ULONG_TO_UBASE(0x1657725E), HN_ULONG_TO_UBASE(0x253F30A0),
894         HN_ULONG_TO_UBASE(0x9040E877), HN_ULONG_TO_UBASE(0xC352587E),
895         HN_ULONG_TO_UBASE(0x9F76979F), HN_ULONG_TO_UBASE(0x49323087),
896         HN_ULONG_TO_UBASE(0xC826135A), HN_ULONG_TO_UBASE(0xD1B7844B),
897         HN_ULONG_TO_UBASE(0x394F4DAD), HN_ULONG_TO_UBASE(0xC0C380F1)
898     },
899 
900     /* 2^e * 14G.y */
901     {
902         HN_ULONG_TO_UBASE(0xDFF69F65), HN_ULONG_TO_UBASE(0xD3C69B8B),
903         HN_ULONG_TO_UBASE(0x38F9B216), HN_ULONG_TO_UBASE(0x9A647843),
904         HN_ULONG_TO_UBASE(0xBB476DB4), HN_ULONG_TO_UBASE(0x1FF27B96),
905         HN_ULONG_TO_UBASE(0xA34F8F45), HN_ULONG_TO_UBASE(0xAF6DF959),
906         HN_ULONG_TO_UBASE(0x10134D99), HN_ULONG_TO_UBASE(0x3ACBFCCE),
907         HN_ULONG_TO_UBASE(0x1EFD2039), HN_ULONG_TO_UBASE(0xCB8987EE)
908     },
909 
910     /* 2^e * 15G.x */
911     {
912         HN_ULONG_TO_UBASE(0xFF6BBF81), HN_ULONG_TO_UBASE(0x076C157A),
913         HN_ULONG_TO_UBASE(0x4897A421), HN_ULONG_TO_UBASE(0x196BE03B),
914         HN_ULONG_TO_UBASE(0x76DAD52C), HN_ULONG_TO_UBASE(0xCAF25CA7),
915         HN_ULONG_TO_UBASE(0xB324D2C0), HN_ULONG_TO_UBASE(0x79F8B09B),
916         HN_ULONG_TO_UBASE(0xE3B929EB), HN_ULONG_TO_UBASE(0xE2989513),
917         HN_ULONG_TO_UBASE(0x62CF6433), HN_ULONG_TO_UBASE(0xDC6145F6)
918     },
919 
920     /* 2^e * 15G.y */
921     {
922         HN_ULONG_TO_UBASE(0x18F5F266), HN_ULONG_TO_UBASE(0x4D338705),
923         HN_ULONG_TO_UBASE(0xAAA279F3), HN_ULONG_TO_UBASE(0x2AB679D7),
924         HN_ULONG_TO_UBASE(0x16F35C76), HN_ULONG_TO_UBASE(0x6D7F11D5),
925         HN_ULONG_TO_UBASE(0xAC9B005B), HN_ULONG_TO_UBASE(0x104DCC7F),
926         HN_ULONG_TO_UBASE(0x9FA79809), HN_ULONG_TO_UBASE(0x4131F098),
927         HN_ULONG_TO_UBASE(0x590FB907), HN_ULONG_TO_UBASE(0x2DA645E8)
928     },
929 
930     /* 2^e * 16G.x */
931     {
932         HN_ULONG_TO_UBASE(0x7DE8FBC8), HN_ULONG_TO_UBASE(0x8C56016E),
933         HN_ULONG_TO_UBASE(0x109811E4), HN_ULONG_TO_UBASE(0x12F4B01D),
934         HN_ULONG_TO_UBASE(0x2E8E9787), HN_ULONG_TO_UBASE(0x5C1740FF),
935         HN_ULONG_TO_UBASE(0xFD1A9591), HN_ULONG_TO_UBASE(0x1EF71AAC),
936         HN_ULONG_TO_UBASE(0xD06BD8B5), HN_ULONG_TO_UBASE(0xBF0993F9),
937         HN_ULONG_TO_UBASE(0x64559C30), HN_ULONG_TO_UBASE(0x8F040E83)
938     },
939 
940     /* 2^e * 16G.y */
941     {
942         HN_ULONG_TO_UBASE(0xB19DAAFD), HN_ULONG_TO_UBASE(0xF3CFF2FA),
943         HN_ULONG_TO_UBASE(0x7A74F7B4), HN_ULONG_TO_UBASE(0x6A2AB770),
944         HN_ULONG_TO_UBASE(0x7C73FE42), HN_ULONG_TO_UBASE(0x59F8ED55),
945         HN_ULONG_TO_UBASE(0xA1B176C4), HN_ULONG_TO_UBASE(0xC8EC72C9),
946         HN_ULONG_TO_UBASE(0x58904740), HN_ULONG_TO_UBASE(0xDE4FBA38),
947         HN_ULONG_TO_UBASE(0xBF8F9971), HN_ULONG_TO_UBASE(0xB4044B0C)
948     },
949 
950     /* 2^e * 17G.x */
951     {
952         HN_ULONG_TO_UBASE(0x9D783476), HN_ULONG_TO_UBASE(0x04FF868C),
953         HN_ULONG_TO_UBASE(0x9A2BD397), HN_ULONG_TO_UBASE(0xD6847F7C),
954         HN_ULONG_TO_UBASE(0xB1D0DAE0), HN_ULONG_TO_UBASE(0xFA2FE102),
955         HN_ULONG_TO_UBASE(0xBCA32C6D), HN_ULONG_TO_UBASE(0xF257A5D1),
956         HN_ULONG_TO_UBASE(0x31CD5BB5), HN_ULONG_TO_UBASE(0xFF5FB245),
957         HN_ULONG_TO_UBASE(0x89EE180E), HN_ULONG_TO_UBASE(0x0BDC32FE)
958     },
959 
960     /* 2^e * 17G.y */
961     {
962         HN_ULONG_TO_UBASE(0x1D5EE790), HN_ULONG_TO_UBASE(0x6B748C7B),
963         HN_ULONG_TO_UBASE(0xC2EE06C3), HN_ULONG_TO_UBASE(0xB5975608),
964         HN_ULONG_TO_UBASE(0xF8E08565), HN_ULONG_TO_UBASE(0x03D3CEC2),
965         HN_ULONG_TO_UBASE(0xC029274A), HN_ULONG_TO_UBASE(0x3C174FF4),
966         HN_ULONG_TO_UBASE(0x310CE0A9), HN_ULONG_TO_UBASE(0xE6EF58F5),
967         HN_ULONG_TO_UBASE(0x581EC828), HN_ULONG_TO_UBASE(0xDD5A6C7D)
968     },
969 
970     /* 2^e * 18G.x */
971     {
972         HN_ULONG_TO_UBASE(0x3F29C6DA), HN_ULONG_TO_UBASE(0x91699928),
973         HN_ULONG_TO_UBASE(0xA27FA89B), HN_ULONG_TO_UBASE(0x6307CC33),
974         HN_ULONG_TO_UBASE(0x6F8E4D58), HN_ULONG_TO_UBASE(0x4961F6C1),
975         HN_ULONG_TO_UBASE(0xCCE0050E), HN_ULONG_TO_UBASE(0x6D769DBE),
976         HN_ULONG_TO_UBASE(0x4C77D1CF), HN_ULONG_TO_UBASE(0x235F1A63),
977         HN_ULONG_TO_UBASE(0x51CA6E0A), HN_ULONG_TO_UBASE(0xABCD2FF6)
978     },
979 
980     /* 2^e * 18G.y */
981     {
982         HN_ULONG_TO_UBASE(0x0517D9FD), HN_ULONG_TO_UBASE(0x19B7C27A),
983         HN_ULONG_TO_UBASE(0x1E14A80E), HN_ULONG_TO_UBASE(0xAFC922EB),
984         HN_ULONG_TO_UBASE(0x7B486A4A), HN_ULONG_TO_UBASE(0xA4544CA6),
985         HN_ULONG_TO_UBASE(0x15117677), HN_ULONG_TO_UBASE(0x64B1D030),
986         HN_ULONG_TO_UBASE(0xE8860718), HN_ULONG_TO_UBASE(0x4A5354BD),
987         HN_ULONG_TO_UBASE(0x95F6AC77), HN_ULONG_TO_UBASE(0x63A83299)
988     },
989 
990     /* 2^e * 19G.x */
991     {
992         HN_ULONG_TO_UBASE(0xB31B0A97), HN_ULONG_TO_UBASE(0xEA0E51B0),
993         HN_ULONG_TO_UBASE(0x6A15D6F4), HN_ULONG_TO_UBASE(0xB6B52443),
994         HN_ULONG_TO_UBASE(0x30C5E5D2), HN_ULONG_TO_UBASE(0xEE59B33D),
995         HN_ULONG_TO_UBASE(0x0AB60DCB), HN_ULONG_TO_UBASE(0x862AE200),
996         HN_ULONG_TO_UBASE(0xF83AE53A), HN_ULONG_TO_UBASE(0x2DFF95EE),
997         HN_ULONG_TO_UBASE(0xABAC2A31), HN_ULONG_TO_UBASE(0xDEE75AF8)
998     },
999 
1000     /* 2^e * 19G.y */
1001     {
1002         HN_ULONG_TO_UBASE(0xB3FE383A), HN_ULONG_TO_UBASE(0x4BDFE8E0),
1003         HN_ULONG_TO_UBASE(0x4154109D), HN_ULONG_TO_UBASE(0x8C95C6C4),
1004         HN_ULONG_TO_UBASE(0x6CF2E9A4), HN_ULONG_TO_UBASE(0xB886A668),
1005         HN_ULONG_TO_UBASE(0x9CC66DC0), HN_ULONG_TO_UBASE(0xCF2E1362),
1006         HN_ULONG_TO_UBASE(0x4B8EF1B8), HN_ULONG_TO_UBASE(0xBB665A34),
1007         HN_ULONG_TO_UBASE(0xA110EEDC), HN_ULONG_TO_UBASE(0x3985801B)
1008     },
1009 
1010     /* 2^e * 20G.x */
1011     {
1012         HN_ULONG_TO_UBASE(0x7676635D), HN_ULONG_TO_UBASE(0xB5EAAD66),
1013         HN_ULONG_TO_UBASE(0x4B15B8A3), HN_ULONG_TO_UBASE(0xCE2AAE2B),
1014         HN_ULONG_TO_UBASE(0xBAE4F3C0), HN_ULONG_TO_UBASE(0x0DA04CBE),
1015         HN_ULONG_TO_UBASE(0xF81B1920), HN_ULONG_TO_UBASE(0x0763CCAA),
1016         HN_ULONG_TO_UBASE(0xE98897D5), HN_ULONG_TO_UBASE(0xC962D4F0),
1017         HN_ULONG_TO_UBASE(0x19FDAA33), HN_ULONG_TO_UBASE(0xB1354D28)
1018     },
1019 
1020     /* 2^e * 20G.y */
1021     {
1022         HN_ULONG_TO_UBASE(0x655C2856), HN_ULONG_TO_UBASE(0x032431E6),
1023         HN_ULONG_TO_UBASE(0x667D4DE5), HN_ULONG_TO_UBASE(0xBE185E46),
1024         HN_ULONG_TO_UBASE(0xD961220E), HN_ULONG_TO_UBASE(0xE3FAB495),
1025         HN_ULONG_TO_UBASE(0x1132AA7A), HN_ULONG_TO_UBASE(0xCC1889B7),
1026         HN_ULONG_TO_UBASE(0xFA9ED4A2), HN_ULONG_TO_UBASE(0x13699414),
1027         HN_ULONG_TO_UBASE(0x9D9542D6), HN_ULONG_TO_UBASE(0x54A94741)
1028     },
1029 
1030     /* 2^e * 21G.x */
1031     {
1032         HN_ULONG_TO_UBASE(0x01DDCB22), HN_ULONG_TO_UBASE(0xA6CBEE20),
1033         HN_ULONG_TO_UBASE(0xD172C1FA), HN_ULONG_TO_UBASE(0x4E514181),
1034         HN_ULONG_TO_UBASE(0x94A30E74), HN_ULONG_TO_UBASE(0xE96C0261),
1035         HN_ULONG_TO_UBASE(0x71DD3E3B), HN_ULONG_TO_UBASE(0x50A70687),
1036         HN_ULONG_TO_UBASE(0x48D71A28), HN_ULONG_TO_UBASE(0x97315C33),
1037         HN_ULONG_TO_UBASE(0x17B6D0A0), HN_ULONG_TO_UBASE(0x9DCDDB2A)
1038     },
1039 
1040     /* 2^e * 21G.y */
1041     {
1042         HN_ULONG_TO_UBASE(0x0B489DA0), HN_ULONG_TO_UBASE(0xA8228D75),
1043         HN_ULONG_TO_UBASE(0xCA3528F9), HN_ULONG_TO_UBASE(0x7D762EB3),
1044         HN_ULONG_TO_UBASE(0x35BE5882), HN_ULONG_TO_UBASE(0x321499B4),
1045         HN_ULONG_TO_UBASE(0x590B4DEC), HN_ULONG_TO_UBASE(0x1C9287AC),
1046         HN_ULONG_TO_UBASE(0x7F251108), HN_ULONG_TO_UBASE(0x3E9ADC31),
1047         HN_ULONG_TO_UBASE(0xE916EEC7), HN_ULONG_TO_UBASE(0x2DCF7C91)
1048     },
1049 
1050     /* 2^e * 22G.x */
1051     {
1052         HN_ULONG_TO_UBASE(0x80E88DDF), HN_ULONG_TO_UBASE(0x36A44B50),
1053         HN_ULONG_TO_UBASE(0x481B9AFD), HN_ULONG_TO_UBASE(0x1BD1C020),
1054         HN_ULONG_TO_UBASE(0x7A255175), HN_ULONG_TO_UBASE(0xCBF3BC20),
1055         HN_ULONG_TO_UBASE(0x7983D6B8), HN_ULONG_TO_UBASE(0x78D0E419),
1056         HN_ULONG_TO_UBASE(0xD30DF778), HN_ULONG_TO_UBASE(0x29D268FF),
1057         HN_ULONG_TO_UBASE(0xBEBF77CB), HN_ULONG_TO_UBASE(0x8DABAEE8)
1058     },
1059 
1060     /* 2^e * 22G.y */
1061     {
1062         HN_ULONG_TO_UBASE(0xB7901C46), HN_ULONG_TO_UBASE(0xB5E736D2),
1063         HN_ULONG_TO_UBASE(0x30A0870A), HN_ULONG_TO_UBASE(0xFA4744B6),
1064         HN_ULONG_TO_UBASE(0xFDC9AD1B), HN_ULONG_TO_UBASE(0x938AED88),
1065         HN_ULONG_TO_UBASE(0x833D2D39), HN_ULONG_TO_UBASE(0xED2240D2),
1066         HN_ULONG_TO_UBASE(0x2CA846A5), HN_ULONG_TO_UBASE(0x516BEA26),
1067         HN_ULONG_TO_UBASE(0x35D43D9F), HN_ULONG_TO_UBASE(0x725F74E2)
1068     },
1069 
1070     /* 2^e * 23G.x */
1071     {
1072         HN_ULONG_TO_UBASE(0x1FD171E3), HN_ULONG_TO_UBASE(0x4E74393D),
1073         HN_ULONG_TO_UBASE(0x47D2E77C), HN_ULONG_TO_UBASE(0x4CD9B12C),
1074         HN_ULONG_TO_UBASE(0xEF0D7390), HN_ULONG_TO_UBASE(0xC2D9684D),
1075         HN_ULONG_TO_UBASE(0x407D76F2), HN_ULONG_TO_UBASE(0x44EDBD18),
1076         HN_ULONG_TO_UBASE(0x5086202D), HN_ULONG_TO_UBASE(0x18FB339E),
1077         HN_ULONG_TO_UBASE(0x92AD71C1), HN_ULONG_TO_UBASE(0xA3D55B78)
1078     },
1079 
1080     /* 2^e * 23G.y */
1081     {
1082         HN_ULONG_TO_UBASE(0xEC7856C9), HN_ULONG_TO_UBASE(0x477E73FC),
1083         HN_ULONG_TO_UBASE(0x8BAD1445), HN_ULONG_TO_UBASE(0xD675A733),
1084         HN_ULONG_TO_UBASE(0xE01B375D), HN_ULONG_TO_UBASE(0xB6B60D37),
1085         HN_ULONG_TO_UBASE(0x433B0AD0), HN_ULONG_TO_UBASE(0xB868E2D6),
1086         HN_ULONG_TO_UBASE(0x19174889), HN_ULONG_TO_UBASE(0x6D95BDB9),
1087         HN_ULONG_TO_UBASE(0xF49BE335), HN_ULONG_TO_UBASE(0xD86B9FB2)
1088     },
1089 
1090     /* 2^e * 24G.x */
1091     {
1092         HN_ULONG_TO_UBASE(0xB29FCD8E), HN_ULONG_TO_UBASE(0x2BC2ED08),
1093         HN_ULONG_TO_UBASE(0x3B050AA0), HN_ULONG_TO_UBASE(0x0E051889),
1094         HN_ULONG_TO_UBASE(0x0C9E1B7D), HN_ULONG_TO_UBASE(0x16B3DE55),
1095         HN_ULONG_TO_UBASE(0x8AE2DC7A), HN_ULONG_TO_UBASE(0xB9D4C6FA),
1096         HN_ULONG_TO_UBASE(0xC9417C80), HN_ULONG_TO_UBASE(0xF9067836),
1097         HN_ULONG_TO_UBASE(0x60B951D6), HN_ULONG_TO_UBASE(0x7ADE26C9)
1098     },
1099 
1100     /* 2^e * 24G.y */
1101     {
1102         HN_ULONG_TO_UBASE(0xF93A334E), HN_ULONG_TO_UBASE(0x8F9A62FD),
1103         HN_ULONG_TO_UBASE(0x7D0A4596), HN_ULONG_TO_UBASE(0x82A01186),
1104         HN_ULONG_TO_UBASE(0x56393DBB), HN_ULONG_TO_UBASE(0xB17FD21F),
1105         HN_ULONG_TO_UBASE(0x3867C182), HN_ULONG_TO_UBASE(0xECEFFA73),
1106         HN_ULONG_TO_UBASE(0xCC325FB4), HN_ULONG_TO_UBASE(0xB58C6EFD),
1107         HN_ULONG_TO_UBASE(0x51305B68), HN_ULONG_TO_UBASE(0x2762D890)
1108     },
1109 
1110     /* 2^e * 25G.x */
1111     {
1112         HN_ULONG_TO_UBASE(0xD0BACDDF), HN_ULONG_TO_UBASE(0x5EC458D0),
1113         HN_ULONG_TO_UBASE(0x8B6C0C20), HN_ULONG_TO_UBASE(0x5F00DC55),
1114         HN_ULONG_TO_UBASE(0x61392B6A), HN_ULONG_TO_UBASE(0x5D0F4AAD),
1115         HN_ULONG_TO_UBASE(0x4B1B3EC0), HN_ULONG_TO_UBASE(0x83AECE93),
1116         HN_ULONG_TO_UBASE(0x6FF068ED), HN_ULONG_TO_UBASE(0x6467B444),
1117         HN_ULONG_TO_UBASE(0x860EFF5E), HN_ULONG_TO_UBASE(0x7DEB632F)
1118     },
1119 
1120     /* 2^e * 25G.y */
1121     {
1122         HN_ULONG_TO_UBASE(0x01BC13A2), HN_ULONG_TO_UBASE(0x7F98C795),
1123         HN_ULONG_TO_UBASE(0x144654F6), HN_ULONG_TO_UBASE(0xA17A3AE0),
1124         HN_ULONG_TO_UBASE(0x1F338F77), HN_ULONG_TO_UBASE(0xFB37245A),
1125         HN_ULONG_TO_UBASE(0x02980347), HN_ULONG_TO_UBASE(0xD2B78CF7),
1126         HN_ULONG_TO_UBASE(0xBDC17EA4), HN_ULONG_TO_UBASE(0x2F290905),
1127         HN_ULONG_TO_UBASE(0x3C0FBD8B), HN_ULONG_TO_UBASE(0x50BCE7FD)
1128     },
1129 
1130     /* 2^e * 26G.x */
1131     {
1132         HN_ULONG_TO_UBASE(0x2DE236DE), HN_ULONG_TO_UBASE(0x1468EECF),
1133         HN_ULONG_TO_UBASE(0x012467C8), HN_ULONG_TO_UBASE(0xF10BE7B5),
1134         HN_ULONG_TO_UBASE(0x9F35467C), HN_ULONG_TO_UBASE(0x9A099B7E),
1135         HN_ULONG_TO_UBASE(0xCF3D3593), HN_ULONG_TO_UBASE(0x77A6D7EE),
1136         HN_ULONG_TO_UBASE(0x9938334D), HN_ULONG_TO_UBASE(0xE12E223E),
1137         HN_ULONG_TO_UBASE(0x1111122A), HN_ULONG_TO_UBASE(0x612A9319)
1138     },
1139 
1140     /* 2^e * 26G.y */
1141     {
1142         HN_ULONG_TO_UBASE(0xD9F39234), HN_ULONG_TO_UBASE(0xBB8EDE43),
1143         HN_ULONG_TO_UBASE(0x6B69E865), HN_ULONG_TO_UBASE(0xF47ECAA8),
1144         HN_ULONG_TO_UBASE(0xF2CC279F), HN_ULONG_TO_UBASE(0x309D4019),
1145         HN_ULONG_TO_UBASE(0xF92A1732), HN_ULONG_TO_UBASE(0xF04ED535),
1146         HN_ULONG_TO_UBASE(0x556B0C2F), HN_ULONG_TO_UBASE(0x41378845),
1147         HN_ULONG_TO_UBASE(0x343A850B), HN_ULONG_TO_UBASE(0xE478B07C)
1148     },
1149 
1150     /* 2^e * 27G.x */
1151     {
1152         HN_ULONG_TO_UBASE(0x67040795), HN_ULONG_TO_UBASE(0x99BF7824),
1153         HN_ULONG_TO_UBASE(0xE0D09657), HN_ULONG_TO_UBASE(0xB3174F6D),
1154         HN_ULONG_TO_UBASE(0x9BD48F08), HN_ULONG_TO_UBASE(0x0AA62BCD),
1155         HN_ULONG_TO_UBASE(0x0080F1C3), HN_ULONG_TO_UBASE(0xE14CF302),
1156         HN_ULONG_TO_UBASE(0x1235280E), HN_ULONG_TO_UBASE(0x1C6733C1),
1157         HN_ULONG_TO_UBASE(0xB70F9435), HN_ULONG_TO_UBASE(0xCC2D0011)
1158     },
1159 
1160     /* 2^e * 27G.y */
1161     {
1162         HN_ULONG_TO_UBASE(0x15384AC2), HN_ULONG_TO_UBASE(0xD269F1D1),
1163         HN_ULONG_TO_UBASE(0xD2B73477), HN_ULONG_TO_UBASE(0x9AD2E394),
1164         HN_ULONG_TO_UBASE(0xDD44D743), HN_ULONG_TO_UBASE(0x5FC362AE),
1165         HN_ULONG_TO_UBASE(0xB5DEA0B0), HN_ULONG_TO_UBASE(0xF0D7E109),
1166         HN_ULONG_TO_UBASE(0xCE689EC7), HN_ULONG_TO_UBASE(0xC9FC044C),
1167         HN_ULONG_TO_UBASE(0x1B791918), HN_ULONG_TO_UBASE(0x9B2A8EE4)
1168     },
1169 
1170     /* 2^e * 28G.x */
1171     {
1172         HN_ULONG_TO_UBASE(0xA7F3896D), HN_ULONG_TO_UBASE(0xB4EB87E2),
1173         HN_ULONG_TO_UBASE(0xAD9B5B2C), HN_ULONG_TO_UBASE(0x36E99DDD),
1174         HN_ULONG_TO_UBASE(0xDFB6B879), HN_ULONG_TO_UBASE(0x94DB8243),
1175         HN_ULONG_TO_UBASE(0x8F5DE0A0), HN_ULONG_TO_UBASE(0x4F007E0D),
1176         HN_ULONG_TO_UBASE(0x159DE404), HN_ULONG_TO_UBASE(0x2181FD84),
1177         HN_ULONG_TO_UBASE(0xE9002836), HN_ULONG_TO_UBASE(0x7F799B46)
1178     },
1179 
1180     /* 2^e * 28G.y */
1181     {
1182         HN_ULONG_TO_UBASE(0xEFBB502A), HN_ULONG_TO_UBASE(0x4EF02E02),
1183         HN_ULONG_TO_UBASE(0x01FD6807), HN_ULONG_TO_UBASE(0xAA8A2900),
1184         HN_ULONG_TO_UBASE(0x2B17884B), HN_ULONG_TO_UBASE(0xD5118793),
1185         HN_ULONG_TO_UBASE(0x4CE8660A), HN_ULONG_TO_UBASE(0x0BFA646A),
1186         HN_ULONG_TO_UBASE(0xF04CB9E8), HN_ULONG_TO_UBASE(0x9548772B),
1187         HN_ULONG_TO_UBASE(0x47ACA66F), HN_ULONG_TO_UBASE(0xAED85F62)
1188     },
1189 
1190     /* 2^e * 29G.x */
1191     {
1192         HN_ULONG_TO_UBASE(0xEDCBB430), HN_ULONG_TO_UBASE(0x1CD6A960),
1193         HN_ULONG_TO_UBASE(0xCB37B09C), HN_ULONG_TO_UBASE(0xF3CC47D6),
1194         HN_ULONG_TO_UBASE(0x542C040B), HN_ULONG_TO_UBASE(0x227DAC36),
1195         HN_ULONG_TO_UBASE(0xE6338069), HN_ULONG_TO_UBASE(0x2B995E24),
1196         HN_ULONG_TO_UBASE(0xAF0D202D), HN_ULONG_TO_UBASE(0x7DBF5606),
1197         HN_ULONG_TO_UBASE(0xD464B0C1), HN_ULONG_TO_UBASE(0xFD6E2B95)
1198     },
1199 
1200     /* 2^e * 29G.y */
1201     {
1202         HN_ULONG_TO_UBASE(0x0589B2B7), HN_ULONG_TO_UBASE(0x19D75625),
1203         HN_ULONG_TO_UBASE(0x1B7E0405), HN_ULONG_TO_UBASE(0xA88ECA19),
1204         HN_ULONG_TO_UBASE(0x5AA169B6), HN_ULONG_TO_UBASE(0x39409D88),
1205         HN_ULONG_TO_UBASE(0x370BCAD0), HN_ULONG_TO_UBASE(0xD266FC24),
1206         HN_ULONG_TO_UBASE(0x6E648420), HN_ULONG_TO_UBASE(0x96903090),
1207         HN_ULONG_TO_UBASE(0xDE5D854B), HN_ULONG_TO_UBASE(0xA02242F9)
1208     },
1209 
1210     /* 2^e * 30G.x */
1211     {
1212         HN_ULONG_TO_UBASE(0x027E096E), HN_ULONG_TO_UBASE(0x8C9E8282),
1213         HN_ULONG_TO_UBASE(0x0B462AC5), HN_ULONG_TO_UBASE(0x052D0556),
1214         HN_ULONG_TO_UBASE(0xCECC307A), HN_ULONG_TO_UBASE(0x2CE9D135),
1215         HN_ULONG_TO_UBASE(0xB76CEDD3), HN_ULONG_TO_UBASE(0x25F6B914),
1216         HN_ULONG_TO_UBASE(0xD9259B0C), HN_ULONG_TO_UBASE(0xACC0839D),
1217         HN_ULONG_TO_UBASE(0x5652D512), HN_ULONG_TO_UBASE(0xAA8C8841)
1218     },
1219 
1220     /* 2^e * 30G.y */
1221     {
1222         HN_ULONG_TO_UBASE(0xF8F0ECF7), HN_ULONG_TO_UBASE(0xAD043205),
1223         HN_ULONG_TO_UBASE(0x9594482F), HN_ULONG_TO_UBASE(0x81088B3C),
1224         HN_ULONG_TO_UBASE(0x5DE69DF0), HN_ULONG_TO_UBASE(0x9A27B905),
1225         HN_ULONG_TO_UBASE(0x0018C17B), HN_ULONG_TO_UBASE(0xC1576503),
1226         HN_ULONG_TO_UBASE(0x04511B87), HN_ULONG_TO_UBASE(0xAD25B6AB),
1227         HN_ULONG_TO_UBASE(0x8A92B28D), HN_ULONG_TO_UBASE(0xA5624218)
1228     },
1229 
1230     /* 2^e * 31G.x */
1231     {
1232         HN_ULONG_TO_UBASE(0x448320B7), HN_ULONG_TO_UBASE(0xB0AA0B05),
1233         HN_ULONG_TO_UBASE(0x543BA441), HN_ULONG_TO_UBASE(0x3A5F5043),
1234         HN_ULONG_TO_UBASE(0x7047E54B), HN_ULONG_TO_UBASE(0xFACABDF4),
1235         HN_ULONG_TO_UBASE(0x5A1197AD), HN_ULONG_TO_UBASE(0x48DD13E1),
1236         HN_ULONG_TO_UBASE(0xFB00302E), HN_ULONG_TO_UBASE(0xDBB3B5C4),
1237         HN_ULONG_TO_UBASE(0x6E938D95), HN_ULONG_TO_UBASE(0x297E0535)
1238     },
1239 
1240     /* 2^e * 31G.y */
1241     {
1242         HN_ULONG_TO_UBASE(0xEF8773AB), HN_ULONG_TO_UBASE(0x0B6C2CA0),
1243         HN_ULONG_TO_UBASE(0x71EA0C8E), HN_ULONG_TO_UBASE(0x6296D4D6),
1244         HN_ULONG_TO_UBASE(0x7E448A7A), HN_ULONG_TO_UBASE(0x49BD8645),
1245         HN_ULONG_TO_UBASE(0x61C7CCBF), HN_ULONG_TO_UBASE(0xF8D69BEB),
1246         HN_ULONG_TO_UBASE(0xC1E64156), HN_ULONG_TO_UBASE(0xE60FEADB),
1247         HN_ULONG_TO_UBASE(0x57BBD1CF), HN_ULONG_TO_UBASE(0x4CD395EE)
1248     }
1249 };
1250 static NX_CRYPTO_CONST NX_CRYPTO_EC_POINT secp384r1_fixed_points_array[] =
1251 {
1252 
1253     /* 2G */
1254     {
1255         NX_CRYPTO_EC_POINT_AFFINE,
1256         {
1257             (HN_UBASE *)&secp384r1_fixed_points_data[0],
1258             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1259         },
1260         {
1261             (HN_UBASE *)&secp384r1_fixed_points_data[1],
1262             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1263         },
1264         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1265     },
1266 
1267     /* 3G */
1268     {
1269         NX_CRYPTO_EC_POINT_AFFINE,
1270         {
1271             (HN_UBASE *)&secp384r1_fixed_points_data[2],
1272             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1273         },
1274         {
1275             (HN_UBASE *)&secp384r1_fixed_points_data[3],
1276             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1277         },
1278         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1279     },
1280 
1281     /* 4G */
1282     {
1283         NX_CRYPTO_EC_POINT_AFFINE,
1284         {
1285             (HN_UBASE *)&secp384r1_fixed_points_data[4],
1286             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1287         },
1288         {
1289             (HN_UBASE *)&secp384r1_fixed_points_data[5],
1290             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1291         },
1292         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1293     },
1294 
1295     /* 5G */
1296     {
1297         NX_CRYPTO_EC_POINT_AFFINE,
1298         {
1299             (HN_UBASE *)&secp384r1_fixed_points_data[6],
1300             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1301         },
1302         {
1303             (HN_UBASE *)&secp384r1_fixed_points_data[7],
1304             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1305         },
1306         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1307     },
1308 
1309     /* 6G */
1310     {
1311         NX_CRYPTO_EC_POINT_AFFINE,
1312         {
1313             (HN_UBASE *)&secp384r1_fixed_points_data[8],
1314             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1315         },
1316         {
1317             (HN_UBASE *)&secp384r1_fixed_points_data[9],
1318             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1319         },
1320         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1321     },
1322 
1323     /* 7G */
1324     {
1325         NX_CRYPTO_EC_POINT_AFFINE,
1326         {
1327             (HN_UBASE *)&secp384r1_fixed_points_data[10],
1328             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1329         },
1330         {
1331             (HN_UBASE *)&secp384r1_fixed_points_data[11],
1332             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1333         },
1334         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1335     },
1336 
1337     /* 8G */
1338     {
1339         NX_CRYPTO_EC_POINT_AFFINE,
1340         {
1341             (HN_UBASE *)&secp384r1_fixed_points_data[12],
1342             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1343         },
1344         {
1345             (HN_UBASE *)&secp384r1_fixed_points_data[13],
1346             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1347         },
1348         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1349     },
1350 
1351     /* 9G */
1352     {
1353         NX_CRYPTO_EC_POINT_AFFINE,
1354         {
1355             (HN_UBASE *)&secp384r1_fixed_points_data[14],
1356             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1357         },
1358         {
1359             (HN_UBASE *)&secp384r1_fixed_points_data[15],
1360             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1361         },
1362         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1363     },
1364 
1365     /* 10G */
1366     {
1367         NX_CRYPTO_EC_POINT_AFFINE,
1368         {
1369             (HN_UBASE *)&secp384r1_fixed_points_data[16],
1370             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1371         },
1372         {
1373             (HN_UBASE *)&secp384r1_fixed_points_data[17],
1374             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1375         },
1376         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1377     },
1378 
1379     /* 11G */
1380     {
1381         NX_CRYPTO_EC_POINT_AFFINE,
1382         {
1383             (HN_UBASE *)&secp384r1_fixed_points_data[18],
1384             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1385         },
1386         {
1387             (HN_UBASE *)&secp384r1_fixed_points_data[19],
1388             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1389         },
1390         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1391     },
1392 
1393     /* 12G */
1394     {
1395         NX_CRYPTO_EC_POINT_AFFINE,
1396         {
1397             (HN_UBASE *)&secp384r1_fixed_points_data[20],
1398             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1399         },
1400         {
1401             (HN_UBASE *)&secp384r1_fixed_points_data[21],
1402             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1403         },
1404         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1405     },
1406 
1407     /* 13G */
1408     {
1409         NX_CRYPTO_EC_POINT_AFFINE,
1410         {
1411             (HN_UBASE *)&secp384r1_fixed_points_data[22],
1412             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1413         },
1414         {
1415             (HN_UBASE *)&secp384r1_fixed_points_data[23],
1416             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1417         },
1418         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1419     },
1420 
1421     /* 14G */
1422     {
1423         NX_CRYPTO_EC_POINT_AFFINE,
1424         {
1425             (HN_UBASE *)&secp384r1_fixed_points_data[24],
1426             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1427         },
1428         {
1429             (HN_UBASE *)&secp384r1_fixed_points_data[25],
1430             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1431         },
1432         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1433     },
1434 
1435     /* 15G */
1436     {
1437         NX_CRYPTO_EC_POINT_AFFINE,
1438         {
1439             (HN_UBASE *)&secp384r1_fixed_points_data[26],
1440             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1441         },
1442         {
1443             (HN_UBASE *)&secp384r1_fixed_points_data[27],
1444             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1445         },
1446         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1447     },
1448 
1449     /* 16G */
1450     {
1451         NX_CRYPTO_EC_POINT_AFFINE,
1452         {
1453             (HN_UBASE *)&secp384r1_fixed_points_data[28],
1454             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1455         },
1456         {
1457             (HN_UBASE *)&secp384r1_fixed_points_data[29],
1458             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1459         },
1460         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1461     },
1462 
1463     /* 17G */
1464     {
1465         NX_CRYPTO_EC_POINT_AFFINE,
1466         {
1467             (HN_UBASE *)&secp384r1_fixed_points_data[30],
1468             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1469         },
1470         {
1471             (HN_UBASE *)&secp384r1_fixed_points_data[31],
1472             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1473         },
1474         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1475     },
1476 
1477     /* 18G */
1478     {
1479         NX_CRYPTO_EC_POINT_AFFINE,
1480         {
1481             (HN_UBASE *)&secp384r1_fixed_points_data[32],
1482             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1483         },
1484         {
1485             (HN_UBASE *)&secp384r1_fixed_points_data[33],
1486             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1487         },
1488         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1489     },
1490 
1491     /* 19G */
1492     {
1493         NX_CRYPTO_EC_POINT_AFFINE,
1494         {
1495             (HN_UBASE *)&secp384r1_fixed_points_data[34],
1496             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1497         },
1498         {
1499             (HN_UBASE *)&secp384r1_fixed_points_data[35],
1500             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1501         },
1502         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1503     },
1504 
1505     /* 20G */
1506     {
1507         NX_CRYPTO_EC_POINT_AFFINE,
1508         {
1509             (HN_UBASE *)&secp384r1_fixed_points_data[36],
1510             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1511         },
1512         {
1513             (HN_UBASE *)&secp384r1_fixed_points_data[37],
1514             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1515         },
1516         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1517     },
1518 
1519     /* 21G */
1520     {
1521         NX_CRYPTO_EC_POINT_AFFINE,
1522         {
1523             (HN_UBASE *)&secp384r1_fixed_points_data[38],
1524             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1525         },
1526         {
1527             (HN_UBASE *)&secp384r1_fixed_points_data[39],
1528             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1529         },
1530         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1531     },
1532 
1533     /* 22G */
1534     {
1535         NX_CRYPTO_EC_POINT_AFFINE,
1536         {
1537             (HN_UBASE *)&secp384r1_fixed_points_data[40],
1538             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1539         },
1540         {
1541             (HN_UBASE *)&secp384r1_fixed_points_data[41],
1542             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1543         },
1544         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1545     },
1546 
1547     /* 23G */
1548     {
1549         NX_CRYPTO_EC_POINT_AFFINE,
1550         {
1551             (HN_UBASE *)&secp384r1_fixed_points_data[42],
1552             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1553         },
1554         {
1555             (HN_UBASE *)&secp384r1_fixed_points_data[43],
1556             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1557         },
1558         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1559     },
1560 
1561     /* 24G */
1562     {
1563         NX_CRYPTO_EC_POINT_AFFINE,
1564         {
1565             (HN_UBASE *)&secp384r1_fixed_points_data[44],
1566             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1567         },
1568         {
1569             (HN_UBASE *)&secp384r1_fixed_points_data[45],
1570             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1571         },
1572         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1573     },
1574 
1575     /* 25G */
1576     {
1577         NX_CRYPTO_EC_POINT_AFFINE,
1578         {
1579             (HN_UBASE *)&secp384r1_fixed_points_data[46],
1580             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1581         },
1582         {
1583             (HN_UBASE *)&secp384r1_fixed_points_data[47],
1584             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1585         },
1586         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1587     },
1588 
1589     /* 26G */
1590     {
1591         NX_CRYPTO_EC_POINT_AFFINE,
1592         {
1593             (HN_UBASE *)&secp384r1_fixed_points_data[48],
1594             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1595         },
1596         {
1597             (HN_UBASE *)&secp384r1_fixed_points_data[49],
1598             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1599         },
1600         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1601     },
1602 
1603     /* 27G */
1604     {
1605         NX_CRYPTO_EC_POINT_AFFINE,
1606         {
1607             (HN_UBASE *)&secp384r1_fixed_points_data[50],
1608             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1609         },
1610         {
1611             (HN_UBASE *)&secp384r1_fixed_points_data[51],
1612             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1613         },
1614         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1615     },
1616 
1617     /* 28G */
1618     {
1619         NX_CRYPTO_EC_POINT_AFFINE,
1620         {
1621             (HN_UBASE *)&secp384r1_fixed_points_data[52],
1622             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1623         },
1624         {
1625             (HN_UBASE *)&secp384r1_fixed_points_data[53],
1626             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1627         },
1628         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1629     },
1630 
1631     /* 29G */
1632     {
1633         NX_CRYPTO_EC_POINT_AFFINE,
1634         {
1635             (HN_UBASE *)&secp384r1_fixed_points_data[54],
1636             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1637         },
1638         {
1639             (HN_UBASE *)&secp384r1_fixed_points_data[55],
1640             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1641         },
1642         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1643     },
1644 
1645     /* 30G */
1646     {
1647         NX_CRYPTO_EC_POINT_AFFINE,
1648         {
1649             (HN_UBASE *)&secp384r1_fixed_points_data[56],
1650             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1651         },
1652         {
1653             (HN_UBASE *)&secp384r1_fixed_points_data[57],
1654             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1655         },
1656         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1657     },
1658 
1659     /* 31G */
1660     {
1661         NX_CRYPTO_EC_POINT_AFFINE,
1662         {
1663             (HN_UBASE *)&secp384r1_fixed_points_data[58],
1664             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1665         },
1666         {
1667             (HN_UBASE *)&secp384r1_fixed_points_data[59],
1668             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1669         },
1670         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1671     }
1672 };
1673 static NX_CRYPTO_CONST NX_CRYPTO_EC_POINT secp384r1_fixed_points_2e_array[] =
1674 {
1675 
1676     /* 2^e * 1G */
1677     {
1678         NX_CRYPTO_EC_POINT_AFFINE,
1679         {
1680             (HN_UBASE *)&secp384r1_fixed_points_2e_data[0],
1681             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1682         },
1683         {
1684             (HN_UBASE *)&secp384r1_fixed_points_2e_data[1],
1685             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1686         },
1687         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1688     },
1689 
1690     /* 2^e * 2G */
1691     {
1692         NX_CRYPTO_EC_POINT_AFFINE,
1693         {
1694             (HN_UBASE *)&secp384r1_fixed_points_2e_data[2],
1695             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1696         },
1697         {
1698             (HN_UBASE *)&secp384r1_fixed_points_2e_data[3],
1699             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1700         },
1701         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1702     },
1703 
1704     /* 2^e * 3G */
1705     {
1706         NX_CRYPTO_EC_POINT_AFFINE,
1707         {
1708             (HN_UBASE *)&secp384r1_fixed_points_2e_data[4],
1709             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1710         },
1711         {
1712             (HN_UBASE *)&secp384r1_fixed_points_2e_data[5],
1713             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1714         },
1715         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1716     },
1717 
1718     /* 2^e * 4G */
1719     {
1720         NX_CRYPTO_EC_POINT_AFFINE,
1721         {
1722             (HN_UBASE *)&secp384r1_fixed_points_2e_data[6],
1723             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1724         },
1725         {
1726             (HN_UBASE *)&secp384r1_fixed_points_2e_data[7],
1727             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1728         },
1729         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1730     },
1731 
1732     /* 2^e * 5G */
1733     {
1734         NX_CRYPTO_EC_POINT_AFFINE,
1735         {
1736             (HN_UBASE *)&secp384r1_fixed_points_2e_data[8],
1737             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1738         },
1739         {
1740             (HN_UBASE *)&secp384r1_fixed_points_2e_data[9],
1741             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1742         },
1743         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1744     },
1745 
1746     /* 2^e * 6G */
1747     {
1748         NX_CRYPTO_EC_POINT_AFFINE,
1749         {
1750             (HN_UBASE *)&secp384r1_fixed_points_2e_data[10],
1751             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1752         },
1753         {
1754             (HN_UBASE *)&secp384r1_fixed_points_2e_data[11],
1755             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1756         },
1757         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1758     },
1759 
1760     /* 2^e * 7G */
1761     {
1762         NX_CRYPTO_EC_POINT_AFFINE,
1763         {
1764             (HN_UBASE *)&secp384r1_fixed_points_2e_data[12],
1765             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1766         },
1767         {
1768             (HN_UBASE *)&secp384r1_fixed_points_2e_data[13],
1769             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1770         },
1771         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1772     },
1773 
1774     /* 2^e * 8G */
1775     {
1776         NX_CRYPTO_EC_POINT_AFFINE,
1777         {
1778             (HN_UBASE *)&secp384r1_fixed_points_2e_data[14],
1779             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1780         },
1781         {
1782             (HN_UBASE *)&secp384r1_fixed_points_2e_data[15],
1783             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1784         },
1785         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1786     },
1787 
1788     /* 2^e * 9G */
1789     {
1790         NX_CRYPTO_EC_POINT_AFFINE,
1791         {
1792             (HN_UBASE *)&secp384r1_fixed_points_2e_data[16],
1793             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1794         },
1795         {
1796             (HN_UBASE *)&secp384r1_fixed_points_2e_data[17],
1797             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1798         },
1799         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1800     },
1801 
1802     /* 2^e * 10G */
1803     {
1804         NX_CRYPTO_EC_POINT_AFFINE,
1805         {
1806             (HN_UBASE *)&secp384r1_fixed_points_2e_data[18],
1807             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1808         },
1809         {
1810             (HN_UBASE *)&secp384r1_fixed_points_2e_data[19],
1811             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1812         },
1813         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1814     },
1815 
1816     /* 2^e * 11G */
1817     {
1818         NX_CRYPTO_EC_POINT_AFFINE,
1819         {
1820             (HN_UBASE *)&secp384r1_fixed_points_2e_data[20],
1821             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1822         },
1823         {
1824             (HN_UBASE *)&secp384r1_fixed_points_2e_data[21],
1825             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1826         },
1827         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1828     },
1829 
1830     /* 2^e * 12G */
1831     {
1832         NX_CRYPTO_EC_POINT_AFFINE,
1833         {
1834             (HN_UBASE *)&secp384r1_fixed_points_2e_data[22],
1835             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1836         },
1837         {
1838             (HN_UBASE *)&secp384r1_fixed_points_2e_data[23],
1839             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1840         },
1841         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1842     },
1843 
1844     /* 2^e * 13G */
1845     {
1846         NX_CRYPTO_EC_POINT_AFFINE,
1847         {
1848             (HN_UBASE *)&secp384r1_fixed_points_2e_data[24],
1849             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1850         },
1851         {
1852             (HN_UBASE *)&secp384r1_fixed_points_2e_data[25],
1853             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1854         },
1855         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1856     },
1857 
1858     /* 2^e * 14G */
1859     {
1860         NX_CRYPTO_EC_POINT_AFFINE,
1861         {
1862             (HN_UBASE *)&secp384r1_fixed_points_2e_data[26],
1863             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1864         },
1865         {
1866             (HN_UBASE *)&secp384r1_fixed_points_2e_data[27],
1867             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1868         },
1869         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1870     },
1871 
1872     /* 2^e * 15G */
1873     {
1874         NX_CRYPTO_EC_POINT_AFFINE,
1875         {
1876             (HN_UBASE *)&secp384r1_fixed_points_2e_data[28],
1877             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1878         },
1879         {
1880             (HN_UBASE *)&secp384r1_fixed_points_2e_data[29],
1881             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1882         },
1883         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1884     },
1885 
1886     /* 2^e * 16G */
1887     {
1888         NX_CRYPTO_EC_POINT_AFFINE,
1889         {
1890             (HN_UBASE *)&secp384r1_fixed_points_2e_data[30],
1891             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1892         },
1893         {
1894             (HN_UBASE *)&secp384r1_fixed_points_2e_data[31],
1895             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1896         },
1897         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1898     },
1899 
1900     /* 2^e * 17G */
1901     {
1902         NX_CRYPTO_EC_POINT_AFFINE,
1903         {
1904             (HN_UBASE *)&secp384r1_fixed_points_2e_data[32],
1905             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1906         },
1907         {
1908             (HN_UBASE *)&secp384r1_fixed_points_2e_data[33],
1909             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1910         },
1911         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1912     },
1913 
1914     /* 2^e * 18G */
1915     {
1916         NX_CRYPTO_EC_POINT_AFFINE,
1917         {
1918             (HN_UBASE *)&secp384r1_fixed_points_2e_data[34],
1919             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1920         },
1921         {
1922             (HN_UBASE *)&secp384r1_fixed_points_2e_data[35],
1923             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1924         },
1925         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1926     },
1927 
1928     /* 2^e * 19G */
1929     {
1930         NX_CRYPTO_EC_POINT_AFFINE,
1931         {
1932             (HN_UBASE *)&secp384r1_fixed_points_2e_data[36],
1933             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1934         },
1935         {
1936             (HN_UBASE *)&secp384r1_fixed_points_2e_data[37],
1937             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1938         },
1939         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1940     },
1941 
1942     /* 2^e * 20G */
1943     {
1944         NX_CRYPTO_EC_POINT_AFFINE,
1945         {
1946             (HN_UBASE *)&secp384r1_fixed_points_2e_data[38],
1947             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1948         },
1949         {
1950             (HN_UBASE *)&secp384r1_fixed_points_2e_data[39],
1951             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1952         },
1953         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1954     },
1955 
1956     /* 2^e * 21G */
1957     {
1958         NX_CRYPTO_EC_POINT_AFFINE,
1959         {
1960             (HN_UBASE *)&secp384r1_fixed_points_2e_data[40],
1961             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1962         },
1963         {
1964             (HN_UBASE *)&secp384r1_fixed_points_2e_data[41],
1965             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1966         },
1967         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1968     },
1969 
1970     /* 2^e * 22G */
1971     {
1972         NX_CRYPTO_EC_POINT_AFFINE,
1973         {
1974             (HN_UBASE *)&secp384r1_fixed_points_2e_data[42],
1975             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1976         },
1977         {
1978             (HN_UBASE *)&secp384r1_fixed_points_2e_data[43],
1979             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1980         },
1981         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1982     },
1983 
1984     /* 2^e * 23G */
1985     {
1986         NX_CRYPTO_EC_POINT_AFFINE,
1987         {
1988             (HN_UBASE *)&secp384r1_fixed_points_2e_data[44],
1989             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1990         },
1991         {
1992             (HN_UBASE *)&secp384r1_fixed_points_2e_data[45],
1993             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
1994         },
1995         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
1996     },
1997 
1998     /* 2^e * 24G */
1999     {
2000         NX_CRYPTO_EC_POINT_AFFINE,
2001         {
2002             (HN_UBASE *)&secp384r1_fixed_points_2e_data[46],
2003             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
2004         },
2005         {
2006             (HN_UBASE *)&secp384r1_fixed_points_2e_data[47],
2007             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
2008         },
2009         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
2010     },
2011 
2012     /* 2^e * 25G */
2013     {
2014         NX_CRYPTO_EC_POINT_AFFINE,
2015         {
2016             (HN_UBASE *)&secp384r1_fixed_points_2e_data[48],
2017             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
2018         },
2019         {
2020             (HN_UBASE *)&secp384r1_fixed_points_2e_data[49],
2021             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
2022         },
2023         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
2024     },
2025 
2026     /* 2^e * 26G */
2027     {
2028         NX_CRYPTO_EC_POINT_AFFINE,
2029         {
2030             (HN_UBASE *)&secp384r1_fixed_points_2e_data[50],
2031             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
2032         },
2033         {
2034             (HN_UBASE *)&secp384r1_fixed_points_2e_data[51],
2035             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
2036         },
2037         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
2038     },
2039 
2040     /* 2^e * 27G */
2041     {
2042         NX_CRYPTO_EC_POINT_AFFINE,
2043         {
2044             (HN_UBASE *)&secp384r1_fixed_points_2e_data[52],
2045             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
2046         },
2047         {
2048             (HN_UBASE *)&secp384r1_fixed_points_2e_data[53],
2049             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
2050         },
2051         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
2052     },
2053 
2054     /* 2^e * 28G */
2055     {
2056         NX_CRYPTO_EC_POINT_AFFINE,
2057         {
2058             (HN_UBASE *)&secp384r1_fixed_points_2e_data[54],
2059             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
2060         },
2061         {
2062             (HN_UBASE *)&secp384r1_fixed_points_2e_data[55],
2063             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
2064         },
2065         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
2066     },
2067 
2068     /* 2^e * 29G */
2069     {
2070         NX_CRYPTO_EC_POINT_AFFINE,
2071         {
2072             (HN_UBASE *)&secp384r1_fixed_points_2e_data[56],
2073             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
2074         },
2075         {
2076             (HN_UBASE *)&secp384r1_fixed_points_2e_data[57],
2077             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
2078         },
2079         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
2080     },
2081 
2082     /* 2^e * 30G */
2083     {
2084         NX_CRYPTO_EC_POINT_AFFINE,
2085         {
2086             (HN_UBASE *)&secp384r1_fixed_points_2e_data[58],
2087             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
2088         },
2089         {
2090             (HN_UBASE *)&secp384r1_fixed_points_2e_data[59],
2091             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
2092         },
2093         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
2094     },
2095 
2096     /* 2^e * 31G */
2097     {
2098         NX_CRYPTO_EC_POINT_AFFINE,
2099         {
2100             (HN_UBASE *)&secp384r1_fixed_points_2e_data[60],
2101             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
2102         },
2103         {
2104             (HN_UBASE *)&secp384r1_fixed_points_2e_data[61],
2105             48 >> HN_SIZE_SHIFT, 48, (UINT)NX_CRYPTO_FALSE
2106         },
2107         {(HN_UBASE *)NX_CRYPTO_NULL, 0u, 0u, 0u}
2108     }
2109 };
2110 
2111 
2112 NX_CRYPTO_CONST NX_CRYPTO_EC_FIXED_POINTS _nx_crypto_ec_secp384r1_fixed_points =
2113 {
2114     5u, 384u, 77u, 39u,
2115     (NX_CRYPTO_EC_POINT *)secp384r1_fixed_points_array,
2116     (NX_CRYPTO_EC_POINT *)secp384r1_fixed_points_2e_array
2117 };
2118 
2119