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