1 /*
2  * Copyright (C) 2012 Michael Brown <mbrown@fensystems.co.uk>.
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License as
6  * published by the Free Software Foundation; either version 2 of the
7  * License, or any later version.
8  *
9  * This program is distributed in the hope that it will be useful, but
10  * WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
17  * 02110-1301, USA.
18  *
19  * You can also choose to distribute this program under the terms of
20  * the Unmodified Binary Distribution Licence (as given in the file
21  * COPYING.UBDL), provided that you have satisfied its requirements.
22  */
23 
24 FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
25 
26 /** @file
27  *
28  * Big integer self-tests
29  *
30  */
31 
32 /* Forcibly enable assertions */
33 #undef NDEBUG
34 
35 #include <assert.h>
36 #include <string.h>
37 #include <ipxe/bigint.h>
38 #include <ipxe/test.h>
39 
40 /** Define inline big integer */
41 #define BIGINT(...) { __VA_ARGS__ }
42 
43 /* Provide global functions to allow inspection of generated assembly code */
44 
bigint_init_sample(bigint_element_t * value0,unsigned int size,const void * data,size_t len)45 void bigint_init_sample ( bigint_element_t *value0, unsigned int size,
46 			  const void *data, size_t len ) {
47 	bigint_t ( size ) *value __attribute__ (( may_alias ))
48 		= ( ( void * ) value0 );
49 
50 	bigint_init ( value, data, len );
51 }
52 
bigint_done_sample(const bigint_element_t * value0,unsigned int size,void * out,size_t len)53 void bigint_done_sample ( const bigint_element_t *value0, unsigned int size,
54 			  void *out, size_t len ) {
55 	const bigint_t ( size ) *value __attribute__ (( may_alias ))
56 		= ( ( const void * ) value0 );
57 
58 	bigint_done ( value, out, len );
59 }
60 
bigint_add_sample(const bigint_element_t * addend0,bigint_element_t * value0,unsigned int size)61 void bigint_add_sample ( const bigint_element_t *addend0,
62 			 bigint_element_t *value0, unsigned int size ) {
63 	const bigint_t ( size ) *addend __attribute__ (( may_alias ))
64 		= ( ( const void * ) addend0 );
65 	bigint_t ( size ) *value __attribute__ (( may_alias ))
66 		= ( ( void * ) value0 );
67 
68 	bigint_add ( addend, value );
69 }
70 
bigint_subtract_sample(const bigint_element_t * subtrahend0,bigint_element_t * value0,unsigned int size)71 void bigint_subtract_sample ( const bigint_element_t *subtrahend0,
72 			      bigint_element_t *value0, unsigned int size ) {
73 	const bigint_t ( size ) *subtrahend __attribute__ (( may_alias ))
74 		= ( ( const void * ) subtrahend0 );
75 	bigint_t ( size ) *value __attribute__ (( may_alias ))
76 		= ( ( void * ) value0 );
77 
78 	bigint_subtract ( subtrahend, value );
79 }
80 
bigint_rol_sample(bigint_element_t * value0,unsigned int size)81 void bigint_rol_sample ( bigint_element_t *value0, unsigned int size ) {
82 	bigint_t ( size ) *value __attribute__ (( may_alias ))
83 		= ( ( void * ) value0 );
84 
85 	bigint_rol ( value );
86 }
87 
bigint_ror_sample(bigint_element_t * value0,unsigned int size)88 void bigint_ror_sample ( bigint_element_t *value0, unsigned int size ) {
89 	bigint_t ( size ) *value __attribute__ (( may_alias ))
90 		= ( ( void * ) value0 );
91 
92 	bigint_ror ( value );
93 }
94 
bigint_is_zero_sample(const bigint_element_t * value0,unsigned int size)95 int bigint_is_zero_sample ( const bigint_element_t *value0,
96 			    unsigned int size ) {
97 	const bigint_t ( size ) *value __attribute__ (( may_alias ))
98 		= ( ( const void * ) value0 );
99 
100 	return bigint_is_zero ( value );
101 }
102 
bigint_is_geq_sample(const bigint_element_t * value0,const bigint_element_t * reference0,unsigned int size)103 int bigint_is_geq_sample ( const bigint_element_t *value0,
104 			   const bigint_element_t *reference0,
105 			   unsigned int size ) {
106 	const bigint_t ( size ) *value __attribute__ (( may_alias ))
107 		= ( ( const void * ) value0 );
108 	const bigint_t ( size ) *reference __attribute__ (( may_alias ))
109 		= ( ( const void * ) reference0 );
110 
111 	return bigint_is_geq ( value, reference );
112 }
113 
bigint_bit_is_set_sample(const bigint_element_t * value0,unsigned int size,unsigned int bit)114 int bigint_bit_is_set_sample ( const bigint_element_t *value0,
115 			       unsigned int size, unsigned int bit ) {
116 	const bigint_t ( size ) *value __attribute__ (( may_alias ))
117 		= ( ( const void * ) value0 );
118 
119 	return bigint_bit_is_set ( value, bit );
120 }
121 
bigint_max_set_bit_sample(const bigint_element_t * value0,unsigned int size)122 int bigint_max_set_bit_sample ( const bigint_element_t *value0,
123 				unsigned int size ) {
124 	const bigint_t ( size ) *value __attribute__ (( may_alias ))
125 		= ( ( const void * ) value0 );
126 
127 	return bigint_max_set_bit ( value );
128 }
129 
bigint_grow_sample(const bigint_element_t * source0,unsigned int source_size,bigint_element_t * dest0,unsigned int dest_size)130 void bigint_grow_sample ( const bigint_element_t *source0,
131 			  unsigned int source_size, bigint_element_t *dest0,
132 			  unsigned int dest_size ) {
133 	const bigint_t ( source_size ) *source __attribute__ (( may_alias ))
134 		= ( ( const void * ) source0 );
135 	bigint_t ( dest_size ) *dest __attribute__ (( may_alias ))
136 		= ( ( void * ) dest0 );
137 
138 	bigint_grow ( source, dest );
139 }
140 
bigint_shrink_sample(const bigint_element_t * source0,unsigned int source_size,bigint_element_t * dest0,unsigned int dest_size)141 void bigint_shrink_sample ( const bigint_element_t *source0,
142 			    unsigned int source_size, bigint_element_t *dest0,
143 			    unsigned int dest_size ) {
144 	const bigint_t ( source_size ) *source __attribute__ (( may_alias ))
145 		= ( ( const void * ) source0 );
146 	bigint_t ( dest_size ) *dest __attribute__ (( may_alias ))
147 		= ( ( void * ) dest0 );
148 
149 	bigint_shrink ( source, dest );
150 }
151 
bigint_multiply_sample(const bigint_element_t * multiplicand0,const bigint_element_t * multiplier0,bigint_element_t * result0,unsigned int size)152 void bigint_multiply_sample ( const bigint_element_t *multiplicand0,
153 			      const bigint_element_t *multiplier0,
154 			      bigint_element_t *result0,
155 			      unsigned int size ) {
156 	const bigint_t ( size ) *multiplicand __attribute__ (( may_alias ))
157 		= ( ( const void * ) multiplicand0 );
158 	const bigint_t ( size ) *multiplier __attribute__ (( may_alias ))
159 		= ( ( const void * ) multiplier0 );
160 	bigint_t ( size * 2 ) *result __attribute__ (( may_alias ))
161 		= ( ( void * ) result0 );
162 
163 	bigint_multiply ( multiplicand, multiplier, result );
164 }
165 
bigint_mod_multiply_sample(const bigint_element_t * multiplicand0,const bigint_element_t * multiplier0,const bigint_element_t * modulus0,bigint_element_t * result0,unsigned int size,void * tmp)166 void bigint_mod_multiply_sample ( const bigint_element_t *multiplicand0,
167 				  const bigint_element_t *multiplier0,
168 				  const bigint_element_t *modulus0,
169 				  bigint_element_t *result0,
170 				  unsigned int size,
171 				  void *tmp ) {
172 	const bigint_t ( size ) *multiplicand __attribute__ (( may_alias ))
173 		= ( ( const void * ) multiplicand0 );
174 	const bigint_t ( size ) *multiplier __attribute__ (( may_alias ))
175 		= ( ( const void * ) multiplier0 );
176 	const bigint_t ( size ) *modulus __attribute__ (( may_alias ))
177 		= ( ( const void * ) modulus0 );
178 	bigint_t ( size ) *result __attribute__ (( may_alias ))
179 		= ( ( void * ) result0 );
180 
181 	bigint_mod_multiply ( multiplicand, multiplier, modulus, result, tmp );
182 }
183 
bigint_mod_exp_sample(const bigint_element_t * base0,const bigint_element_t * modulus0,const bigint_element_t * exponent0,bigint_element_t * result0,unsigned int size,unsigned int exponent_size,void * tmp)184 void bigint_mod_exp_sample ( const bigint_element_t *base0,
185 			     const bigint_element_t *modulus0,
186 			     const bigint_element_t *exponent0,
187 			     bigint_element_t *result0,
188 			     unsigned int size, unsigned int exponent_size,
189 			     void *tmp ) {
190 	const bigint_t ( size ) *base __attribute__ (( may_alias ))
191 		= ( ( const void * ) base0 );
192 	const bigint_t ( size ) *modulus __attribute__ (( may_alias ))
193 		= ( ( const void * ) modulus0 );
194 	const bigint_t ( exponent_size ) *exponent __attribute__ (( may_alias ))
195 		= ( ( const void * ) exponent0 );
196 	bigint_t ( size ) *result __attribute__ (( may_alias ))
197 		= ( ( void * ) result0 );
198 
199 	bigint_mod_exp ( base, modulus, exponent, result, tmp );
200 }
201 
202 /**
203  * Report result of big integer addition test
204  *
205  * @v addend		Big integer to add
206  * @v value		Big integer to be added to
207  * @v expected		Big integer expected result
208  */
209 #define bigint_add_ok( addend, value, expected ) do {			\
210 	static const uint8_t addend_raw[] = addend;			\
211 	static const uint8_t value_raw[] = value;			\
212 	static const uint8_t expected_raw[] = expected;			\
213 	uint8_t result_raw[ sizeof ( expected_raw ) ];			\
214 	unsigned int size =						\
215 		bigint_required_size ( sizeof ( value_raw ) );		\
216 	bigint_t ( size ) addend_temp;					\
217 	bigint_t ( size ) value_temp;					\
218 	{} /* Fix emacs alignment */					\
219 									\
220 	assert ( bigint_size ( &addend_temp ) ==			\
221 		 bigint_size ( &value_temp ) );				\
222 	bigint_init ( &value_temp, value_raw, sizeof ( value_raw ) );	\
223 	bigint_init ( &addend_temp, addend_raw,				\
224 		      sizeof ( addend_raw ) );				\
225 	DBG ( "Add:\n" );						\
226 	DBG_HDA ( 0, &addend_temp, sizeof ( addend_temp ) );		\
227 	DBG_HDA ( 0, &value_temp, sizeof ( value_temp ) );		\
228 	bigint_add ( &addend_temp, &value_temp );			\
229 	DBG_HDA ( 0, &value_temp, sizeof ( value_temp ) );		\
230 	bigint_done ( &value_temp, result_raw, sizeof ( result_raw ) );	\
231 									\
232 	ok ( memcmp ( result_raw, expected_raw,				\
233 		      sizeof ( result_raw ) ) == 0 );			\
234 	} while ( 0 )
235 
236 /**
237  * Report result of big integer subtraction test
238  *
239  * @v subtrahend	Big integer to subtract
240  * @v value		Big integer to be subtracted from
241  * @v expected		Big integer expected result
242  */
243 #define bigint_subtract_ok( subtrahend, value, expected ) do {		\
244 	static const uint8_t subtrahend_raw[] = subtrahend;		\
245 	static const uint8_t value_raw[] = value;			\
246 	static const uint8_t expected_raw[] = expected;			\
247 	uint8_t result_raw[ sizeof ( expected_raw ) ];			\
248 	unsigned int size =						\
249 		bigint_required_size ( sizeof ( value_raw ) );		\
250 	bigint_t ( size ) subtrahend_temp;				\
251 	bigint_t ( size ) value_temp;					\
252 	{} /* Fix emacs alignment */					\
253 									\
254 	assert ( bigint_size ( &subtrahend_temp ) ==			\
255 		 bigint_size ( &value_temp ) );				\
256 	bigint_init ( &value_temp, value_raw, sizeof ( value_raw ) );	\
257 	bigint_init ( &subtrahend_temp, subtrahend_raw,			\
258 		      sizeof ( subtrahend_raw ) );			\
259 	DBG ( "Subtract:\n" );						\
260 	DBG_HDA ( 0, &subtrahend_temp, sizeof ( subtrahend_temp ) );	\
261 	DBG_HDA ( 0, &value_temp, sizeof ( value_temp ) );		\
262 	bigint_subtract ( &subtrahend_temp, &value_temp );		\
263 	DBG_HDA ( 0, &value_temp, sizeof ( value_temp ) );		\
264 	bigint_done ( &value_temp, result_raw, sizeof ( result_raw ) );	\
265 									\
266 	ok ( memcmp ( result_raw, expected_raw,				\
267 		      sizeof ( result_raw ) ) == 0 );			\
268 	} while ( 0 )
269 
270 /**
271  * Report result of big integer left rotation test
272  *
273  * @v value		Big integer
274  * @v expected		Big integer expected result
275  */
276 #define bigint_rol_ok( value, expected ) do {				\
277 	static const uint8_t value_raw[] = value;			\
278 	static const uint8_t expected_raw[] = expected;			\
279 	uint8_t result_raw[ sizeof ( expected_raw ) ];			\
280 	unsigned int size =						\
281 		bigint_required_size ( sizeof ( value_raw ) );		\
282 	bigint_t ( size ) value_temp;					\
283 	{} /* Fix emacs alignment */					\
284 									\
285 	bigint_init ( &value_temp, value_raw, sizeof ( value_raw ) );	\
286 	DBG ( "Rotate left:\n" );					\
287 	DBG_HDA ( 0, &value_temp, sizeof ( value_temp ) );		\
288 	bigint_rol ( &value_temp );					\
289 	DBG_HDA ( 0, &value_temp, sizeof ( value_temp ) );		\
290 	bigint_done ( &value_temp, result_raw, sizeof ( result_raw ) );	\
291 									\
292 	ok ( memcmp ( result_raw, expected_raw,				\
293 		      sizeof ( result_raw ) ) == 0 );			\
294 	} while ( 0 )
295 
296 /**
297  * Report result of big integer right rotation test
298  *
299  * @v value		Big integer
300  * @v expected		Big integer expected result
301  */
302 #define bigint_ror_ok( value, expected ) do {				\
303 	static const uint8_t value_raw[] = value;			\
304 	static const uint8_t expected_raw[] = expected;			\
305 	uint8_t result_raw[ sizeof ( expected_raw ) ];			\
306 	unsigned int size =						\
307 		bigint_required_size ( sizeof ( value_raw ) );		\
308 	bigint_t ( size ) value_temp;					\
309 	{} /* Fix emacs alignment */					\
310 									\
311 	bigint_init ( &value_temp, value_raw, sizeof ( value_raw ) );	\
312 	DBG ( "Rotate right:\n" );					\
313 	DBG_HDA ( 0, &value_temp, sizeof ( value_temp ) );		\
314 	bigint_ror ( &value_temp );					\
315 	DBG_HDA ( 0, &value_temp, sizeof ( value_temp ) );		\
316 	bigint_done ( &value_temp, result_raw, sizeof ( result_raw ) );	\
317 									\
318 	ok ( memcmp ( result_raw, expected_raw,				\
319 		      sizeof ( result_raw ) ) == 0 );			\
320 	} while ( 0 )
321 
322 /**
323  * Report result of big integer zero comparison test
324  *
325  * @v value		Big integer
326  * @v expected		Expected result
327  */
328 #define bigint_is_zero_ok( value, expected ) do {			\
329 	static const uint8_t value_raw[] = value;			\
330 	unsigned int size =						\
331 		bigint_required_size ( sizeof ( value_raw ) );		\
332 	bigint_t ( size ) value_temp;					\
333 	int is_zero;							\
334 	{} /* Fix emacs alignment */					\
335 									\
336 	bigint_init ( &value_temp, value_raw, sizeof ( value_raw ) );	\
337 	DBG ( "Zero comparison:\n" );					\
338 	DBG_HDA ( 0, &value_temp, sizeof ( value_temp ) );		\
339 	is_zero = bigint_is_zero ( &value_temp );			\
340 	DBG ( "...is %szero\n", ( is_zero ? "" : "not " ) );		\
341 	ok ( ( !! is_zero ) == ( !! (expected) ) );			\
342 	} while ( 0 )
343 
344 /**
345  * Report result of big integer greater-than-or-equal comparison test
346  *
347  * @v value		Big integer
348  * @v reference		Reference big integer
349  * @v expected		Expected result
350  */
351 #define bigint_is_geq_ok( value, reference, expected ) do {		\
352 	static const uint8_t value_raw[] = value;			\
353 	static const uint8_t reference_raw[] = reference;		\
354 	unsigned int size =						\
355 		bigint_required_size ( sizeof ( value_raw ) );		\
356 	bigint_t ( size ) value_temp;					\
357 	bigint_t ( size ) reference_temp;				\
358 	int is_geq;							\
359 	{} /* Fix emacs alignment */					\
360 									\
361 	assert ( bigint_size ( &reference_temp ) ==			\
362 		 bigint_size ( &value_temp ) );				\
363 	bigint_init ( &value_temp, value_raw, sizeof ( value_raw ) );	\
364 	bigint_init ( &reference_temp, reference_raw,			\
365 		      sizeof ( reference_raw ) );			\
366 	DBG ( "Greater-than-or-equal comparison:\n" );			\
367 	DBG_HDA ( 0, &value_temp, sizeof ( value_temp ) );		\
368 	DBG_HDA ( 0, &reference_temp, sizeof ( reference_temp ) );	\
369 	is_geq = bigint_is_geq ( &value_temp, &reference_temp );	\
370 	DBG ( "...is %sgreater than or equal\n",			\
371 	      ( is_geq ? "" : "not " ) );				\
372 	ok ( ( !! is_geq ) == ( !! (expected) ) );			\
373 	} while ( 0 )
374 
375 /**
376  * Report result of big integer bit-set test
377  *
378  * @v value		Big integer
379  * @v bit		Bit to test
380  * @v expected		Expected result
381  */
382 #define bigint_bit_is_set_ok( value, bit, expected ) do {		\
383 	static const uint8_t value_raw[] = value;			\
384 	unsigned int size =						\
385 		bigint_required_size ( sizeof ( value_raw ) );		\
386 	bigint_t ( size ) value_temp;					\
387 	int bit_is_set;							\
388 	{} /* Fix emacs alignment */					\
389 									\
390 	bigint_init ( &value_temp, value_raw, sizeof ( value_raw ) );	\
391 	DBG ( "Bit set:\n" );						\
392 	DBG_HDA ( 0, &value_temp, sizeof ( value_temp ) );		\
393 	bit_is_set = bigint_bit_is_set ( &value_temp, bit );		\
394 	DBG ( "...bit %d is %sset\n", bit,				\
395 	      ( bit_is_set ? "" : "not " ) );				\
396 	ok ( ( !! bit_is_set ) == ( !! (expected) ) );			\
397 	} while ( 0 )
398 
399 /**
400  * Report result of big integer maximum set bit test
401  *
402  * @v value		Big integer
403  * @v expected		Expected result
404  */
405 #define bigint_max_set_bit_ok( value, expected ) do {			\
406 	static const uint8_t value_raw[] = value;			\
407 	unsigned int size =						\
408 		bigint_required_size ( sizeof ( value_raw ) );		\
409 	bigint_t ( size ) value_temp;					\
410 	int max_set_bit;						\
411 	{} /* Fix emacs alignment */					\
412 									\
413 	bigint_init ( &value_temp, value_raw, sizeof ( value_raw ) );	\
414 	DBG ( "Maximum set bit:\n" );					\
415 	DBG_HDA ( 0, &value_temp, sizeof ( value_temp ) );		\
416 	max_set_bit = bigint_max_set_bit ( &value_temp );		\
417 	DBG ( "...maximum set bit is bit %d\n", ( max_set_bit - 1 ) );	\
418 	ok ( max_set_bit == (expected) );				\
419 	} while ( 0 )
420 
421 /**
422  * Report result of big integer multiplication test
423  *
424  * @v multiplicand	Big integer to be multiplied
425  * @v multiplier	Big integer to be multiplied
426  * @v expected		Big integer expected result
427  */
428 #define bigint_multiply_ok( multiplicand, multiplier, expected ) do {	\
429 	static const uint8_t multiplicand_raw[] = multiplicand;		\
430 	static const uint8_t multiplier_raw[] = multiplier;		\
431 	static const uint8_t expected_raw[] = expected;			\
432 	uint8_t result_raw[ sizeof ( expected_raw ) ];			\
433 	unsigned int size =						\
434 		bigint_required_size ( sizeof ( multiplicand_raw ) );	\
435 	bigint_t ( size ) multiplicand_temp;				\
436 	bigint_t ( size ) multiplier_temp;				\
437 	bigint_t ( size * 2 ) result_temp;				\
438 	{} /* Fix emacs alignment */					\
439 									\
440 	assert ( bigint_size ( &multiplier_temp ) ==			\
441 		 bigint_size ( &multiplicand_temp ) );			\
442 	assert ( bigint_size ( &result_temp ) ==			\
443 		 ( 2 * bigint_size ( &multiplicand_temp ) ) );		\
444 	bigint_init ( &multiplicand_temp, multiplicand_raw,		\
445 		      sizeof ( multiplicand_raw ) );			\
446 	bigint_init ( &multiplier_temp, multiplier_raw,			\
447 		      sizeof ( multiplier_raw ) );			\
448 	DBG ( "Multiply:\n" );						\
449 	DBG_HDA ( 0, &multiplicand_temp, sizeof ( multiplicand_temp ) );\
450 	DBG_HDA ( 0, &multiplier_temp, sizeof ( multiplier_temp ) );	\
451 	bigint_multiply ( &multiplicand_temp, &multiplier_temp,		\
452 			  &result_temp );				\
453 	DBG_HDA ( 0, &result_temp, sizeof ( result_temp ) );		\
454 	bigint_done ( &result_temp, result_raw, sizeof ( result_raw ) );\
455 									\
456 	ok ( memcmp ( result_raw, expected_raw,				\
457 		      sizeof ( result_raw ) ) == 0 );			\
458 	} while ( 0 )
459 
460 /**
461  * Report result of big integer modular multiplication test
462  *
463  * @v multiplicand	Big integer to be multiplied
464  * @v multiplier	Big integer to be multiplied
465  * @v modulus		Big integer modulus
466  * @v expected		Big integer expected result
467  */
468 #define bigint_mod_multiply_ok( multiplicand, multiplier, modulus,	\
469 				expected ) do {				\
470 	static const uint8_t multiplicand_raw[] = multiplicand;		\
471 	static const uint8_t multiplier_raw[] = multiplier;		\
472 	static const uint8_t modulus_raw[] = modulus;			\
473 	static const uint8_t expected_raw[] = expected;			\
474 	uint8_t result_raw[ sizeof ( expected_raw ) ];			\
475 	unsigned int size =						\
476 		bigint_required_size ( sizeof ( multiplicand_raw ) );	\
477 	bigint_t ( size ) multiplicand_temp;				\
478 	bigint_t ( size ) multiplier_temp;				\
479 	bigint_t ( size ) modulus_temp;					\
480 	bigint_t ( size ) result_temp;					\
481 	size_t tmp_len = bigint_mod_multiply_tmp_len ( &modulus_temp ); \
482 	uint8_t tmp[tmp_len];						\
483 	{} /* Fix emacs alignment */					\
484 									\
485 	assert ( bigint_size ( &multiplier_temp ) ==			\
486 		 bigint_size ( &multiplicand_temp ) );			\
487 	assert ( bigint_size ( &multiplier_temp ) ==			\
488 		 bigint_size ( &modulus_temp ) );			\
489 	assert ( bigint_size ( &multiplier_temp ) ==			\
490 		 bigint_size ( &result_temp ) );			\
491 	bigint_init ( &multiplicand_temp, multiplicand_raw,		\
492 		      sizeof ( multiplicand_raw ) );			\
493 	bigint_init ( &multiplier_temp, multiplier_raw,			\
494 		      sizeof ( multiplier_raw ) );			\
495 	bigint_init ( &modulus_temp, modulus_raw,			\
496 		      sizeof ( modulus_raw ) );				\
497 	DBG ( "Modular multiply:\n" );					\
498 	DBG_HDA ( 0, &multiplicand_temp, sizeof ( multiplicand_temp ) );\
499 	DBG_HDA ( 0, &multiplier_temp, sizeof ( multiplier_temp ) );	\
500 	DBG_HDA ( 0, &modulus_temp, sizeof ( modulus_temp ) );		\
501 	bigint_mod_multiply ( &multiplicand_temp, &multiplier_temp,	\
502 			      &modulus_temp, &result_temp, tmp );	\
503 	DBG_HDA ( 0, &result_temp, sizeof ( result_temp ) );		\
504 	bigint_done ( &result_temp, result_raw, sizeof ( result_raw ) );\
505 									\
506 	ok ( memcmp ( result_raw, expected_raw,				\
507 		      sizeof ( result_raw ) ) == 0 );			\
508 	} while ( 0 )
509 
510 /**
511  * Report result of big integer modular exponentiation test
512  *
513  * @v base		Big integer base
514  * @v modulus		Big integer modulus
515  * @v exponent		Big integer exponent
516  * @v expected		Big integer expected result
517  */
518 #define bigint_mod_exp_ok( base, modulus, exponent, expected ) do {	\
519 	static const uint8_t base_raw[] = base;				\
520 	static const uint8_t modulus_raw[] = modulus;			\
521 	static const uint8_t exponent_raw[] = exponent;			\
522 	static const uint8_t expected_raw[] = expected;			\
523 	uint8_t result_raw[ sizeof ( expected_raw ) ];			\
524 	unsigned int size =						\
525 		bigint_required_size ( sizeof ( base_raw ) );		\
526 	unsigned int exponent_size =					\
527 		bigint_required_size ( sizeof ( exponent_raw ) );	\
528 	bigint_t ( size ) base_temp;					\
529 	bigint_t ( size ) modulus_temp;					\
530 	bigint_t ( exponent_size ) exponent_temp;			\
531 	bigint_t ( size ) result_temp;					\
532 	size_t tmp_len = bigint_mod_exp_tmp_len ( &modulus_temp,	\
533 						  &exponent_temp );	\
534 	uint8_t tmp[tmp_len];						\
535 	{} /* Fix emacs alignment */					\
536 									\
537 	assert ( bigint_size ( &modulus_temp ) ==			\
538 		 bigint_size ( &base_temp ) );				\
539 	assert ( bigint_size ( &modulus_temp ) ==			\
540 		 bigint_size ( &result_temp ) );			\
541 	bigint_init ( &base_temp, base_raw, sizeof ( base_raw ) );	\
542 	bigint_init ( &modulus_temp, modulus_raw,			\
543 		      sizeof ( modulus_raw ) );				\
544 	bigint_init ( &exponent_temp, exponent_raw,			\
545 		      sizeof ( exponent_raw ) );			\
546 	DBG ( "Modular exponentiation:\n" );				\
547 	DBG_HDA ( 0, &base_temp, sizeof ( base_temp ) );		\
548 	DBG_HDA ( 0, &modulus_temp, sizeof ( modulus_temp ) );		\
549 	DBG_HDA ( 0, &exponent_temp, sizeof ( exponent_temp ) );	\
550 	bigint_mod_exp ( &base_temp, &modulus_temp, &exponent_temp,	\
551 			 &result_temp, tmp );				\
552 	DBG_HDA ( 0, &result_temp, sizeof ( result_temp ) );		\
553 	bigint_done ( &result_temp, result_raw, sizeof ( result_raw ) );\
554 									\
555 	ok ( memcmp ( result_raw, expected_raw,				\
556 		      sizeof ( result_raw ) ) == 0 );			\
557 	} while ( 0 )
558 
559 /**
560  * Perform big integer self-tests
561  *
562  */
bigint_test_exec(void)563 static void bigint_test_exec ( void ) {
564 
565 	bigint_add_ok ( BIGINT ( 0x8a ),
566 			BIGINT ( 0x43 ),
567 			BIGINT ( 0xcd ) );
568 	bigint_add_ok ( BIGINT ( 0xc5, 0x7b ),
569 			BIGINT ( 0xd6, 0xb1 ),
570 			BIGINT ( 0x9c, 0x2c ) );
571 	bigint_add_ok ( BIGINT ( 0xf9, 0xd9, 0xdc ),
572 			BIGINT ( 0x6d, 0x4b, 0xca ),
573 			BIGINT ( 0x67, 0x25, 0xa6 ) );
574 	bigint_add_ok ( BIGINT ( 0xdd, 0xc2, 0x20, 0x5f ),
575 			BIGINT ( 0x80, 0x32, 0xc4, 0xb0 ),
576 			BIGINT ( 0x5d, 0xf4, 0xe5, 0x0f ) );
577 	bigint_add_ok ( BIGINT ( 0x01, 0xed, 0x45, 0x4b, 0x41, 0xeb, 0x4c,
578 				 0x2e, 0x53, 0x07, 0x15, 0x51, 0x56, 0x47,
579 				 0x29, 0xfc, 0x9c, 0xbd, 0xbd, 0xfb, 0x1b,
580 				 0xd1, 0x1d ),
581 			BIGINT ( 0x73, 0xed, 0xfc, 0x35, 0x31, 0x22, 0xd7,
582 				 0xb1, 0xea, 0x91, 0x5a, 0xe4, 0xba, 0xbc,
583 				 0xa1, 0x38, 0x72, 0xae, 0x4b, 0x1c, 0xc1,
584 				 0x05, 0xb3 ),
585 			BIGINT ( 0x75, 0xdb, 0x41, 0x80, 0x73, 0x0e, 0x23,
586 				 0xe0, 0x3d, 0x98, 0x70, 0x36, 0x11, 0x03,
587 				 0xcb, 0x35, 0x0f, 0x6c, 0x09, 0x17, 0xdc,
588 				 0xd6, 0xd0 ) );
589 	bigint_add_ok ( BIGINT ( 0x06, 0x8e, 0xd6, 0x18, 0xbb, 0x4b, 0x0c,
590 				 0xc5, 0x85, 0xde, 0xee, 0x9b, 0x3f, 0x65,
591 				 0x63, 0x86, 0xf5, 0x5a, 0x9f, 0xa2, 0xd7,
592 				 0xb2, 0xc7, 0xb6, 0x1d, 0x28, 0x6c, 0x50,
593 				 0x47, 0x10, 0x0a, 0x0e, 0x86, 0xcd, 0x2a,
594 				 0x64, 0xdc, 0xe6, 0x9d, 0x96, 0xd8, 0xf4,
595 				 0x56, 0x46, 0x6f, 0xbb, 0x7b, 0x64, 0x6f,
596 				 0xdc, 0x2a, 0xd1, 0x3b, 0xcc, 0x03, 0x85,
597 				 0x95, 0xf4, 0xe9, 0x68, 0x1f, 0x5c, 0xc5,
598 				 0xbf, 0x97, 0x19, 0x12, 0x88, 0x2e, 0x88,
599 				 0xb9, 0x34, 0xac, 0x74, 0x83, 0x2d, 0x8f,
600 				 0xb3, 0x97, 0x53, 0x99, 0xf3, 0xb4, 0x8b,
601 				 0x2d, 0x98, 0x69, 0x8d, 0x19, 0xf0, 0x40,
602 				 0x66, 0x3f, 0x60, 0x78, 0x34, 0x7f, 0x9b,
603 				 0xf7, 0x01, 0x74, 0x55, 0xca, 0x63, 0x25,
604 				 0x7b, 0x86, 0xe9, 0x73, 0xfd, 0x5d, 0x77,
605 				 0x32, 0x5e, 0x9e, 0x42, 0x53, 0xb6, 0x35,
606 				 0x92, 0xb9, 0xd7, 0x1b, 0xf7, 0x16, 0x55,
607 				 0xf6, 0xe2 ),
608 			BIGINT ( 0x3f, 0x8f, 0x62, 0x21, 0x4a, 0x7a, 0xa2,
609 				 0xef, 0xa8, 0x79, 0x9b, 0x73, 0xac, 0xde,
610 				 0x72, 0xe4, 0xfc, 0x3c, 0xd3, 0xa9, 0x44,
611 				 0x1a, 0x6a, 0x02, 0x76, 0xe3, 0x78, 0x4d,
612 				 0x2e, 0x07, 0x9b, 0xb6, 0x3d, 0x5d, 0xc5,
613 				 0xcd, 0x68, 0x23, 0x4b, 0x5f, 0x89, 0x0e,
614 				 0xd7, 0xa7, 0xff, 0x18, 0x80, 0xdc, 0xfb,
615 				 0x34, 0x45, 0xca, 0x4b, 0xdb, 0x8a, 0x19,
616 				 0xcb, 0xc9, 0xe5, 0xa1, 0x63, 0xa2, 0x0d,
617 				 0x56, 0xc4, 0xf9, 0x51, 0x1b, 0x88, 0x4e,
618 				 0x36, 0xab, 0x15, 0x4d, 0x8f, 0xdc, 0x08,
619 				 0xc4, 0x4d, 0x43, 0xc7, 0x2b, 0xc9, 0x5c,
620 				 0x05, 0x26, 0xe3, 0x46, 0xf0, 0x64, 0xaa,
621 				 0x02, 0xa4, 0xbe, 0x3a, 0xd1, 0xca, 0x07,
622 				 0x6a, 0x6e, 0x62, 0xf4, 0x57, 0x71, 0x96,
623 				 0xec, 0xf0, 0x0b, 0xac, 0xa4, 0x4a, 0xa3,
624 				 0x6d, 0x01, 0xba, 0xbd, 0x62, 0xc0, 0x10,
625 				 0x54, 0x33, 0x8a, 0x71, 0xef, 0xaa, 0x1c,
626 				 0x25, 0x25 ),
627 			BIGINT ( 0x46, 0x1e, 0x38, 0x3a, 0x05, 0xc5, 0xaf,
628 				 0xb5, 0x2e, 0x58, 0x8a, 0x0e, 0xec, 0x43,
629 				 0xd6, 0x6b, 0xf1, 0x97, 0x73, 0x4c, 0x1b,
630 				 0xcd, 0x31, 0xb8, 0x94, 0x0b, 0xe4, 0x9d,
631 				 0x75, 0x17, 0xa5, 0xc4, 0xc4, 0x2a, 0xf0,
632 				 0x32, 0x45, 0x09, 0xe8, 0xf6, 0x62, 0x03,
633 				 0x2d, 0xee, 0x6e, 0xd3, 0xfc, 0x41, 0x6b,
634 				 0x10, 0x70, 0x9b, 0x87, 0xa7, 0x8d, 0x9f,
635 				 0x61, 0xbe, 0xcf, 0x09, 0x82, 0xfe, 0xd3,
636 				 0x16, 0x5c, 0x12, 0x63, 0xa3, 0xb6, 0xd6,
637 				 0xef, 0xdf, 0xc1, 0xc2, 0x13, 0x09, 0x98,
638 				 0x77, 0xe4, 0x97, 0x61, 0x1f, 0x7d, 0xe7,
639 				 0x32, 0xbf, 0x4c, 0xd4, 0x0a, 0x54, 0xea,
640 				 0x68, 0xe4, 0x1e, 0xb3, 0x06, 0x49, 0xa3,
641 				 0x61, 0x6f, 0xd7, 0x4a, 0x21, 0xd4, 0xbc,
642 				 0x68, 0x76, 0xf5, 0x20, 0xa1, 0xa8, 0x1a,
643 				 0x9f, 0x60, 0x58, 0xff, 0xb6, 0x76, 0x45,
644 				 0xe6, 0xed, 0x61, 0x8d, 0xe6, 0xc0, 0x72,
645 				 0x1c, 0x07 ) );
646 	bigint_subtract_ok ( BIGINT ( 0x83 ),
647 			     BIGINT ( 0x50 ),
648 			     BIGINT ( 0xcd ) );
649 	bigint_subtract_ok ( BIGINT ( 0x2c, 0x7c ),
650 			     BIGINT ( 0x49, 0x0e ),
651 			     BIGINT ( 0x1c, 0x92 ) );
652 	bigint_subtract_ok ( BIGINT ( 0x9c, 0x30, 0xbf ),
653 			     BIGINT ( 0xde, 0x4e, 0x07 ),
654 			     BIGINT ( 0x42, 0x1d, 0x48 ) );
655 	bigint_subtract_ok ( BIGINT ( 0xbb, 0x77, 0x32, 0x5a ),
656 			     BIGINT ( 0x5a, 0xd5, 0xfe, 0x28 ),
657 			     BIGINT ( 0x9f, 0x5e, 0xcb, 0xce ) );
658 	bigint_subtract_ok ( BIGINT ( 0x7b, 0xaa, 0x16, 0xcf, 0x15, 0x87,
659 				      0xe0, 0x4f, 0x2c, 0xa3, 0xec, 0x2f,
660 				      0x46, 0xfb, 0x83, 0xc6, 0xe0, 0xee,
661 				      0x57, 0xfa, 0x04, 0xce, 0xa6 ),
662 			     BIGINT ( 0x46, 0x55, 0xb6, 0x23, 0x63, 0xd0,
663 				      0x55, 0xdb, 0x8f, 0xcc, 0x55, 0xa8,
664 				      0x2f, 0x85, 0xc1, 0x9f, 0x2c, 0x13,
665 				      0x10, 0x9e, 0x76, 0x3c, 0x11 ),
666 			     BIGINT ( 0xca, 0xab, 0x9f, 0x54, 0x4e, 0x48,
667 				      0x75, 0x8c, 0x63, 0x28, 0x69, 0x78,
668 				      0xe8, 0x8a, 0x3d, 0xd8, 0x4b, 0x24,
669 				      0xb8, 0xa4, 0x71, 0x6d, 0x6b ) );
670 	bigint_subtract_ok ( BIGINT ( 0x5b, 0x06, 0x77, 0x7b, 0xfd, 0x34,
671 				      0x5f, 0x0f, 0xd9, 0xbd, 0x8e, 0x5d,
672 				      0xc8, 0x4a, 0x70, 0x95, 0x1b, 0xb6,
673 				      0x48, 0xfb, 0x0e, 0x40, 0xce, 0x06,
674 				      0x66, 0xcc, 0x29, 0xe9, 0x51, 0x59,
675 				      0x59, 0xc9, 0x65, 0x07, 0x75, 0xb8,
676 				      0xd4, 0xcb, 0x07, 0x68, 0x14, 0x48,
677 				      0xc7, 0x1e, 0xfe, 0xb3, 0x4c, 0xf1,
678 				      0x10, 0xf0, 0xc7, 0x82, 0x38, 0x4c,
679 				      0xaf, 0x05, 0x6d, 0x91, 0xc5, 0x18,
680 				      0xfd, 0x1e, 0x26, 0x1b, 0xef, 0x71,
681 				      0x70, 0x2e, 0x06, 0x70, 0x8e, 0x54,
682 				      0xfa, 0x2b, 0x4d, 0x96, 0x85, 0x10,
683 				      0x03, 0x76, 0xe7, 0x17, 0x59, 0x86,
684 				      0x6c, 0x8b, 0x24, 0x6e, 0xd9, 0x30,
685 				      0xf3, 0xd2, 0x9b, 0x62, 0xdc, 0x23,
686 				      0x54, 0x06, 0x51, 0xb1, 0x95, 0x58,
687 				      0xec, 0x27, 0xf6, 0x19, 0xae, 0xf4,
688 				      0x31, 0xec, 0x72, 0x53, 0xcd, 0x32,
689 				      0xed, 0xf4, 0x25, 0x4a, 0x5b, 0x36,
690 				      0xa2, 0xb4, 0xa0, 0x29, 0x0c, 0x6b,
691 				      0x3f, 0xc2 ),
692 			     BIGINT ( 0x7a, 0xd4, 0x25, 0xf1, 0xb5, 0xf5,
693 				      0x00, 0x96, 0x47, 0x5b, 0x4f, 0x9f,
694 				      0x1f, 0x61, 0x69, 0xd9, 0x72, 0x47,
695 				      0xde, 0xbd, 0x87, 0x5d, 0x50, 0x91,
696 				      0x69, 0xd8, 0x35, 0xe0, 0x43, 0xd8,
697 				      0xd5, 0x15, 0xf2, 0xcd, 0x01, 0x73,
698 				      0x0d, 0x34, 0xf0, 0x34, 0x46, 0x76,
699 				      0xc0, 0x55, 0x7b, 0x27, 0xf5, 0x7b,
700 				      0x55, 0xe9, 0xd0, 0x29, 0x0b, 0x4b,
701 				      0x9f, 0x07, 0xbf, 0x2c, 0x3f, 0xef,
702 				      0x36, 0x34, 0xde, 0x29, 0x1d, 0x5d,
703 				      0x84, 0x5a, 0x5d, 0xc1, 0x02, 0x4d,
704 				      0x56, 0xf1, 0x47, 0x39, 0x37, 0xc9,
705 				      0xb5, 0x5f, 0x73, 0xec, 0x7c, 0x3d,
706 				      0xbd, 0xc0, 0xfd, 0x38, 0x6c, 0x91,
707 				      0x88, 0x4a, 0x0f, 0xee, 0xa1, 0x80,
708 				      0xf5, 0x6a, 0x7c, 0x8c, 0x02, 0xc3,
709 				      0x5a, 0xb2, 0x15, 0xa6, 0x2f, 0x6b,
710 				      0x5b, 0x78, 0xb5, 0xf3, 0xbd, 0xd0,
711 				      0xc8, 0xbc, 0xb1, 0xbb, 0xe1, 0xce,
712 				      0x22, 0x80, 0x34, 0x5a, 0x2a, 0x27,
713 				      0x83, 0xdc ),
714 			     BIGINT ( 0x1f, 0xcd, 0xae, 0x75, 0xb8, 0xc0,
715 				      0xa1, 0x86, 0x6d, 0x9d, 0xc1, 0x41,
716 				      0x57, 0x16, 0xf9, 0x44, 0x56, 0x91,
717 				      0x95, 0xc2, 0x79, 0x1c, 0x82, 0x8b,
718 				      0x03, 0x0c, 0x0b, 0xf6, 0xf2, 0x7f,
719 				      0x7b, 0x4c, 0x8d, 0xc5, 0x8b, 0xba,
720 				      0x38, 0x69, 0xe8, 0xcc, 0x32, 0x2d,
721 				      0xf9, 0x36, 0x7c, 0x74, 0xa8, 0x8a,
722 				      0x44, 0xf9, 0x08, 0xa6, 0xd2, 0xfe,
723 				      0xf0, 0x02, 0x51, 0x9a, 0x7a, 0xd6,
724 				      0x39, 0x16, 0xb8, 0x0d, 0x2d, 0xec,
725 				      0x14, 0x2c, 0x57, 0x50, 0x73, 0xf8,
726 				      0x5c, 0xc5, 0xf9, 0xa2, 0xb2, 0xb9,
727 				      0xb1, 0xe8, 0x8c, 0xd5, 0x22, 0xb7,
728 				      0x51, 0x35, 0xd8, 0xc9, 0x93, 0x60,
729 				      0x94, 0x77, 0x74, 0x8b, 0xc5, 0x5d,
730 				      0xa1, 0x64, 0x2a, 0xda, 0x6d, 0x6a,
731 				      0x6e, 0x8a, 0x1f, 0x8c, 0x80, 0x77,
732 				      0x29, 0x8c, 0x43, 0x9f, 0xf0, 0x9d,
733 				      0xda, 0xc8, 0x8c, 0x71, 0x86, 0x97,
734 				      0x7f, 0xcb, 0x94, 0x31, 0x1d, 0xbc,
735 				      0x44, 0x1a ) );
736 	bigint_rol_ok ( BIGINT ( 0xe0 ),
737 			BIGINT ( 0xc0 ) );
738 	bigint_rol_ok ( BIGINT ( 0x43, 0x1d ),
739 			BIGINT ( 0x86, 0x3a ) );
740 	bigint_rol_ok ( BIGINT ( 0xac, 0xed, 0x9b ),
741 			BIGINT ( 0x59, 0xdb, 0x36 ) );
742 	bigint_rol_ok ( BIGINT ( 0x2c, 0xe8, 0x3a, 0x22 ),
743 			BIGINT ( 0x59, 0xd0, 0x74, 0x44 ) );
744 	bigint_rol_ok ( BIGINT ( 0x4e, 0x88, 0x4a, 0x05, 0x5e, 0x10, 0xee,
745 				 0x5b, 0xc6, 0x40, 0x0e, 0x03, 0xd7, 0x0d,
746 				 0x28, 0xa5, 0x55, 0xb2, 0x50, 0xef, 0x69,
747 				 0xd1, 0x1d ),
748 			BIGINT ( 0x9d, 0x10, 0x94, 0x0a, 0xbc, 0x21, 0xdc,
749 				 0xb7, 0x8c, 0x80, 0x1c, 0x07, 0xae, 0x1a,
750 				 0x51, 0x4a, 0xab, 0x64, 0xa1, 0xde, 0xd3,
751 				 0xa2, 0x3a ) );
752 	bigint_rol_ok ( BIGINT ( 0x07, 0x62, 0x78, 0x70, 0x2e, 0xd4, 0x41,
753 				 0xaa, 0x9b, 0x50, 0xb1, 0x9a, 0x71, 0xf5,
754 				 0x1c, 0x2f, 0xe7, 0x0d, 0xf1, 0x46, 0x57,
755 				 0x04, 0x99, 0x78, 0x4e, 0x84, 0x78, 0xba,
756 				 0x57, 0xea, 0xa5, 0x43, 0xf7, 0x02, 0xf0,
757 				 0x7a, 0x22, 0x60, 0x65, 0x42, 0xf2, 0x33,
758 				 0x7d, 0xe3, 0xa8, 0x1b, 0xc4, 0x14, 0xdb,
759 				 0xee, 0x4a, 0xf1, 0xe1, 0x52, 0xd4, 0xda,
760 				 0x23, 0xed, 0x13, 0x5d, 0xea, 0xcf, 0xf6,
761 				 0x5e, 0x39, 0x84, 0xe2, 0xb3, 0xa2, 0x05,
762 				 0xba, 0xd9, 0x49, 0x8e, 0x75, 0x1d, 0xdb,
763 				 0xe6, 0xb1, 0x6e, 0xda, 0x0a, 0x83, 0xd0,
764 				 0x6e, 0xcf, 0x7a, 0x66, 0xb7, 0x64, 0x84,
765 				 0xf5, 0x09, 0x5a, 0xa8, 0x11, 0x93, 0xf3,
766 				 0x4f, 0x02, 0x28, 0x00, 0x3a, 0xf0, 0xa9,
767 				 0x08, 0x77, 0x04, 0xf5, 0x04, 0xcd, 0x6b,
768 				 0x24, 0xbe, 0x0f, 0x6d, 0xe3, 0xb2, 0xd3,
769 				 0x07, 0x68, 0xe9, 0x00, 0x59, 0xa0, 0xe4,
770 				 0x9e, 0x5e ),
771 			BIGINT ( 0x0e, 0xc4, 0xf0, 0xe0, 0x5d, 0xa8, 0x83,
772 				 0x55, 0x36, 0xa1, 0x63, 0x34, 0xe3, 0xea,
773 				 0x38, 0x5f, 0xce, 0x1b, 0xe2, 0x8c, 0xae,
774 				 0x09, 0x32, 0xf0, 0x9d, 0x08, 0xf1, 0x74,
775 				 0xaf, 0xd5, 0x4a, 0x87, 0xee, 0x05, 0xe0,
776 				 0xf4, 0x44, 0xc0, 0xca, 0x85, 0xe4, 0x66,
777 				 0xfb, 0xc7, 0x50, 0x37, 0x88, 0x29, 0xb7,
778 				 0xdc, 0x95, 0xe3, 0xc2, 0xa5, 0xa9, 0xb4,
779 				 0x47, 0xda, 0x26, 0xbb, 0xd5, 0x9f, 0xec,
780 				 0xbc, 0x73, 0x09, 0xc5, 0x67, 0x44, 0x0b,
781 				 0x75, 0xb2, 0x93, 0x1c, 0xea, 0x3b, 0xb7,
782 				 0xcd, 0x62, 0xdd, 0xb4, 0x15, 0x07, 0xa0,
783 				 0xdd, 0x9e, 0xf4, 0xcd, 0x6e, 0xc9, 0x09,
784 				 0xea, 0x12, 0xb5, 0x50, 0x23, 0x27, 0xe6,
785 				 0x9e, 0x04, 0x50, 0x00, 0x75, 0xe1, 0x52,
786 				 0x10, 0xee, 0x09, 0xea, 0x09, 0x9a, 0xd6,
787 				 0x49, 0x7c, 0x1e, 0xdb, 0xc7, 0x65, 0xa6,
788 				 0x0e, 0xd1, 0xd2, 0x00, 0xb3, 0x41, 0xc9,
789 				 0x3c, 0xbc ) );
790 	bigint_ror_ok ( BIGINT ( 0x8f ),
791 			BIGINT ( 0x47 ) );
792 	bigint_ror_ok ( BIGINT ( 0xaa, 0x1d ),
793 			BIGINT ( 0x55, 0x0e ) );
794 	bigint_ror_ok ( BIGINT ( 0xf0, 0xbd, 0x68 ),
795 			BIGINT ( 0x78, 0x5e, 0xb4 ) );
796 	bigint_ror_ok ( BIGINT ( 0x33, 0xa0, 0x3d, 0x95 ),
797 			BIGINT ( 0x19, 0xd0, 0x1e, 0xca ) );
798 	bigint_ror_ok ( BIGINT ( 0xa1, 0xf4, 0xb9, 0x64, 0x91, 0x99, 0xa1,
799 				 0xf4, 0xae, 0xeb, 0x71, 0x97, 0x1b, 0x71,
800 				 0x09, 0x38, 0x3f, 0x8f, 0xc5, 0x3a, 0xb9,
801 				 0x75, 0x94 ),
802 			BIGINT ( 0x50, 0xfa, 0x5c, 0xb2, 0x48, 0xcc, 0xd0,
803 				 0xfa, 0x57, 0x75, 0xb8, 0xcb, 0x8d, 0xb8,
804 				 0x84, 0x9c, 0x1f, 0xc7, 0xe2, 0x9d, 0x5c,
805 				 0xba, 0xca ) );
806 	bigint_ror_ok ( BIGINT ( 0xc0, 0xb3, 0x78, 0x46, 0x69, 0x6e, 0x35,
807 				 0x94, 0xed, 0x28, 0xdc, 0xfd, 0xf6, 0xdb,
808 				 0x2d, 0x24, 0xcb, 0xa4, 0x6f, 0x0e, 0x58,
809 				 0x89, 0x04, 0xec, 0xc8, 0x0c, 0x2d, 0xb3,
810 				 0x58, 0xa7, 0x22, 0x6d, 0x93, 0xe0, 0xb8,
811 				 0x48, 0x6a, 0x3f, 0x04, 0x7e, 0xbe, 0xb8,
812 				 0xa7, 0x84, 0xf5, 0xc9, 0x2f, 0x60, 0x9e,
813 				 0x7c, 0xbc, 0xaf, 0x28, 0x89, 0x2f, 0xaa,
814 				 0xd1, 0x82, 0x77, 0xa4, 0xdf, 0xf3, 0x4a,
815 				 0xc6, 0xed, 0xa3, 0x07, 0xb4, 0xa9, 0xfd,
816 				 0xef, 0xf8, 0x20, 0xb9, 0xb3, 0xff, 0x35,
817 				 0x27, 0xed, 0x02, 0xea, 0xec, 0x63, 0xc0,
818 				 0x46, 0x97, 0xc0, 0x4c, 0xca, 0x89, 0xca,
819 				 0x14, 0xe8, 0xe0, 0x02, 0x14, 0x44, 0x46,
820 				 0xf3, 0x2f, 0xbc, 0x6a, 0x28, 0xa2, 0xbe,
821 				 0x20, 0xc8, 0xaa, 0x0f, 0xd9, 0x51, 0x8e,
822 				 0x8d, 0x51, 0x29, 0x61, 0xef, 0x48, 0xae,
823 				 0x3e, 0xe5, 0x10, 0xbf, 0xda, 0x9b, 0x92,
824 				 0xb3, 0x77 ),
825 			BIGINT ( 0x60, 0x59, 0xbc, 0x23, 0x34, 0xb7, 0x1a,
826 				 0xca, 0x76, 0x94, 0x6e, 0x7e, 0xfb, 0x6d,
827 				 0x96, 0x92, 0x65, 0xd2, 0x37, 0x87, 0x2c,
828 				 0x44, 0x82, 0x76, 0x64, 0x06, 0x16, 0xd9,
829 				 0xac, 0x53, 0x91, 0x36, 0xc9, 0xf0, 0x5c,
830 				 0x24, 0x35, 0x1f, 0x82, 0x3f, 0x5f, 0x5c,
831 				 0x53, 0xc2, 0x7a, 0xe4, 0x97, 0xb0, 0x4f,
832 				 0x3e, 0x5e, 0x57, 0x94, 0x44, 0x97, 0xd5,
833 				 0x68, 0xc1, 0x3b, 0xd2, 0x6f, 0xf9, 0xa5,
834 				 0x63, 0x76, 0xd1, 0x83, 0xda, 0x54, 0xfe,
835 				 0xf7, 0xfc, 0x10, 0x5c, 0xd9, 0xff, 0x9a,
836 				 0x93, 0xf6, 0x81, 0x75, 0x76, 0x31, 0xe0,
837 				 0x23, 0x4b, 0xe0, 0x26, 0x65, 0x44, 0xe5,
838 				 0x0a, 0x74, 0x70, 0x01, 0x0a, 0x22, 0x23,
839 				 0x79, 0x97, 0xde, 0x35, 0x14, 0x51, 0x5f,
840 				 0x10, 0x64, 0x55, 0x07, 0xec, 0xa8, 0xc7,
841 				 0x46, 0xa8, 0x94, 0xb0, 0xf7, 0xa4, 0x57,
842 				 0x1f, 0x72, 0x88, 0x5f, 0xed, 0x4d, 0xc9,
843 				 0x59, 0xbb ) );
844 	bigint_is_zero_ok ( BIGINT ( 0x9b ),
845 			    0 );
846 	bigint_is_zero_ok ( BIGINT ( 0x5a, 0x9d ),
847 			    0 );
848 	bigint_is_zero_ok ( BIGINT ( 0x5f, 0x80, 0x78 ),
849 			    0 );
850 	bigint_is_zero_ok ( BIGINT ( 0xa0, 0x52, 0x47, 0x2e ),
851 			    0 );
852 	bigint_is_zero_ok ( BIGINT ( 0x18, 0x08, 0x49, 0xdb, 0x7b, 0x5c,
853 				     0xe7, 0x41, 0x07, 0xdf, 0xed, 0xf9,
854 				     0xd3, 0x92, 0x0d, 0x75, 0xa6, 0xb0,
855 				     0x14, 0xfa, 0xdd, 0xfd, 0x82 ),
856 			    0 );
857 	bigint_is_zero_ok ( BIGINT ( 0x04, 0x04, 0xb5, 0xf5, 0x01, 0xae,
858 				     0x2b, 0x91, 0xa7, 0xc1, 0x49, 0x97,
859 				     0x3f, 0x45, 0x53, 0x52, 0xb8, 0x52,
860 				     0xf1, 0x62, 0xa5, 0x21, 0x18, 0xd4,
861 				     0xb0, 0xb4, 0x8a, 0x17, 0x0e, 0xe8,
862 				     0xeb, 0xaa, 0x28, 0xae, 0x3d, 0x8e,
863 				     0xe3, 0x6c, 0xd0, 0x01, 0x0c, 0x54,
864 				     0xca, 0x23, 0xbb, 0x06, 0xcd, 0x7a,
865 				     0x61, 0x89, 0x38, 0x34, 0x6e, 0xc7,
866 				     0xc2, 0xee, 0xb1, 0x80, 0x61, 0x0e,
867 				     0xc6, 0x8d, 0x65, 0xa0, 0xeb, 0x34,
868 				     0xe9, 0x63, 0x09, 0x4c, 0x20, 0xac,
869 				     0x42, 0xe3, 0x35, 0xa2, 0x3e, 0x3b,
870 				     0x2e, 0x18, 0x70, 0x45, 0x7c, 0xab,
871 				     0x42, 0xcc, 0xe0, 0x9e, 0x7c, 0x42,
872 				     0xd1, 0xda, 0x6c, 0x51, 0x10, 0x1e,
873 				     0x0e, 0x3f, 0xe5, 0xd6, 0xd8, 0x56,
874 				     0x08, 0xb2, 0x3b, 0x15, 0xc4, 0x7c,
875 				     0x0c, 0x7e, 0xaf, 0x7b, 0x9d, 0xd6,
876 				     0x2b, 0xc0, 0x2f, 0xa2, 0xa3, 0xa3,
877 				     0x77, 0x58, 0x1b, 0xe9, 0xa8, 0x9a,
878 				     0x23, 0x7f ),
879 			    0 );
880 	bigint_is_zero_ok ( BIGINT ( 0x00 ),
881 			    1 );
882 	bigint_is_zero_ok ( BIGINT ( 0x00, 0x00 ),
883 			    1 );
884 	bigint_is_zero_ok ( BIGINT ( 0x00, 0x00, 0x00 ),
885 			    1 );
886 	bigint_is_zero_ok ( BIGINT ( 0x00, 0x00, 0x00, 0x00 ),
887 			    1 );
888 	bigint_is_zero_ok ( BIGINT ( 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
889 				     0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
890 				     0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
891 				     0x00, 0x00, 0x00, 0x00, 0x00 ),
892 			    1 );
893 	bigint_is_zero_ok ( BIGINT ( 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
894 				     0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
895 				     0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
896 				     0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
897 				     0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
898 				     0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
899 				     0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
900 				     0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
901 				     0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
902 				     0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
903 				     0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
904 				     0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
905 				     0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
906 				     0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
907 				     0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
908 				     0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
909 				     0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
910 				     0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
911 				     0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
912 				     0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
913 				     0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
914 				     0x00, 0x00 ),
915 			    1 );
916 	bigint_is_zero_ok ( BIGINT ( 0xff ),
917 			    0 );
918 	bigint_is_zero_ok ( BIGINT ( 0xff, 0xff ),
919 			    0 );
920 	bigint_is_zero_ok ( BIGINT ( 0xff, 0xff, 0xff ),
921 			    0 );
922 	bigint_is_zero_ok ( BIGINT ( 0xff, 0xff, 0xff, 0xff ),
923 			    0 );
924 	bigint_is_zero_ok ( BIGINT ( 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
925 				     0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
926 				     0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
927 				     0xff, 0xff, 0xff, 0xff, 0xff ),
928 			    0 );
929 	bigint_is_zero_ok ( BIGINT ( 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
930 				     0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
931 				     0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
932 				     0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
933 				     0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
934 				     0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
935 				     0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
936 				     0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
937 				     0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
938 				     0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
939 				     0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
940 				     0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
941 				     0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
942 				     0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
943 				     0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
944 				     0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
945 				     0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
946 				     0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
947 				     0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
948 				     0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
949 				     0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
950 				     0xff, 0xff ),
951 			    0 );
952 	bigint_is_geq_ok ( BIGINT ( 0xa2 ),
953 			   BIGINT ( 0x58 ),
954 			   1 );
955 	bigint_is_geq_ok ( BIGINT ( 0x58 ),
956 			   BIGINT ( 0xa2 ),
957 			   0 );
958 	bigint_is_geq_ok ( BIGINT ( 0xa2 ),
959 			   BIGINT ( 0xa2 ),
960 			   1 );
961 	bigint_is_geq_ok ( BIGINT ( 0x61, 0x29 ),
962 			   BIGINT ( 0x87, 0xac ),
963 			   0 );
964 	bigint_is_geq_ok ( BIGINT ( 0x87, 0xac ),
965 			   BIGINT ( 0x61, 0x29 ),
966 			   1 );
967 	bigint_is_geq_ok ( BIGINT ( 0x61, 0x29 ),
968 			   BIGINT ( 0x61, 0x29 ),
969 			   1 );
970 	bigint_is_geq_ok ( BIGINT ( 0xe6, 0x63, 0x14 ),
971 			   BIGINT ( 0xb7, 0x2b, 0x76 ),
972 			   1 );
973 	bigint_is_geq_ok ( BIGINT ( 0xb7, 0x2b, 0x76 ),
974 			   BIGINT ( 0xe6, 0x63, 0x14 ),
975 			   0 );
976 	bigint_is_geq_ok ( BIGINT ( 0xe6, 0x63, 0x14 ),
977 			   BIGINT ( 0xe6, 0x63, 0x14 ),
978 			   1 );
979 	bigint_is_geq_ok ( BIGINT ( 0xe7, 0x4f, 0xd4, 0x80 ),
980 			   BIGINT ( 0xb5, 0xf9, 0x9b, 0x90 ),
981 			   1 );
982 	bigint_is_geq_ok ( BIGINT ( 0xb5, 0xf9, 0x9b, 0x90 ),
983 			   BIGINT ( 0xe7, 0x4f, 0xd4, 0x80 ),
984 			   0 );
985 	bigint_is_geq_ok ( BIGINT ( 0xe7, 0x4f, 0xd4, 0x80 ),
986 			   BIGINT ( 0xe7, 0x4f, 0xd4, 0x80 ),
987 			   1 );
988 	bigint_is_geq_ok ( BIGINT ( 0xe6, 0x2c, 0x7c, 0x24, 0x78, 0x8f, 0x12,
989 				    0x20, 0xde, 0xd3, 0x6b, 0xc9, 0x97, 0x2d,
990 				    0x66, 0x74, 0xe5, 0xb6, 0xf7, 0x8f, 0x2b,
991 				    0x60, 0x98 ),
992 			   BIGINT ( 0x77, 0xbc, 0x3b, 0x1b, 0x57, 0x43, 0x3b,
993 				    0x8c, 0x82, 0xda, 0xb5, 0xc7, 0x18, 0x09,
994 				    0xb3, 0x59, 0x0e, 0x53, 0x2a, 0xb9, 0xd8,
995 				    0xa2, 0xb4 ),
996 			   1 );
997 	bigint_is_geq_ok ( BIGINT ( 0x77, 0xbc, 0x3b, 0x1b, 0x57, 0x43, 0x3b,
998 				    0x8c, 0x82, 0xda, 0xb5, 0xc7, 0x18, 0x09,
999 				    0xb3, 0x59, 0x0e, 0x53, 0x2a, 0xb9, 0xd8,
1000 				    0xa2, 0xb4 ),
1001 			   BIGINT ( 0xe6, 0x2c, 0x7c, 0x24, 0x78, 0x8f, 0x12,
1002 				    0x20, 0xde, 0xd3, 0x6b, 0xc9, 0x97, 0x2d,
1003 				    0x66, 0x74, 0xe5, 0xb6, 0xf7, 0x8f, 0x2b,
1004 				    0x60, 0x98 ),
1005 			   0 );
1006 	bigint_is_geq_ok ( BIGINT ( 0xe6, 0x2c, 0x7c, 0x24, 0x78, 0x8f, 0x12,
1007 				    0x20, 0xde, 0xd3, 0x6b, 0xc9, 0x97, 0x2d,
1008 				    0x66, 0x74, 0xe5, 0xb6, 0xf7, 0x8f, 0x2b,
1009 				    0x60, 0x98 ),
1010 			   BIGINT ( 0xe6, 0x2c, 0x7c, 0x24, 0x78, 0x8f, 0x12,
1011 				    0x20, 0xde, 0xd3, 0x6b, 0xc9, 0x97, 0x2d,
1012 				    0x66, 0x74, 0xe5, 0xb6, 0xf7, 0x8f, 0x2b,
1013 				    0x60, 0x98 ),
1014 			   1 );
1015 	bigint_is_geq_ok ( BIGINT ( 0x2a, 0x98, 0xfd, 0x87, 0x5d, 0x9f, 0xb4,
1016 				    0x8b, 0x5c, 0xcd, 0x5f, 0xcd, 0x53, 0xb3,
1017 				    0xd1, 0x81, 0x6a, 0x9c, 0x93, 0x66, 0x40,
1018 				    0xa7, 0x64, 0xe0, 0x8c, 0xec, 0x96, 0x63,
1019 				    0x4d, 0x29, 0xfa, 0xb1, 0x5d, 0x93, 0x2f,
1020 				    0xf9, 0x36, 0xea, 0x3b, 0xc1, 0xaf, 0x85,
1021 				    0xcb, 0xde, 0x2d, 0xc8, 0x48, 0x33, 0xce,
1022 				    0x7b, 0xa4, 0xa4, 0xda, 0x0f, 0xaa, 0x1b,
1023 				    0xcb, 0xed, 0xbe, 0x3a, 0xa5, 0xbb, 0x73,
1024 				    0x28, 0x04, 0xc6, 0x2a, 0xfb, 0x3a, 0xc3,
1025 				    0xae, 0x42, 0x1f, 0x53, 0x6c, 0xb2, 0x76,
1026 				    0xb7, 0xe2, 0x88, 0xcb, 0x88, 0xcf, 0xf0,
1027 				    0x52, 0x81, 0xd3, 0xb2, 0x1f, 0x56, 0xe1,
1028 				    0xe1, 0x47, 0x93, 0x6f, 0x2b, 0x49, 0xaa,
1029 				    0x50, 0x99, 0x7a, 0xc4, 0x56, 0xb7, 0x13,
1030 				    0x80, 0xf4, 0x73, 0x88, 0xc7, 0x39, 0x83,
1031 				    0x67, 0xc7, 0xcc, 0xb2, 0x28, 0x7a, 0xd3,
1032 				    0xdc, 0x48, 0xea, 0x62, 0x0d, 0xf5, 0x5a,
1033 				    0x27, 0x96 ),
1034 			   BIGINT ( 0xd4, 0x6b, 0x0a, 0x2e, 0x9f, 0xde, 0x4b,
1035 				    0x64, 0xfa, 0x6b, 0x37, 0x73, 0x66, 0x06,
1036 				    0xee, 0x04, 0xef, 0xe6, 0x3c, 0x7d, 0x57,
1037 				    0x22, 0x7f, 0x1f, 0x62, 0x1c, 0x7e, 0x20,
1038 				    0xda, 0x97, 0xd0, 0x27, 0x23, 0xf6, 0x77,
1039 				    0x5b, 0x49, 0x97, 0xe1, 0x65, 0x91, 0x13,
1040 				    0x93, 0xd6, 0x12, 0xc3, 0x66, 0x91, 0x76,
1041 				    0xe8, 0x47, 0x4c, 0x6a, 0x1b, 0xa2, 0x02,
1042 				    0xf8, 0x94, 0xaa, 0xe0, 0x1b, 0x0b, 0x17,
1043 				    0x86, 0x5e, 0xf5, 0x17, 0x23, 0xf5, 0x17,
1044 				    0x91, 0x6b, 0xd7, 0x2f, 0x5a, 0xfe, 0x8a,
1045 				    0x63, 0x28, 0x31, 0x1e, 0x09, 0x60, 0x29,
1046 				    0x5d, 0x55, 0xd8, 0x79, 0xeb, 0x78, 0x36,
1047 				    0x44, 0x69, 0xa4, 0x76, 0xa5, 0x35, 0x30,
1048 				    0xca, 0xc9, 0xf9, 0x62, 0xd7, 0x82, 0x13,
1049 				    0x56, 0xd0, 0x58, 0xfe, 0x16, 0x4b, 0xfb,
1050 				    0xa8, 0x4c, 0xb3, 0xd7, 0xcf, 0x5f, 0x93,
1051 				    0x9d, 0xc4, 0x11, 0xb4, 0xdd, 0xf8, 0x8f,
1052 				    0xe1, 0x11 ),
1053 			   0 );
1054 	bigint_is_geq_ok ( BIGINT ( 0xd4, 0x6b, 0x0a, 0x2e, 0x9f, 0xde, 0x4b,
1055 				    0x64, 0xfa, 0x6b, 0x37, 0x73, 0x66, 0x06,
1056 				    0xee, 0x04, 0xef, 0xe6, 0x3c, 0x7d, 0x57,
1057 				    0x22, 0x7f, 0x1f, 0x62, 0x1c, 0x7e, 0x20,
1058 				    0xda, 0x97, 0xd0, 0x27, 0x23, 0xf6, 0x77,
1059 				    0x5b, 0x49, 0x97, 0xe1, 0x65, 0x91, 0x13,
1060 				    0x93, 0xd6, 0x12, 0xc3, 0x66, 0x91, 0x76,
1061 				    0xe8, 0x47, 0x4c, 0x6a, 0x1b, 0xa2, 0x02,
1062 				    0xf8, 0x94, 0xaa, 0xe0, 0x1b, 0x0b, 0x17,
1063 				    0x86, 0x5e, 0xf5, 0x17, 0x23, 0xf5, 0x17,
1064 				    0x91, 0x6b, 0xd7, 0x2f, 0x5a, 0xfe, 0x8a,
1065 				    0x63, 0x28, 0x31, 0x1e, 0x09, 0x60, 0x29,
1066 				    0x5d, 0x55, 0xd8, 0x79, 0xeb, 0x78, 0x36,
1067 				    0x44, 0x69, 0xa4, 0x76, 0xa5, 0x35, 0x30,
1068 				    0xca, 0xc9, 0xf9, 0x62, 0xd7, 0x82, 0x13,
1069 				    0x56, 0xd0, 0x58, 0xfe, 0x16, 0x4b, 0xfb,
1070 				    0xa8, 0x4c, 0xb3, 0xd7, 0xcf, 0x5f, 0x93,
1071 				    0x9d, 0xc4, 0x11, 0xb4, 0xdd, 0xf8, 0x8f,
1072 				    0xe1, 0x11 ),
1073 			   BIGINT ( 0x2a, 0x98, 0xfd, 0x87, 0x5d, 0x9f, 0xb4,
1074 				    0x8b, 0x5c, 0xcd, 0x5f, 0xcd, 0x53, 0xb3,
1075 				    0xd1, 0x81, 0x6a, 0x9c, 0x93, 0x66, 0x40,
1076 				    0xa7, 0x64, 0xe0, 0x8c, 0xec, 0x96, 0x63,
1077 				    0x4d, 0x29, 0xfa, 0xb1, 0x5d, 0x93, 0x2f,
1078 				    0xf9, 0x36, 0xea, 0x3b, 0xc1, 0xaf, 0x85,
1079 				    0xcb, 0xde, 0x2d, 0xc8, 0x48, 0x33, 0xce,
1080 				    0x7b, 0xa4, 0xa4, 0xda, 0x0f, 0xaa, 0x1b,
1081 				    0xcb, 0xed, 0xbe, 0x3a, 0xa5, 0xbb, 0x73,
1082 				    0x28, 0x04, 0xc6, 0x2a, 0xfb, 0x3a, 0xc3,
1083 				    0xae, 0x42, 0x1f, 0x53, 0x6c, 0xb2, 0x76,
1084 				    0xb7, 0xe2, 0x88, 0xcb, 0x88, 0xcf, 0xf0,
1085 				    0x52, 0x81, 0xd3, 0xb2, 0x1f, 0x56, 0xe1,
1086 				    0xe1, 0x47, 0x93, 0x6f, 0x2b, 0x49, 0xaa,
1087 				    0x50, 0x99, 0x7a, 0xc4, 0x56, 0xb7, 0x13,
1088 				    0x80, 0xf4, 0x73, 0x88, 0xc7, 0x39, 0x83,
1089 				    0x67, 0xc7, 0xcc, 0xb2, 0x28, 0x7a, 0xd3,
1090 				    0xdc, 0x48, 0xea, 0x62, 0x0d, 0xf5, 0x5a,
1091 				    0x27, 0x96 ),
1092 			   1 );
1093 	bigint_is_geq_ok ( BIGINT ( 0x2a, 0x98, 0xfd, 0x87, 0x5d, 0x9f, 0xb4,
1094 				    0x8b, 0x5c, 0xcd, 0x5f, 0xcd, 0x53, 0xb3,
1095 				    0xd1, 0x81, 0x6a, 0x9c, 0x93, 0x66, 0x40,
1096 				    0xa7, 0x64, 0xe0, 0x8c, 0xec, 0x96, 0x63,
1097 				    0x4d, 0x29, 0xfa, 0xb1, 0x5d, 0x93, 0x2f,
1098 				    0xf9, 0x36, 0xea, 0x3b, 0xc1, 0xaf, 0x85,
1099 				    0xcb, 0xde, 0x2d, 0xc8, 0x48, 0x33, 0xce,
1100 				    0x7b, 0xa4, 0xa4, 0xda, 0x0f, 0xaa, 0x1b,
1101 				    0xcb, 0xed, 0xbe, 0x3a, 0xa5, 0xbb, 0x73,
1102 				    0x28, 0x04, 0xc6, 0x2a, 0xfb, 0x3a, 0xc3,
1103 				    0xae, 0x42, 0x1f, 0x53, 0x6c, 0xb2, 0x76,
1104 				    0xb7, 0xe2, 0x88, 0xcb, 0x88, 0xcf, 0xf0,
1105 				    0x52, 0x81, 0xd3, 0xb2, 0x1f, 0x56, 0xe1,
1106 				    0xe1, 0x47, 0x93, 0x6f, 0x2b, 0x49, 0xaa,
1107 				    0x50, 0x99, 0x7a, 0xc4, 0x56, 0xb7, 0x13,
1108 				    0x80, 0xf4, 0x73, 0x88, 0xc7, 0x39, 0x83,
1109 				    0x67, 0xc7, 0xcc, 0xb2, 0x28, 0x7a, 0xd3,
1110 				    0xdc, 0x48, 0xea, 0x62, 0x0d, 0xf5, 0x5a,
1111 				    0x27, 0x96 ),
1112 			   BIGINT ( 0x2a, 0x98, 0xfd, 0x87, 0x5d, 0x9f, 0xb4,
1113 				    0x8b, 0x5c, 0xcd, 0x5f, 0xcd, 0x53, 0xb3,
1114 				    0xd1, 0x81, 0x6a, 0x9c, 0x93, 0x66, 0x40,
1115 				    0xa7, 0x64, 0xe0, 0x8c, 0xec, 0x96, 0x63,
1116 				    0x4d, 0x29, 0xfa, 0xb1, 0x5d, 0x93, 0x2f,
1117 				    0xf9, 0x36, 0xea, 0x3b, 0xc1, 0xaf, 0x85,
1118 				    0xcb, 0xde, 0x2d, 0xc8, 0x48, 0x33, 0xce,
1119 				    0x7b, 0xa4, 0xa4, 0xda, 0x0f, 0xaa, 0x1b,
1120 				    0xcb, 0xed, 0xbe, 0x3a, 0xa5, 0xbb, 0x73,
1121 				    0x28, 0x04, 0xc6, 0x2a, 0xfb, 0x3a, 0xc3,
1122 				    0xae, 0x42, 0x1f, 0x53, 0x6c, 0xb2, 0x76,
1123 				    0xb7, 0xe2, 0x88, 0xcb, 0x88, 0xcf, 0xf0,
1124 				    0x52, 0x81, 0xd3, 0xb2, 0x1f, 0x56, 0xe1,
1125 				    0xe1, 0x47, 0x93, 0x6f, 0x2b, 0x49, 0xaa,
1126 				    0x50, 0x99, 0x7a, 0xc4, 0x56, 0xb7, 0x13,
1127 				    0x80, 0xf4, 0x73, 0x88, 0xc7, 0x39, 0x83,
1128 				    0x67, 0xc7, 0xcc, 0xb2, 0x28, 0x7a, 0xd3,
1129 				    0xdc, 0x48, 0xea, 0x62, 0x0d, 0xf5, 0x5a,
1130 				    0x27, 0x96 ),
1131 			   1 );
1132 	bigint_bit_is_set_ok ( BIGINT ( 0x37 ),
1133 			       0, 1 );
1134 	bigint_bit_is_set_ok ( BIGINT ( 0xe6, 0xcb ),
1135 			       0, 1 );
1136 	bigint_bit_is_set_ok ( BIGINT ( 0xd9, 0x0c, 0x5b ),
1137 			       0, 1 );
1138 	bigint_bit_is_set_ok ( BIGINT ( 0x8b, 0x56, 0x89, 0xaf ),
1139 			       0, 1 );
1140 	bigint_bit_is_set_ok ( BIGINT ( 0x25, 0xfc, 0xaf, 0xeb, 0x81, 0xc3,
1141 					0xb8, 0x2f, 0xbb, 0xe3, 0x07, 0xb2,
1142 					0xe2, 0x2a, 0xe2, 0x2d, 0xb4, 0x4d,
1143 					0x6d, 0xec, 0x51, 0xa0, 0x2f ),
1144 			       0, 1 );
1145 	bigint_bit_is_set_ok ( BIGINT ( 0x25, 0xfc, 0xaf, 0xeb, 0x81, 0xc3,
1146 					0xb8, 0x2f, 0xbb, 0xe3, 0x07, 0xb2,
1147 					0xe2, 0x2a, 0xe2, 0x2d, 0xb4, 0x4d,
1148 					0x6d, 0xec, 0x51, 0xa0, 0x2f ),
1149 			       45, 0 );
1150 	bigint_bit_is_set_ok ( BIGINT ( 0x88, 0x04, 0xec, 0xe6, 0xfb, 0x31,
1151 					0x87, 0x43, 0xb2, 0x04, 0x9e, 0x09,
1152 					0xba, 0x3e, 0x6d, 0x64, 0x1a, 0x85,
1153 					0xb6, 0x46, 0x7d, 0x71, 0x3c, 0x06,
1154 					0xd6, 0x40, 0x52, 0x39, 0x95, 0xa1,
1155 					0x06, 0xff, 0x6a, 0x5c, 0xa3, 0x6d,
1156 					0x4a, 0xc9, 0x77, 0x87, 0x75, 0x25,
1157 					0x57, 0x65, 0x72, 0x73, 0x64, 0x7e,
1158 					0xe9, 0x16, 0x17, 0xf3, 0x65, 0x3f,
1159 					0xd5, 0xcc, 0xd7, 0xa2, 0xee, 0xe7,
1160 					0x8d, 0x48, 0xd5, 0x7e, 0xdd, 0x59,
1161 					0x4b, 0xf0, 0x96, 0x8b, 0x21, 0x65,
1162 					0x04, 0x66, 0xc5, 0xff, 0x3e, 0x60,
1163 					0xba, 0x28, 0x38, 0x7d, 0x9c, 0x09,
1164 					0xd1, 0x8e, 0xac, 0x73, 0x8e, 0xf2,
1165 					0x1e, 0xdf, 0x83, 0x6e, 0x54, 0xd5,
1166 					0x34, 0xc1, 0xc6, 0xf9, 0x62, 0x2a,
1167 					0x7d, 0xec, 0x47, 0xf2, 0xfc, 0xa2,
1168 					0x10, 0x0a, 0x67, 0x1b, 0xc6, 0x11,
1169 					0x9d, 0x68, 0x25, 0x8b, 0xb5, 0x9b,
1170 					0x83, 0xf8, 0xa2, 0x11, 0xf5, 0xd4,
1171 					0xcb, 0xe0 ),
1172 			       0, 0 );
1173 	bigint_bit_is_set_ok ( BIGINT ( 0x88, 0x04, 0xec, 0xe6, 0xfb, 0x31,
1174 					0x87, 0x43, 0xb2, 0x04, 0x9e, 0x09,
1175 					0xba, 0x3e, 0x6d, 0x64, 0x1a, 0x85,
1176 					0xb6, 0x46, 0x7d, 0x71, 0x3c, 0x06,
1177 					0xd6, 0x40, 0x52, 0x39, 0x95, 0xa1,
1178 					0x06, 0xff, 0x6a, 0x5c, 0xa3, 0x6d,
1179 					0x4a, 0xc9, 0x77, 0x87, 0x75, 0x25,
1180 					0x57, 0x65, 0x72, 0x73, 0x64, 0x7e,
1181 					0xe9, 0x16, 0x17, 0xf3, 0x65, 0x3f,
1182 					0xd5, 0xcc, 0xd7, 0xa2, 0xee, 0xe7,
1183 					0x8d, 0x48, 0xd5, 0x7e, 0xdd, 0x59,
1184 					0x4b, 0xf0, 0x96, 0x8b, 0x21, 0x65,
1185 					0x04, 0x66, 0xc5, 0xff, 0x3e, 0x60,
1186 					0xba, 0x28, 0x38, 0x7d, 0x9c, 0x09,
1187 					0xd1, 0x8e, 0xac, 0x73, 0x8e, 0xf2,
1188 					0x1e, 0xdf, 0x83, 0x6e, 0x54, 0xd5,
1189 					0x34, 0xc1, 0xc6, 0xf9, 0x62, 0x2a,
1190 					0x7d, 0xec, 0x47, 0xf2, 0xfc, 0xa2,
1191 					0x10, 0x0a, 0x67, 0x1b, 0xc6, 0x11,
1192 					0x9d, 0x68, 0x25, 0x8b, 0xb5, 0x9b,
1193 					0x83, 0xf8, 0xa2, 0x11, 0xf5, 0xd4,
1194 					0xcb, 0xe0 ),
1195 			       45, 1 );
1196 	bigint_bit_is_set_ok ( BIGINT ( 0x88, 0x04, 0xec, 0xe6, 0xfb, 0x31,
1197 					0x87, 0x43, 0xb2, 0x04, 0x9e, 0x09,
1198 					0xba, 0x3e, 0x6d, 0x64, 0x1a, 0x85,
1199 					0xb6, 0x46, 0x7d, 0x71, 0x3c, 0x06,
1200 					0xd6, 0x40, 0x52, 0x39, 0x95, 0xa1,
1201 					0x06, 0xff, 0x6a, 0x5c, 0xa3, 0x6d,
1202 					0x4a, 0xc9, 0x77, 0x87, 0x75, 0x25,
1203 					0x57, 0x65, 0x72, 0x73, 0x64, 0x7e,
1204 					0xe9, 0x16, 0x17, 0xf3, 0x65, 0x3f,
1205 					0xd5, 0xcc, 0xd7, 0xa2, 0xee, 0xe7,
1206 					0x8d, 0x48, 0xd5, 0x7e, 0xdd, 0x59,
1207 					0x4b, 0xf0, 0x96, 0x8b, 0x21, 0x65,
1208 					0x04, 0x66, 0xc5, 0xff, 0x3e, 0x60,
1209 					0xba, 0x28, 0x38, 0x7d, 0x9c, 0x09,
1210 					0xd1, 0x8e, 0xac, 0x73, 0x8e, 0xf2,
1211 					0x1e, 0xdf, 0x83, 0x6e, 0x54, 0xd5,
1212 					0x34, 0xc1, 0xc6, 0xf9, 0x62, 0x2a,
1213 					0x7d, 0xec, 0x47, 0xf2, 0xfc, 0xa2,
1214 					0x10, 0x0a, 0x67, 0x1b, 0xc6, 0x11,
1215 					0x9d, 0x68, 0x25, 0x8b, 0xb5, 0x9b,
1216 					0x83, 0xf8, 0xa2, 0x11, 0xf5, 0xd4,
1217 					0xcb, 0xe0 ),
1218 			       1013, 0 );
1219 	bigint_max_set_bit_ok ( BIGINT ( 0x3a ),
1220 				6 );
1221 	bigint_max_set_bit_ok ( BIGINT ( 0x03 ),
1222 				2 );
1223 	bigint_max_set_bit_ok ( BIGINT ( 0x00 ),
1224 				0 );
1225 	bigint_max_set_bit_ok ( BIGINT ( 0xff ),
1226 				8 );
1227 	bigint_max_set_bit_ok ( BIGINT ( 0x20, 0x30 ),
1228 				14 );
1229 	bigint_max_set_bit_ok ( BIGINT ( 0x00, 0x10 ),
1230 				5 );
1231 	bigint_max_set_bit_ok ( BIGINT ( 0x00, 0x00 ),
1232 				0 );
1233 	bigint_max_set_bit_ok ( BIGINT ( 0xff, 0xff ),
1234 				16 );
1235 	bigint_max_set_bit_ok ( BIGINT ( 0x06, 0xdb, 0x7a ),
1236 				19 );
1237 	bigint_max_set_bit_ok ( BIGINT ( 0x00, 0x00, 0x00 ),
1238 				0 );
1239 	bigint_max_set_bit_ok ( BIGINT ( 0x00, 0x00, 0x00 ),
1240 				0 );
1241 	bigint_max_set_bit_ok ( BIGINT ( 0xff, 0xff, 0xff ),
1242 				24 );
1243 	bigint_max_set_bit_ok ( BIGINT ( 0xee, 0xcb, 0x7b, 0xfd ),
1244 				32 );
1245 	bigint_max_set_bit_ok ( BIGINT ( 0x00, 0x00, 0x01, 0xdd ),
1246 				9 );
1247 	bigint_max_set_bit_ok ( BIGINT ( 0x00, 0x00, 0x00, 0x00 ),
1248 				0 );
1249 	bigint_max_set_bit_ok ( BIGINT ( 0xff, 0xff, 0xff, 0xff ),
1250 				32 );
1251 	bigint_max_set_bit_ok ( BIGINT ( 0x32, 0x39, 0x96, 0x52, 0x10, 0x67,
1252 					 0x7e, 0x32, 0xfc, 0x4e, 0x56, 0xc3,
1253 					 0x68, 0x18, 0x76, 0x1a, 0xac, 0x0e,
1254 					 0x93, 0xee, 0x55, 0xc5, 0x6e ),
1255 				182 );
1256 	bigint_max_set_bit_ok ( BIGINT ( 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1257 					 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1258 					 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1259 					 0x00, 0x00, 0xc8, 0xe6, 0x59 ),
1260 				24 );
1261 	bigint_max_set_bit_ok ( BIGINT ( 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1262 					 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1263 					 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1264 					 0x00, 0x00, 0x00, 0x00, 0x00 ),
1265 				0 );
1266 	bigint_max_set_bit_ok ( BIGINT ( 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1267 					 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1268 					 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1269 					 0xff, 0xff, 0xff, 0xff, 0xff ),
1270 				184 );
1271 	bigint_max_set_bit_ok ( BIGINT ( 0xcd, 0xb3, 0x22, 0x30, 0xdd, 0xa7,
1272 					 0xff, 0x37, 0xbf, 0xe3, 0x38, 0xf7,
1273 					 0xe1, 0x41, 0x73, 0xea, 0x3a, 0xfc,
1274 					 0x78, 0x9e, 0xfb, 0x4f, 0x85, 0xdc,
1275 					 0x1c, 0x40, 0x89, 0x6e, 0xda, 0xf9,
1276 					 0x9d, 0x6d, 0x12, 0x97, 0xb1, 0x80,
1277 					 0x2a, 0xeb, 0x91, 0xce, 0x3b, 0x83,
1278 					 0xb8, 0xa5, 0x3d, 0xce, 0x46, 0x56,
1279 					 0xb7, 0xd1, 0x28, 0xbc, 0x93, 0x4e,
1280 					 0x8c, 0x29, 0x6d, 0x2c, 0xcc, 0x58,
1281 					 0x49, 0x2f, 0x37, 0xa0, 0x08, 0x37,
1282 					 0x86, 0xdd, 0x38, 0x21, 0xa7, 0x57,
1283 					 0x37, 0xe3, 0xc5, 0xcc, 0x50, 0x11,
1284 					 0x1a, 0xe4, 0xea, 0xe7, 0x4d, 0x3c,
1285 					 0x37, 0x65, 0x78, 0xd1, 0xf6, 0xc3,
1286 					 0x94, 0x46, 0xd4, 0x0e, 0xd3, 0x9a,
1287 					 0x21, 0x8b, 0xa6, 0x54, 0xc0, 0xd2,
1288 					 0x88, 0x07, 0x24, 0xbf, 0x7d, 0x31,
1289 					 0xfd, 0x15, 0xa8, 0x92, 0x65, 0xe1,
1290 					 0x8d, 0xed, 0x70, 0x7b, 0x68, 0x0f,
1291 					 0xcc, 0x13, 0xb9, 0xb2, 0xdd, 0x3c,
1292 					 0x6a, 0x52 ),
1293 				1024 );
1294 	bigint_max_set_bit_ok ( BIGINT ( 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1295 					 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1296 					 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1297 					 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1298 					 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1299 					 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1300 					 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1301 					 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1302 					 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1303 					 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1304 					 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1305 					 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1306 					 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1307 					 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1308 					 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1309 					 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1310 					 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1311 					 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1312 					 0x00, 0x00, 0x00, 0x00, 0x66, 0xd9,
1313 					 0x91, 0x18, 0x6e, 0xd3, 0xff, 0x9b,
1314 					 0xdf, 0xf1, 0x9c, 0x7b, 0xf0, 0xa0,
1315 					 0xb9, 0xf5 ),
1316 				127 );
1317 	bigint_max_set_bit_ok ( BIGINT ( 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1318 					 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1319 					 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1320 					 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1321 					 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1322 					 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1323 					 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1324 					 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1325 					 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1326 					 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1327 					 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1328 					 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1329 					 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1330 					 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1331 					 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1332 					 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1333 					 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1334 					 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1335 					 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1336 					 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1337 					 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1338 					 0x00, 0x00 ),
1339 				0 );
1340 	bigint_max_set_bit_ok ( BIGINT ( 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1341 					 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1342 					 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1343 					 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1344 					 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1345 					 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1346 					 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1347 					 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1348 					 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1349 					 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1350 					 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1351 					 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1352 					 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1353 					 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1354 					 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1355 					 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1356 					 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1357 					 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1358 					 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1359 					 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1360 					 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1361 					 0xff, 0xff ),
1362 				1024 );
1363 	bigint_multiply_ok ( BIGINT ( 0xf0 ),
1364 			     BIGINT ( 0xeb ),
1365 			     BIGINT ( 0xdc, 0x50 ) );
1366 	bigint_multiply_ok ( BIGINT ( 0xd7, 0x16 ),
1367 			     BIGINT ( 0x88, 0xfb ),
1368 			     BIGINT ( 0x73, 0x16, 0x92, 0x92 ) );
1369 	bigint_multiply_ok ( BIGINT ( 0xfe, 0xed, 0x1d ),
1370 			     BIGINT ( 0x69, 0x9c, 0x03 ),
1371 			     BIGINT ( 0x69, 0x2a, 0x9c, 0x5f, 0x73, 0x57 ) );
1372 	bigint_multiply_ok ( BIGINT ( 0x96, 0xe9, 0x6f, 0x81 ),
1373 			     BIGINT ( 0x67, 0x3c, 0x5a, 0x16 ),
1374 			     BIGINT ( 0x3c, 0xdb, 0x7f, 0xae, 0x12, 0x7e,
1375 				      0xef, 0x16 ) );
1376 	bigint_multiply_ok ( BIGINT ( 0xe8, 0x08, 0x0b, 0xe9, 0x29, 0x36,
1377 				      0xea, 0x51, 0x1d, 0x75, 0x1a, 0xd5,
1378 				      0xba, 0xc6, 0xa0, 0xf3, 0x48, 0x5c,
1379 				      0xdf, 0x42, 0xdf, 0x28, 0x38 ),
1380 			     BIGINT ( 0x22, 0x07, 0x41, 0x54, 0x4e, 0xf9,
1381 				      0x90, 0xa8, 0xaf, 0xba, 0xf6, 0xb0,
1382 				      0x35, 0x7e, 0x98, 0xef, 0x2c, 0x31,
1383 				      0xc9, 0xa7, 0x25, 0x74, 0x8d ),
1384 			     BIGINT ( 0x1e, 0xd7, 0xa5, 0x03, 0xc0, 0x18,
1385 				      0x2e, 0x29, 0xb1, 0x3e, 0x96, 0x71,
1386 				      0x90, 0xa5, 0x6d, 0x43, 0x58, 0xf7,
1387 				      0x22, 0x80, 0x0b, 0x21, 0xc6, 0x70,
1388 				      0x90, 0x1c, 0xa8, 0x85, 0x87, 0xaf,
1389 				      0xd7, 0xdd, 0x27, 0x69, 0xaf, 0x20,
1390 				      0xa0, 0x2d, 0x43, 0x5d, 0xda, 0xba,
1391 				      0x4b, 0x3a, 0x86, 0xd8 ) );
1392 	bigint_multiply_ok ( BIGINT ( 0xa2, 0x0f, 0xc6, 0x08, 0x0a, 0x01,
1393 				      0x19, 0x42, 0x0e, 0xaa, 0x5c, 0xae,
1394 				      0x4f, 0x4e, 0xb0, 0xad, 0xb2, 0xe8,
1395 				      0xee, 0xd5, 0x65, 0xec, 0x5a, 0xda,
1396 				      0xc0, 0xba, 0x78, 0xa8, 0x0f, 0x15,
1397 				      0x39, 0xd7, 0x7a, 0x10, 0xc2, 0xa7,
1398 				      0xec, 0x44, 0xac, 0xad, 0x39, 0x04,
1399 				      0x2e, 0x66, 0x54, 0x70, 0x57, 0xee,
1400 				      0xf6, 0x97, 0x19, 0x71, 0x16, 0xf9,
1401 				      0xbb, 0x2e, 0x84, 0x09, 0x6e, 0x9a,
1402 				      0x3b, 0x16, 0xb2, 0x65, 0x74, 0x50,
1403 				      0x19, 0xd1, 0xe9, 0x95, 0xa0, 0x7b,
1404 				      0x33, 0xb5, 0xac, 0x7c, 0x9e, 0xd4,
1405 				      0x68, 0x0d, 0xc9, 0xe4, 0x03, 0x86,
1406 				      0x1a, 0xa3, 0x42, 0x33, 0x28, 0x14,
1407 				      0x12, 0x7d, 0x5a, 0xd9, 0x30, 0x18,
1408 				      0x0a, 0xf4, 0x0c, 0x96, 0x58, 0xc9,
1409 				      0xb5, 0x37, 0xdb, 0x49, 0xdc, 0x01,
1410 				      0x4a, 0xcb, 0x6d, 0x87, 0x52, 0xf6,
1411 				      0xae, 0xa7, 0x71, 0x31, 0x9a, 0x1a,
1412 				      0xe2, 0x1c, 0x87, 0x51, 0xc9, 0xeb,
1413 				      0x70, 0x71 ),
1414 			     BIGINT ( 0x7c, 0xdd, 0x2f, 0x5d, 0x27, 0xfe,
1415 				      0xca, 0x70, 0x96, 0xc3, 0xb1, 0x1f,
1416 				      0xac, 0xa9, 0x3a, 0xdc, 0xcd, 0xbc,
1417 				      0x58, 0xb4, 0xde, 0xe7, 0xe5, 0x34,
1418 				      0x1a, 0xc0, 0xb9, 0x46, 0xf7, 0x52,
1419 				      0x76, 0x23, 0xe8, 0xe9, 0x92, 0xa1,
1420 				      0x86, 0x3c, 0x6f, 0xf1, 0x22, 0xf4,
1421 				      0x72, 0xb1, 0xde, 0xd3, 0x8f, 0x11,
1422 				      0x9e, 0x52, 0xe5, 0x81, 0x54, 0xe9,
1423 				      0xa7, 0x72, 0x3f, 0x3e, 0xa0, 0x80,
1424 				      0xbb, 0xae, 0x0e, 0x30, 0x6a, 0x11,
1425 				      0x91, 0x11, 0x3b, 0x3f, 0x44, 0x1f,
1426 				      0x8d, 0x4d, 0xea, 0xdd, 0x09, 0x95,
1427 				      0x9d, 0x02, 0xa6, 0x6d, 0x3b, 0x08,
1428 				      0x40, 0x8d, 0xb4, 0x4b, 0x05, 0x74,
1429 				      0x8c, 0x1f, 0xaa, 0x61, 0x6f, 0x0e,
1430 				      0xcc, 0xcf, 0xe0, 0x81, 0x03, 0xe4,
1431 				      0x9b, 0x11, 0xd9, 0xab, 0xf3, 0x24,
1432 				      0xe2, 0x3b, 0xe0, 0x05, 0x60, 0x65,
1433 				      0x16, 0xc6, 0x2e, 0x83, 0xa0, 0x98,
1434 				      0x8e, 0x11, 0x05, 0x00, 0xe4, 0x3f,
1435 				      0x7e, 0x65 ),
1436 			     BIGINT ( 0x4f, 0x0b, 0xa9, 0x85, 0xb8, 0x31,
1437 				      0x48, 0xea, 0x11, 0x44, 0xaf, 0x2d,
1438 				      0xed, 0x1a, 0x76, 0x45, 0xac, 0x87,
1439 				      0x0c, 0xf3, 0xd7, 0xc4, 0x8e, 0x5c,
1440 				      0xd7, 0xdf, 0x28, 0x74, 0xa6, 0x40,
1441 				      0xe4, 0x6b, 0x5b, 0x19, 0x36, 0x37,
1442 				      0x9c, 0xcd, 0x43, 0x76, 0x15, 0x00,
1443 				      0x5d, 0x23, 0xa2, 0x8a, 0x53, 0x25,
1444 				      0xbf, 0x18, 0xda, 0xe6, 0x09, 0xdf,
1445 				      0xaa, 0xeb, 0x9a, 0x82, 0x01, 0x14,
1446 				      0x2b, 0x20, 0x2b, 0xb6, 0x22, 0x62,
1447 				      0x6b, 0xcc, 0xd4, 0xc9, 0x02, 0x67,
1448 				      0x95, 0x43, 0x75, 0x4e, 0x97, 0x4e,
1449 				      0xec, 0x04, 0xde, 0x29, 0x0a, 0xef,
1450 				      0xf7, 0xc1, 0x72, 0x8c, 0x64, 0x38,
1451 				      0x16, 0x47, 0x9f, 0x16, 0x0c, 0xa5,
1452 				      0x79, 0x6b, 0xea, 0x2e, 0x4c, 0x3d,
1453 				      0x0c, 0xe6, 0x57, 0x51, 0x65, 0xa5,
1454 				      0x3b, 0xca, 0xae, 0x54, 0x0c, 0x67,
1455 				      0xf8, 0x23, 0x00, 0xc9, 0x8d, 0xe6,
1456 				      0x16, 0x91, 0x19, 0xb3, 0x5b, 0x68,
1457 				      0x7b, 0xf2, 0xe2, 0x5d, 0x69, 0x48,
1458 				      0x3f, 0x2b, 0xa0, 0x4f, 0x7c, 0x3c,
1459 				      0x26, 0xf9, 0xd9, 0xfd, 0x3d, 0x5d,
1460 				      0xd6, 0x05, 0x00, 0xd8, 0xdf, 0x5a,
1461 				      0x56, 0x8f, 0x16, 0x68, 0x4f, 0x15,
1462 				      0x19, 0x9d, 0xd7, 0x11, 0x51, 0x7d,
1463 				      0x73, 0x5c, 0xd4, 0xd5, 0xb4, 0xc7,
1464 				      0x42, 0xe3, 0xee, 0xf1, 0x67, 0xd6,
1465 				      0x69, 0x72, 0x04, 0x4b, 0x88, 0x3d,
1466 				      0x05, 0xd8, 0x1e, 0x50, 0xcb, 0xce,
1467 				      0x39, 0x19, 0x42, 0xb6, 0xa7, 0xf3,
1468 				      0xba, 0x78, 0x90, 0xd2, 0x09, 0x05,
1469 				      0x87, 0xf8, 0xc0, 0x9c, 0x47, 0xff,
1470 				      0xbf, 0xaa, 0x21, 0x8d, 0x81, 0x86,
1471 				      0xcd, 0x58, 0xdf, 0x30, 0xf1, 0xd1,
1472 				      0x60, 0x53, 0x85, 0x40, 0xbf, 0x14,
1473 				      0x3e, 0xdc, 0x9e, 0x9e, 0xc4, 0xc7,
1474 				      0x48, 0xa0, 0x83, 0xe0, 0x99, 0x8b,
1475 				      0x43, 0xf8, 0x52, 0x8a, 0x15, 0x88,
1476 				      0x89, 0x83, 0x7d, 0x71, 0xbb, 0x62,
1477 				      0x12, 0x7a, 0x23, 0x85, 0x3a, 0xbb,
1478 				      0xdb, 0x09, 0xfa, 0x95 ) );
1479 	bigint_multiply_ok ( BIGINT ( 0xff ),
1480 			     BIGINT ( 0xff ),
1481 			     BIGINT ( 0xfe, 0x01 ) );
1482 	bigint_multiply_ok ( BIGINT ( 0xff, 0xff ),
1483 			     BIGINT ( 0xff, 0xff ),
1484 			     BIGINT ( 0xff, 0xfe, 0x00, 0x01 ) );
1485 	bigint_multiply_ok ( BIGINT ( 0xff, 0xff, 0xff ),
1486 			     BIGINT ( 0xff, 0xff, 0xff ),
1487 			     BIGINT ( 0xff, 0xff, 0xfe, 0x00, 0x00, 0x01 ) );
1488 	bigint_multiply_ok ( BIGINT ( 0xff, 0xff, 0xff, 0xff ),
1489 			     BIGINT ( 0xff, 0xff, 0xff, 0xff ),
1490 			     BIGINT ( 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00,
1491 				      0x00, 0x01 ) );
1492 	bigint_multiply_ok ( BIGINT ( 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1493 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1494 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1495 				      0xff, 0xff, 0xff, 0xff, 0xff ),
1496 			     BIGINT ( 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1497 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1498 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1499 				      0xff, 0xff, 0xff, 0xff, 0xff ),
1500 			     BIGINT ( 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1501 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1502 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1503 				      0xff, 0xff, 0xff, 0xff, 0xfe, 0x00,
1504 				      0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1505 				      0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1506 				      0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1507 				      0x00, 0x00, 0x00, 0x01 ) );
1508 	bigint_multiply_ok ( BIGINT ( 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1509 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1510 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1511 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1512 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1513 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1514 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1515 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1516 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1517 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1518 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1519 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1520 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1521 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1522 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1523 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1524 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1525 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1526 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1527 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1528 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1529 				      0xff, 0xff ),
1530 			     BIGINT ( 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1531 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1532 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1533 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1534 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1535 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1536 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1537 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1538 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1539 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1540 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1541 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1542 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1543 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1544 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1545 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1546 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1547 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1548 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1549 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1550 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1551 				      0xff, 0xff ),
1552 			     BIGINT ( 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1553 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1554 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1555 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1556 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1557 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1558 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1559 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1560 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1561 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1562 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1563 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1564 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1565 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1566 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1567 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1568 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1569 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1570 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1571 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1572 				      0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1573 				      0xff, 0xfe, 0x00, 0x00, 0x00, 0x00,
1574 				      0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1575 				      0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1576 				      0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1577 				      0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1578 				      0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1579 				      0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1580 				      0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1581 				      0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1582 				      0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1583 				      0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1584 				      0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1585 				      0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1586 				      0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1587 				      0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1588 				      0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1589 				      0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1590 				      0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1591 				      0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1592 				      0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1593 				      0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1594 				      0x00, 0x00, 0x00, 0x01 ) );
1595 	bigint_mod_multiply_ok ( BIGINT ( 0x37 ),
1596 				 BIGINT ( 0x67 ),
1597 				 BIGINT ( 0x3f ),
1598 				 BIGINT ( 0x3a ) );
1599 	bigint_mod_multiply_ok ( BIGINT ( 0x45, 0x94 ),
1600 				 BIGINT ( 0xbd, 0xd2 ),
1601 				 BIGINT ( 0xca, 0xc7 ),
1602 				 BIGINT ( 0xac, 0xc1 ) );
1603 	bigint_mod_multiply_ok ( BIGINT ( 0x8e, 0xcd, 0x74 ),
1604 				 BIGINT ( 0xe2, 0xf1, 0xea ),
1605 				 BIGINT ( 0x59, 0x51, 0x53 ),
1606 				 BIGINT ( 0x22, 0xdd, 0x1c ) );
1607 	bigint_mod_multiply_ok ( BIGINT ( 0xc2, 0xa8, 0x40, 0x6f ),
1608 				 BIGINT ( 0x29, 0xd7, 0xf4, 0x77 ),
1609 				 BIGINT ( 0xbb, 0xbd, 0xdb, 0x3d ),
1610 				 BIGINT ( 0x8f, 0x39, 0xd0, 0x47 ) );
1611 	bigint_mod_multiply_ok ( BIGINT ( 0x2e, 0xcb, 0x74, 0x7c, 0x64, 0x60,
1612 					  0xb3, 0x44, 0xf3, 0x23, 0x49, 0x4a,
1613 					  0xc6, 0xb6, 0xbf, 0xea, 0x80, 0xd8,
1614 					  0x34, 0xc5, 0x54, 0x22, 0x09 ),
1615 				 BIGINT ( 0x61, 0x2c, 0x5a, 0xc5, 0xde, 0x07,
1616 					  0x65, 0x8e, 0xab, 0x88, 0x1a, 0x2e,
1617 					  0x7a, 0x95, 0x17, 0xe3, 0x3b, 0x17,
1618 					  0xe4, 0x21, 0xb0, 0xb4, 0x57 ),
1619 				 BIGINT ( 0x8e, 0x46, 0xa5, 0x87, 0x7b, 0x7f,
1620 					  0xc4, 0xd7, 0x31, 0xb1, 0x94, 0xe7,
1621 					  0xe7, 0x1c, 0x7e, 0x7a, 0xc2, 0x6c,
1622 					  0xce, 0xcb, 0xc8, 0x5d, 0x70 ),
1623 				 BIGINT ( 0x1e, 0xd1, 0x5b, 0x3d, 0x1d, 0x17,
1624 					  0x7c, 0x31, 0x95, 0x13, 0x1b, 0xd8,
1625 					  0xee, 0x0a, 0xb0, 0xe1, 0x5b, 0x13,
1626 					  0xad, 0x83, 0xe9, 0xf8, 0x7f ) );
1627 	bigint_mod_multiply_ok ( BIGINT ( 0x56, 0x37, 0xab, 0x07, 0x8b, 0x25,
1628 					  0xa7, 0xc2, 0x50, 0x30, 0x43, 0xfc,
1629 					  0x63, 0x8b, 0xdf, 0x84, 0x68, 0x85,
1630 					  0xca, 0xce, 0x44, 0x5c, 0xb1, 0x14,
1631 					  0xa4, 0xb5, 0xba, 0x43, 0xe0, 0x31,
1632 					  0x45, 0x6b, 0x82, 0xa9, 0x0b, 0x9e,
1633 					  0x3a, 0xb0, 0x39, 0x09, 0x2a, 0x68,
1634 					  0x2e, 0x0f, 0x09, 0x54, 0x47, 0x04,
1635 					  0xdb, 0xcf, 0x4a, 0x3a, 0x2d, 0x7b,
1636 					  0x7d, 0x50, 0xa4, 0xc5, 0xeb, 0x13,
1637 					  0xdd, 0x49, 0x61, 0x7d, 0x18, 0xa1,
1638 					  0x0d, 0x6b, 0x58, 0xba, 0x9f, 0x7c,
1639 					  0x81, 0x34, 0x9e, 0xf9, 0x9c, 0x9e,
1640 					  0x28, 0xa8, 0x1c, 0x15, 0x16, 0x20,
1641 					  0x3c, 0x0a, 0xb1, 0x11, 0x06, 0x93,
1642 					  0xbc, 0xd8, 0x4e, 0x49, 0xae, 0x7b,
1643 					  0xb4, 0x02, 0x8b, 0x1c, 0x5b, 0x18,
1644 					  0xb4, 0xac, 0x7f, 0xdd, 0x70, 0xef,
1645 					  0x87, 0xac, 0x1b, 0xac, 0x25, 0xa3,
1646 					  0xc9, 0xa7, 0x3a, 0xc5, 0x76, 0x68,
1647 					  0x09, 0x1f, 0xa1, 0x48, 0x53, 0xb6,
1648 					  0x13, 0xac ),
1649 				 BIGINT ( 0xef, 0x5c, 0x1f, 0x1a, 0x44, 0x64,
1650 					  0x66, 0xcf, 0xdd, 0x3f, 0x0b, 0x27,
1651 					  0x81, 0xa7, 0x91, 0x7a, 0x35, 0x7b,
1652 					  0x0f, 0x46, 0x5e, 0xca, 0xbf, 0xf8,
1653 					  0x50, 0x5e, 0x99, 0x7c, 0xc6, 0x64,
1654 					  0x43, 0x00, 0x9f, 0xb2, 0xda, 0xfa,
1655 					  0x42, 0x15, 0x9c, 0xa3, 0xd6, 0xc8,
1656 					  0x64, 0xa7, 0x65, 0x4a, 0x98, 0xf7,
1657 					  0xb3, 0x96, 0x5f, 0x42, 0xf9, 0x73,
1658 					  0xe1, 0x75, 0xc3, 0xc4, 0x0b, 0x5d,
1659 					  0x5f, 0xf3, 0x04, 0x8a, 0xee, 0x59,
1660 					  0xa6, 0x1b, 0x06, 0x38, 0x0b, 0xa2,
1661 					  0x9f, 0xb4, 0x4f, 0x6d, 0x50, 0x5e,
1662 					  0x37, 0x37, 0x21, 0x83, 0x9d, 0xa3,
1663 					  0x12, 0x16, 0x4d, 0xab, 0x36, 0x51,
1664 					  0x21, 0xb1, 0x74, 0x66, 0x40, 0x9a,
1665 					  0xd3, 0x72, 0xcc, 0x18, 0x40, 0x53,
1666 					  0x89, 0xff, 0xd7, 0x00, 0x8d, 0x7e,
1667 					  0x93, 0x81, 0xdb, 0x29, 0xb6, 0xd7,
1668 					  0x23, 0x2b, 0x67, 0x2f, 0x11, 0x98,
1669 					  0x49, 0x87, 0x2f, 0x46, 0xb7, 0x33,
1670 					  0x6d, 0x12 ),
1671 				 BIGINT ( 0x67, 0x7a, 0x17, 0x6a, 0xd2, 0xf8,
1672 					  0x49, 0xfb, 0x7c, 0x95, 0x25, 0x54,
1673 					  0xf0, 0xab, 0x5b, 0xb3, 0x0e, 0x01,
1674 					  0xab, 0xd3, 0x65, 0x6f, 0x7e, 0x18,
1675 					  0x05, 0xed, 0x9b, 0xc4, 0x90, 0x6c,
1676 					  0xd0, 0x6d, 0x94, 0x79, 0x28, 0xd6,
1677 					  0x24, 0x77, 0x9a, 0x08, 0xd2, 0x2f,
1678 					  0x7c, 0x2d, 0xa0, 0x0c, 0x14, 0xbe,
1679 					  0x7b, 0xee, 0x9e, 0x48, 0x88, 0x3c,
1680 					  0x8f, 0x9f, 0xb9, 0x7a, 0xcb, 0x98,
1681 					  0x76, 0x61, 0x0d, 0xee, 0xa2, 0x42,
1682 					  0x67, 0x1b, 0x2c, 0x42, 0x8f, 0x41,
1683 					  0xcc, 0x78, 0xba, 0xba, 0xaa, 0xa2,
1684 					  0x92, 0xb0, 0x6e, 0x0c, 0x4e, 0xe1,
1685 					  0xa5, 0x13, 0x7d, 0x8a, 0x8f, 0x81,
1686 					  0x95, 0x8a, 0xdf, 0x57, 0x93, 0x88,
1687 					  0x27, 0x4f, 0x1a, 0x59, 0xa4, 0x74,
1688 					  0x22, 0xa9, 0x78, 0xe5, 0xed, 0xb1,
1689 					  0x09, 0x26, 0x59, 0xde, 0x88, 0x21,
1690 					  0x8d, 0xa2, 0xa8, 0x58, 0x10, 0x7b,
1691 					  0x65, 0x96, 0xbf, 0x69, 0x3b, 0xc5,
1692 					  0x55, 0xf8 ),
1693 				 BIGINT ( 0x15, 0xf7, 0x00, 0xeb, 0xc7, 0x5a,
1694 					  0x6f, 0xf0, 0x50, 0xf3, 0x21, 0x8a,
1695 					  0x8e, 0xa6, 0xf6, 0x67, 0x56, 0x7d,
1696 					  0x07, 0x45, 0x89, 0xdb, 0xd7, 0x7e,
1697 					  0x9e, 0x28, 0x7f, 0xfb, 0xed, 0xca,
1698 					  0x2c, 0xbf, 0x47, 0x77, 0x99, 0x95,
1699 					  0xf3, 0xd6, 0x9d, 0xc5, 0x57, 0x81,
1700 					  0x7f, 0x97, 0xf2, 0x6b, 0x24, 0xee,
1701 					  0xce, 0xc5, 0x9b, 0xe6, 0x42, 0x2d,
1702 					  0x37, 0xb7, 0xeb, 0x3d, 0xb5, 0xf7,
1703 					  0x1e, 0x86, 0xc2, 0x40, 0x44, 0xc9,
1704 					  0x85, 0x5a, 0x1a, 0xc0, 0xac, 0x9e,
1705 					  0x78, 0x69, 0x00, 0x7b, 0x93, 0x65,
1706 					  0xd7, 0x7f, 0x0c, 0xd6, 0xba, 0x4f,
1707 					  0x06, 0x00, 0x61, 0x05, 0xb2, 0x44,
1708 					  0xb4, 0xe7, 0xbb, 0x3b, 0x96, 0xb0,
1709 					  0x6d, 0xe8, 0x43, 0xd2, 0x03, 0xb7,
1710 					  0x0a, 0xc4, 0x6d, 0x30, 0xd8, 0xd5,
1711 					  0xe6, 0x54, 0x65, 0xdd, 0xa9, 0x1b,
1712 					  0x50, 0xc0, 0xb9, 0x95, 0xb0, 0x7d,
1713 					  0x7c, 0xca, 0x63, 0xf8, 0x72, 0xbe,
1714 					  0x3b, 0x00 ) );
1715 	bigint_mod_exp_ok ( BIGINT ( 0xcd ),
1716 			    BIGINT ( 0xbb ),
1717 			    BIGINT ( 0x25 ),
1718 			    BIGINT ( 0xab ) );
1719 	bigint_mod_exp_ok ( BIGINT ( 0xc4 ),
1720 			    BIGINT ( 0xe9 ),
1721 			    BIGINT ( 0x02, 0x4c ),
1722 			    BIGINT ( 0x7e ) );
1723 	bigint_mod_exp_ok ( BIGINT ( 0xcb ),
1724 			    BIGINT ( 0xde ),
1725 			    BIGINT ( 0xbd, 0x73, 0xbf ),
1726 			    BIGINT ( 0x17 ) );
1727 	bigint_mod_exp_ok ( BIGINT ( 0x17 ),
1728 			    BIGINT ( 0xb9 ),
1729 			    BIGINT ( 0x39, 0x68, 0xba, 0x7d ),
1730 			    BIGINT ( 0x17 ) );
1731 	bigint_mod_exp_ok ( BIGINT ( 0x2e ),
1732 			    BIGINT ( 0xb7 ),
1733 			    BIGINT ( 0x39, 0x07, 0x1b, 0x49, 0x5b, 0xea,
1734 				     0xf2, 0x61, 0x75, 0x94, 0x60, 0x86,
1735 				     0x73, 0xd0, 0xeb, 0x11, 0x08, 0x19,
1736 				     0x90, 0x19, 0xe0, 0xed, 0x2a ),
1737 			    BIGINT ( 0x19 ) );
1738 	bigint_mod_exp_ok ( BIGINT ( 0x59 ),
1739 			    BIGINT ( 0xce ),
1740 			    BIGINT ( 0xdf, 0xbc, 0x0d, 0x0c, 0x09, 0xeb,
1741 				     0xf8, 0xcf, 0xdb, 0xb6, 0x00, 0xa3,
1742 				     0x9e, 0xc3, 0x6c, 0x8d, 0xf1, 0xc3,
1743 				     0x03, 0x36, 0xaa, 0xd4, 0x22, 0x7c,
1744 				     0x20, 0x7b, 0xa9, 0x9a, 0x01, 0xe4,
1745 				     0xf2, 0x50, 0x42, 0x29, 0x68, 0x7a,
1746 				     0xa6, 0x2c, 0xdf, 0xb6, 0x51, 0xa9,
1747 				     0x73, 0x10, 0x98, 0x37, 0x69, 0xb3,
1748 				     0x21, 0x49, 0x6d, 0xcc, 0x80, 0xfa,
1749 				     0x7e, 0x12, 0xe4, 0x9c, 0xc2, 0xbb,
1750 				     0xe3, 0xa3, 0x10, 0x3f, 0xba, 0x99,
1751 				     0x22, 0x79, 0x71, 0x39, 0x96, 0x7b,
1752 				     0x1a, 0x89, 0xdc, 0xda, 0x43, 0x52,
1753 				     0x50, 0x7b, 0xe3, 0x8c, 0xd3, 0xc0,
1754 				     0xf5, 0x7d, 0xfc, 0x80, 0x71, 0x6e,
1755 				     0xaf, 0x5c, 0xd0, 0x14, 0xc0, 0x60,
1756 				     0x24, 0xa8, 0x9a, 0x8a, 0x54, 0x4a,
1757 				     0x6f, 0x42, 0x7a, 0x14, 0x14, 0x25,
1758 				     0xd5, 0x22, 0x08, 0x8f, 0xd9, 0xdb,
1759 				     0xd4, 0x0f, 0x14, 0xf4, 0x3b, 0x26,
1760 				     0x0e, 0xb6, 0x72, 0xd7, 0x03, 0xd5,
1761 				     0xf0, 0x0e ),
1762 			    BIGINT ( 0xa9 ) );
1763 	bigint_mod_exp_ok ( BIGINT ( 0x7f, 0x30 ),
1764 			    BIGINT ( 0x73, 0x74 ),
1765 			    BIGINT ( 0x75 ),
1766 			    BIGINT ( 0x4b, 0xe8 ) );
1767 	bigint_mod_exp_ok ( BIGINT ( 0x04, 0x6c ),
1768 			    BIGINT ( 0x99, 0x04 ),
1769 			    BIGINT ( 0x33, 0xd2 ),
1770 			    BIGINT ( 0x86, 0x74 ) );
1771 	bigint_mod_exp_ok ( BIGINT ( 0xca, 0x88 ),
1772 			    BIGINT ( 0xdc, 0x60 ),
1773 			    BIGINT ( 0x7e, 0x76, 0x79 ),
1774 			    BIGINT ( 0x42, 0x40 ) );
1775 	bigint_mod_exp_ok ( BIGINT ( 0x68, 0x97 ),
1776 			    BIGINT ( 0x52, 0x8b ),
1777 			    BIGINT ( 0x4f, 0x7f, 0xe7, 0xda ),
1778 			    BIGINT ( 0x22, 0x77 ) );
1779 	bigint_mod_exp_ok ( BIGINT ( 0xbd, 0x14 ),
1780 			    BIGINT ( 0x9e, 0xfc ),
1781 			    BIGINT ( 0x23, 0xf7, 0xd0, 0xa1, 0x9e, 0x9b,
1782 				     0x05, 0xd2, 0x44, 0x24, 0x4f, 0x3f,
1783 				     0x83, 0xcc, 0x49, 0x70, 0xa5, 0x0d,
1784 				     0xfc, 0xa7, 0x43, 0xf3, 0x3e ),
1785 			    BIGINT ( 0x1a, 0xc8 ) );
1786 	bigint_mod_exp_ok ( BIGINT ( 0x46, 0x3e ),
1787 			    BIGINT ( 0xb8, 0xde ),
1788 			    BIGINT ( 0xa9, 0xc0, 0xdc, 0x45, 0x65, 0x0d,
1789 				     0xa5, 0x56, 0x70, 0x4c, 0xf1, 0xda,
1790 				     0xab, 0x64, 0xc2, 0x04, 0xf6, 0x32,
1791 				     0x20, 0x68, 0x31, 0x5f, 0x9a, 0x00,
1792 				     0x0f, 0x7b, 0x24, 0x33, 0xdf, 0xaf,
1793 				     0xfe, 0x03, 0x1e, 0x4a, 0xa1, 0xf8,
1794 				     0x45, 0x8d, 0x5a, 0x7d, 0x12, 0x58,
1795 				     0x00, 0x6d, 0xba, 0x79, 0x9f, 0xe1,
1796 				     0xa1, 0xfc, 0x1f, 0xb9, 0xf3, 0xa7,
1797 				     0x07, 0xf5, 0xfe, 0xd6, 0xa1, 0xba,
1798 				     0xda, 0x63, 0xef, 0x39, 0x8e, 0xb7,
1799 				     0x48, 0xa8, 0x81, 0x86, 0xb1, 0x22,
1800 				     0x14, 0x9f, 0x9e, 0xac, 0x69, 0xf7,
1801 				     0xae, 0x1f, 0xf2, 0x99, 0x41, 0xb7,
1802 				     0x37, 0xa7, 0xbc, 0x42, 0xf2, 0x45,
1803 				     0x43, 0xf2, 0x2a, 0xef, 0xc2, 0x83,
1804 				     0xd5, 0x32, 0x6e, 0xfa, 0x49, 0x1c,
1805 				     0x94, 0x9c, 0xc2, 0xc5, 0xad, 0x28,
1806 				     0x53, 0x1c, 0x11, 0xc4, 0x1c, 0x78,
1807 				     0x8f, 0x13, 0xdc, 0xb3, 0x2a, 0x63,
1808 				     0xfd, 0x1f, 0x89, 0x9b, 0x0c, 0x31,
1809 				     0x92, 0x73 ),
1810 			    BIGINT ( 0x7b, 0x8a ) );
1811 	bigint_mod_exp_ok ( BIGINT ( 0xf3, 0xc3, 0xab ),
1812 			    BIGINT ( 0xd0, 0x7e, 0xd0 ),
1813 			    BIGINT ( 0xf6 ),
1814 			    BIGINT ( 0x1f, 0xb3, 0x09 ) );
1815 	bigint_mod_exp_ok ( BIGINT ( 0x13, 0xec, 0xf6 ),
1816 			    BIGINT ( 0x87, 0x1a, 0x9a ),
1817 			    BIGINT ( 0x03, 0xf3 ),
1818 			    BIGINT ( 0x15, 0xe9, 0x8e ) );
1819 	bigint_mod_exp_ok ( BIGINT ( 0x5a, 0x96, 0xe5 ),
1820 			    BIGINT ( 0x56, 0x4a, 0xd1 ),
1821 			    BIGINT ( 0x89, 0x62, 0x8e ),
1822 			    BIGINT ( 0x34, 0xb8, 0xaa ) );
1823 	bigint_mod_exp_ok ( BIGINT ( 0x84, 0x7c, 0xbd ),
1824 			    BIGINT ( 0x3c, 0x80, 0x0a ),
1825 			    BIGINT ( 0x5e, 0x52, 0x9d, 0xba ),
1826 			    BIGINT ( 0x04, 0xcb, 0x4f ) );
1827 	bigint_mod_exp_ok ( BIGINT ( 0x50, 0x01, 0x51 ),
1828 			    BIGINT ( 0x02, 0xe6, 0x96 ),
1829 			    BIGINT ( 0x34, 0x0c, 0x7e, 0xbf, 0x27, 0x23,
1830 				     0x46, 0x92, 0x1c, 0xca, 0x91, 0xab,
1831 				     0x50, 0x2c, 0x3a, 0x64, 0xc8, 0x4a,
1832 				     0x75, 0xd6, 0xe2, 0xde, 0x31 ),
1833 			    BIGINT ( 0x02, 0x16, 0x05 ) );
1834 	bigint_mod_exp_ok ( BIGINT ( 0x5e, 0x47, 0xd8 ),
1835 			    BIGINT ( 0x26, 0xd1, 0xb6 ),
1836 			    BIGINT ( 0x49, 0x61, 0x84, 0x7a, 0xa9, 0xfb,
1837 				     0x93, 0x45, 0xe4, 0xfa, 0x53, 0x60,
1838 				     0x73, 0x98, 0x5a, 0x17, 0xe7, 0x77,
1839 				     0x2d, 0xcd, 0x97, 0xf4, 0xc0, 0x34,
1840 				     0x46, 0xfa, 0xbd, 0x21, 0xdf, 0xa5,
1841 				     0xa0, 0x12, 0x38, 0x7c, 0xbd, 0xd9,
1842 				     0xcd, 0xbc, 0xde, 0x29, 0xa5, 0x13,
1843 				     0xa8, 0xf0, 0xf6, 0x88, 0xc6, 0x31,
1844 				     0xed, 0x90, 0x19, 0x11, 0x7d, 0xe1,
1845 				     0x0e, 0x81, 0x98, 0x8e, 0x98, 0x86,
1846 				     0xde, 0x2a, 0x4c, 0xad, 0xff, 0x57,
1847 				     0x12, 0xbc, 0x4b, 0xaf, 0x21, 0xde,
1848 				     0xca, 0x3a, 0x25, 0xd7, 0x98, 0xe3,
1849 				     0x25, 0xbc, 0x17, 0x74, 0x0b, 0x9c,
1850 				     0x53, 0xe1, 0x1a, 0xec, 0x9a, 0x5a,
1851 				     0xdc, 0x68, 0xdf, 0xad, 0xd6, 0x71,
1852 				     0x6b, 0x5b, 0x8b, 0x85, 0xbb, 0xe5,
1853 				     0xd5, 0x14, 0x4c, 0x30, 0x27, 0x68,
1854 				     0xd1, 0xf7, 0x58, 0x34, 0x4c, 0xe1,
1855 				     0x71, 0xde, 0x7b, 0x8d, 0xa2, 0xe6,
1856 				     0x0a, 0x44, 0x22, 0x26, 0x5a, 0x70,
1857 				     0xbb, 0x68 ),
1858 			    BIGINT ( 0x18, 0x36, 0x96 ) );
1859 	bigint_mod_exp_ok ( BIGINT ( 0xc7, 0x4a, 0xf0, 0x48 ),
1860 			    BIGINT ( 0x5d, 0x27, 0x07, 0x54 ),
1861 			    BIGINT ( 0x4a ),
1862 			    BIGINT ( 0x48, 0x68, 0x7b, 0xe0 ) );
1863 	bigint_mod_exp_ok ( BIGINT ( 0xb4, 0x89, 0xc9, 0x5b ),
1864 			    BIGINT ( 0x7c, 0xd7, 0xc7, 0xff ),
1865 			    BIGINT ( 0xc6, 0x9c ),
1866 			    BIGINT ( 0x0b, 0x2d, 0xf8, 0xf7 ) );
1867 	bigint_mod_exp_ok ( BIGINT ( 0xea, 0x72, 0x43, 0xfe ),
1868 			    BIGINT ( 0xfc, 0x57, 0x2d, 0x47 ),
1869 			    BIGINT ( 0x60, 0x01, 0x2c ),
1870 			    BIGINT ( 0x12, 0x01, 0xe3, 0xf5 ) );
1871 	bigint_mod_exp_ok ( BIGINT ( 0x81, 0x7f, 0x27, 0x94 ),
1872 			    BIGINT ( 0x17, 0x21, 0x67, 0xab ),
1873 			    BIGINT ( 0x50, 0x19, 0x12, 0x52 ),
1874 			    BIGINT ( 0x05, 0x17, 0x6b, 0x13 ) );
1875 	bigint_mod_exp_ok ( BIGINT ( 0x38, 0xab, 0xd4, 0xec ),
1876 			    BIGINT ( 0x0c, 0x2a, 0x56, 0x38 ),
1877 			    BIGINT ( 0x2f, 0x85, 0x85, 0x57, 0xf6, 0xde,
1878 				     0x24, 0xb4, 0x28, 0x3c, 0x5a, 0x3c,
1879 				     0x0b, 0x12, 0x85, 0x85, 0x85, 0x98,
1880 				     0x46, 0x5b, 0x9c, 0x52, 0x3a ),
1881 			    BIGINT ( 0x02, 0xe6, 0x6a, 0x70 ) );
1882 	bigint_mod_exp_ok ( BIGINT ( 0xa6, 0x35, 0xc0, 0x6f ),
1883 			    BIGINT ( 0x23, 0xac, 0x78, 0x72 ),
1884 			    BIGINT ( 0x6a, 0x07, 0x80, 0xbf, 0x1b, 0xa5,
1885 				     0xf8, 0x0b, 0x90, 0x06, 0xa4, 0xa5,
1886 				     0x44, 0x13, 0xba, 0x4b, 0xb3, 0xce,
1887 				     0x9f, 0x55, 0x42, 0x56, 0xc3, 0x30,
1888 				     0x82, 0x85, 0x5a, 0x3b, 0xae, 0x88,
1889 				     0x92, 0x4e, 0x3c, 0x37, 0xf6, 0x80,
1890 				     0x4c, 0x03, 0x3c, 0x1e, 0x2c, 0x17,
1891 				     0xef, 0x9d, 0xd7, 0x6f, 0xdc, 0xbb,
1892 				     0x42, 0x42, 0xa1, 0x7f, 0x97, 0x66,
1893 				     0xcd, 0xc8, 0x8a, 0x7c, 0xc6, 0x70,
1894 				     0x61, 0x54, 0x82, 0xd0, 0xd0, 0x8b,
1895 				     0xd5, 0x4f, 0x57, 0x7b, 0x8e, 0xab,
1896 				     0xdc, 0xbf, 0x8e, 0x85, 0x94, 0x83,
1897 				     0x8a, 0xb3, 0x72, 0x69, 0x2d, 0x51,
1898 				     0xdd, 0x86, 0x1e, 0x58, 0xb8, 0x00,
1899 				     0xe2, 0x5e, 0xa7, 0xef, 0x6a, 0x6a,
1900 				     0xb0, 0x10, 0x3d, 0x53, 0xfe, 0x23,
1901 				     0x51, 0xc0, 0x51, 0xed, 0x1f, 0x02,
1902 				     0x4b, 0x73, 0x17, 0x59, 0xfa, 0xb9,
1903 				     0xa8, 0x05, 0xa7, 0x79, 0xc3, 0xc9,
1904 				     0x4c, 0x2d, 0x58, 0x59, 0x10, 0x99,
1905 				     0x71, 0xe6 ),
1906 			    BIGINT ( 0x01, 0x63, 0xd0, 0x07 ) );
1907 	bigint_mod_exp_ok ( BIGINT ( 0xff, 0x2a, 0x37, 0x04, 0xd4, 0x08,
1908 				     0x9f, 0xf5, 0xac, 0x29, 0x7f, 0x4b,
1909 				     0x93, 0x86, 0x02, 0x26, 0xac, 0x29,
1910 				     0xa8, 0xf9, 0x77, 0x91, 0x20 ),
1911 			    BIGINT ( 0x2c, 0xb2, 0xe2, 0x1f, 0x4b, 0x97,
1912 				     0xaa, 0x3b, 0xd1, 0x36, 0xb0, 0x40,
1913 				     0x8b, 0x1c, 0x19, 0xa2, 0xea, 0xc8,
1914 				     0xc6, 0x4e, 0x2a, 0x66, 0x50 ),
1915 			    BIGINT ( 0x97 ),
1916 			    BIGINT ( 0x04, 0x22, 0x44, 0xe2, 0x14, 0x54,
1917 				     0x6c, 0x5a, 0xba, 0x1b, 0x39, 0xb7,
1918 				     0xaa, 0x06, 0xcf, 0x2b, 0xc8, 0x7e,
1919 				     0xc0, 0xe0, 0x70, 0xf2, 0x90 ) );
1920 	bigint_mod_exp_ok ( BIGINT ( 0xcd, 0xf3, 0xf7, 0x50, 0x13, 0x39,
1921 				     0x13, 0x4a, 0x56, 0xc5, 0xb8, 0xa6,
1922 				     0x42, 0x2d, 0x40, 0x5e, 0x07, 0xf2,
1923 				     0x92, 0x2a, 0x51, 0x87, 0x20 ),
1924 			    BIGINT ( 0x93, 0x1a, 0x28, 0xbb, 0x69, 0x4f,
1925 				     0x31, 0x01, 0xe0, 0x88, 0x8a, 0x4c,
1926 				     0x4f, 0x9b, 0xda, 0xf6, 0x4e, 0xf3,
1927 				     0x11, 0xe7, 0x35, 0xa1, 0xfb ),
1928 			    BIGINT ( 0x66, 0x69 ),
1929 			    BIGINT ( 0x7a, 0x5a, 0x9b, 0x84, 0x72, 0x8f,
1930 				     0x57, 0x31, 0xb4, 0x34, 0x70, 0x18,
1931 				     0x77, 0xa6, 0x43, 0xa9, 0x51, 0x69,
1932 				     0x07, 0x3e, 0xf6, 0x68, 0x82 ) );
1933 	bigint_mod_exp_ok ( BIGINT ( 0xdd, 0x4c, 0x85, 0xcb, 0x3f, 0x45,
1934 				     0x61, 0xe0, 0x58, 0x1e, 0xad, 0xd3,
1935 				     0x6b, 0xef, 0x82, 0x53, 0x4a, 0x16,
1936 				     0x1a, 0xf0, 0x09, 0x82, 0x74 ),
1937 			    BIGINT ( 0xd2, 0xa2, 0x73, 0x89, 0x0c, 0x56,
1938 				     0xe4, 0x31, 0xdf, 0x70, 0x3c, 0x40,
1939 				     0x0d, 0x36, 0xfc, 0x4a, 0xf3, 0xa2,
1940 				     0x8f, 0x9a, 0x9d, 0xaa, 0xb0 ),
1941 			    BIGINT ( 0xbc, 0xca, 0x45 ),
1942 			    BIGINT ( 0x9f, 0x5f, 0x7c, 0xac, 0x5e, 0xc7,
1943 				     0xf2, 0xc5, 0x72, 0x3d, 0xff, 0x29,
1944 				     0xd2, 0x25, 0xa9, 0x64, 0x5b, 0xbe,
1945 				     0x63, 0x63, 0xc6, 0x84, 0x20 ) );
1946 	bigint_mod_exp_ok ( BIGINT ( 0xf8, 0xc9, 0xb9, 0x3d, 0xe1, 0xff,
1947 				     0xa6, 0x8e, 0xb0, 0xd2, 0xa9, 0xa9,
1948 				     0xc1, 0x5c, 0xc5, 0x94, 0x90, 0xb9,
1949 				     0xca, 0x2f, 0x1a, 0xbd, 0x21 ),
1950 			    BIGINT ( 0xa7, 0xf4, 0xb0, 0x3c, 0xf4, 0x2b,
1951 				     0x9d, 0x40, 0x5f, 0xfd, 0x2e, 0x28,
1952 				     0xa9, 0x23, 0x01, 0xaf, 0x0b, 0x73,
1953 				     0xaa, 0xcf, 0x14, 0xdc, 0xd8 ),
1954 			    BIGINT ( 0x31, 0xe2, 0xe8, 0xf0 ),
1955 			    BIGINT ( 0x53, 0x30, 0xc6, 0x10, 0x12, 0x7c,
1956 				     0xb3, 0x91, 0x15, 0x5f, 0x01, 0x62,
1957 				     0xec, 0x1f, 0x15, 0x61, 0x3b, 0x9a,
1958 				     0x76, 0x22, 0xf8, 0x31, 0xb1 ) );
1959 	bigint_mod_exp_ok ( BIGINT ( 0xff, 0x8c, 0x04, 0x74, 0x3e, 0x93,
1960 				     0xfd, 0xce, 0xd5, 0x7f, 0xc5, 0x58,
1961 				     0xce, 0x00, 0x53, 0x44, 0x02, 0xf4,
1962 				     0xfd, 0x01, 0xc3, 0xb0, 0x3c ),
1963 			    BIGINT ( 0x2f, 0xbe, 0xb3, 0x2d, 0xd6, 0x59,
1964 				     0x69, 0x44, 0xc0, 0xd4, 0x27, 0x9c,
1965 				     0xff, 0x53, 0x9e, 0x66, 0x2c, 0x01,
1966 				     0x3a, 0x96, 0x5d, 0x75, 0xc1 ),
1967 			    BIGINT ( 0x47, 0x3e, 0xb2, 0x81, 0x51, 0x9a,
1968 				     0xdf, 0x75, 0xba, 0xa5, 0x19, 0xc1,
1969 				     0xc7, 0xcc, 0xae, 0x82, 0x9c, 0x3e,
1970 				     0xfd, 0x7f, 0xb0, 0xd7, 0x00 ),
1971 			    BIGINT ( 0x09, 0x9c, 0xd0, 0x49, 0x1d, 0x88,
1972 				     0xd8, 0x08, 0x45, 0x61, 0x71, 0xa1,
1973 				     0xb5, 0xab, 0xa9, 0x5b, 0xa8, 0xf1,
1974 				     0xc6, 0x53, 0x68, 0x8f, 0x3e ) );
1975 	bigint_mod_exp_ok ( BIGINT ( 0xd8, 0x78, 0xad, 0x80, 0x81, 0xf1,
1976 				     0x84, 0x23, 0x82, 0x5d, 0x49, 0x46,
1977 				     0x75, 0xfd, 0xd1, 0x49, 0x53, 0x10,
1978 				     0x4d, 0x10, 0xab, 0x0f, 0xf0 ),
1979 			    BIGINT ( 0x78, 0x3d, 0x09, 0x1b, 0xea, 0xa4,
1980 				     0xb9, 0x13, 0xf8, 0xb5, 0xb5, 0x5e,
1981 				     0x69, 0xa4, 0xe1, 0xfd, 0x88, 0x58,
1982 				     0x26, 0xb3, 0x76, 0xa2, 0x38 ),
1983 			    BIGINT ( 0x3b, 0x12, 0xe0, 0x8e, 0xa2, 0x2f,
1984 				     0x2a, 0x2b, 0xb1, 0x78, 0xf9, 0xf6,
1985 				     0x93, 0x4d, 0x52, 0x82, 0x29, 0x2d,
1986 				     0xe4, 0x36, 0x92, 0x49, 0xc1, 0x25,
1987 				     0x6e, 0x26, 0xe6, 0x6e, 0xc2, 0x4d,
1988 				     0xea, 0x13, 0x86, 0x85, 0x71, 0x4d,
1989 				     0x85, 0x70, 0xf9, 0x2b, 0xa0, 0x0f,
1990 				     0x96, 0xe5, 0x63, 0x7a, 0xb4, 0x25,
1991 				     0x53, 0x1a, 0xd8, 0x30, 0x36, 0xba,
1992 				     0x6e, 0x2e, 0xce, 0x2d, 0x8f, 0x32,
1993 				     0xe9, 0xdc, 0x91, 0x9e, 0xd4, 0xf1,
1994 				     0x3b, 0x40, 0xc9, 0xf4, 0x97, 0x74,
1995 				     0x5e, 0x69, 0xcd, 0x34, 0x4a, 0x18,
1996 				     0x65, 0xe5, 0x07, 0xb5, 0x9e, 0x2a,
1997 				     0xc4, 0xeb, 0xb6, 0x96, 0x7b, 0x99,
1998 				     0x0c, 0xe4, 0xb3, 0x85, 0xff, 0x17,
1999 				     0x72, 0x5d, 0xf6, 0x30, 0xb4, 0xff,
2000 				     0x98, 0xe6, 0xf6, 0x31, 0x24, 0x82,
2001 				     0x91, 0xa6, 0x18, 0x6d, 0x0b, 0x84,
2002 				     0x6f, 0x5f, 0x64, 0xa3, 0xdf, 0x92,
2003 				     0x06, 0x16, 0xe3, 0x7c, 0x08, 0x61,
2004 				     0x77, 0xce ),
2005 			    BIGINT ( 0x17, 0xc9, 0xc5, 0x38, 0x4c, 0x15,
2006 				     0x0f, 0x4e, 0xc2, 0x90, 0x3b, 0x46,
2007 				     0x7b, 0x2f, 0x95, 0x82, 0xfe, 0x51,
2008 				     0x95, 0x2b, 0xff, 0xd5, 0x28 ) );
2009 	bigint_mod_exp_ok ( BIGINT ( 0x69, 0xa3, 0x7e, 0x24, 0xdf, 0x9e,
2010 				     0x0b, 0x3e, 0x3f, 0x43, 0x06, 0x0e,
2011 				     0x1d, 0x57, 0x74, 0xe0, 0xa0, 0x5b,
2012 				     0x82, 0xca, 0xb0, 0x33, 0x8b, 0xe4,
2013 				     0x39, 0x27, 0x41, 0xd4, 0x2e, 0x30,
2014 				     0x3a, 0x0e, 0x62, 0x6f, 0xfa, 0xb4,
2015 				     0x02, 0x88, 0x70, 0x35, 0xa6, 0xea,
2016 				     0x7d, 0xb2, 0x87, 0xc3, 0xa5, 0x50,
2017 				     0x49, 0x38, 0xa4, 0x68, 0xa9, 0xe4,
2018 				     0xa6, 0xcc, 0xd7, 0x13, 0xb1, 0xd9,
2019 				     0x1c, 0x6a, 0x9a, 0xb8, 0x6c, 0x9b,
2020 				     0xff, 0xcd, 0x2c, 0xb3, 0xbd, 0xe2,
2021 				     0xfd, 0x1f, 0x08, 0xdd, 0xc6, 0xee,
2022 				     0x18, 0x0c, 0xa5, 0xcd, 0x09, 0x19,
2023 				     0x51, 0x51, 0xa5, 0x6f, 0x93, 0x1b,
2024 				     0x34, 0xfd, 0x8f, 0xd9, 0x87, 0xed,
2025 				     0x15, 0x7e, 0x36, 0x60, 0xdd, 0x1b,
2026 				     0xf4, 0xcc, 0xc4, 0x4c, 0x19, 0x2b,
2027 				     0xd6, 0x1e, 0xec, 0x51, 0xe9, 0x27,
2028 				     0xe9, 0xbd, 0x6a, 0x3f, 0x91, 0x45,
2029 				     0xc3, 0x6d, 0x40, 0x7e, 0x6c, 0x56,
2030 				     0x05, 0x5a ),
2031 			    BIGINT ( 0x5c, 0x96, 0x05, 0x81, 0x94, 0x45,
2032 				     0xcf, 0x47, 0x5f, 0x1b, 0xb0, 0xf9,
2033 				     0xef, 0x13, 0x8f, 0xcc, 0x71, 0xfd,
2034 				     0x50, 0xf1, 0xe7, 0x62, 0x6e, 0xfa,
2035 				     0x48, 0x66, 0x1c, 0xf7, 0xef, 0x09,
2036 				     0x12, 0xa2, 0xfd, 0x17, 0xb7, 0x6a,
2037 				     0x3b, 0xed, 0xf7, 0x86, 0xd2, 0xbe,
2038 				     0x95, 0x90, 0xc6, 0x00, 0x14, 0x8d,
2039 				     0xe3, 0x27, 0xbe, 0x03, 0x7c, 0x9e,
2040 				     0x6b, 0x51, 0x31, 0x8d, 0x18, 0xc4,
2041 				     0x16, 0xd2, 0x84, 0x63, 0x9b, 0xe9,
2042 				     0xa4, 0xf8, 0xff, 0x70, 0x4d, 0xeb,
2043 				     0x6f, 0x4a, 0xb7, 0x5b, 0x54, 0xf1,
2044 				     0xb5, 0xbe, 0x78, 0xb6, 0xfd, 0x8b,
2045 				     0xe1, 0x39, 0x62, 0x85, 0x9b, 0xde,
2046 				     0x30, 0xa8, 0xe4, 0x37, 0x52, 0x57,
2047 				     0x39, 0x79, 0xdb, 0x0b, 0x19, 0x6b,
2048 				     0xc9, 0x17, 0xfd, 0x8c, 0x2c, 0xaa,
2049 				     0xa4, 0xf1, 0x04, 0xd1, 0xd3, 0x2f,
2050 				     0xbb, 0x3a, 0x36, 0x82, 0x31, 0xa4,
2051 				     0x40, 0xd4, 0x87, 0x46, 0xe3, 0x6e,
2052 				     0xd0, 0x17 ),
2053 			    BIGINT ( 0x93 ),
2054 			    BIGINT ( 0x0d, 0x39, 0x92, 0x57, 0xaa, 0x6d,
2055 				     0xfc, 0x3b, 0x10, 0x18, 0x6d, 0x59,
2056 				     0xbe, 0x31, 0x8f, 0xee, 0xf9, 0x82,
2057 				     0x84, 0xe0, 0xdf, 0xa5, 0x00, 0x28,
2058 				     0xd1, 0x64, 0x6b, 0x4b, 0x43, 0x3b,
2059 				     0x76, 0x3e, 0x6b, 0xc4, 0xe4, 0xf5,
2060 				     0x0b, 0x59, 0x5a, 0xe4, 0x53, 0x5e,
2061 				     0x02, 0xd4, 0xde, 0x72, 0xd3, 0xa3,
2062 				     0x58, 0x66, 0xa7, 0xdd, 0x2b, 0x0b,
2063 				     0xa4, 0x83, 0xd0, 0xd9, 0xef, 0x29,
2064 				     0x3d, 0x2f, 0x97, 0xff, 0x9a, 0xc7,
2065 				     0xf6, 0x8a, 0x8d, 0x59, 0xef, 0x87,
2066 				     0xd1, 0xe6, 0xba, 0x4d, 0x99, 0xd9,
2067 				     0x5f, 0x5e, 0x7a, 0x7e, 0x67, 0x22,
2068 				     0x5b, 0x77, 0x83, 0xa2, 0x02, 0xfd,
2069 				     0xb2, 0xe4, 0xf6, 0x20, 0x4c, 0x12,
2070 				     0x20, 0xa7, 0xda, 0x5b, 0x3b, 0x8c,
2071 				     0xa2, 0xca, 0xda, 0x20, 0xaa, 0x27,
2072 				     0xe6, 0x54, 0x3e, 0xa8, 0x6f, 0x64,
2073 				     0x9d, 0xa7, 0x0d, 0x57, 0x1b, 0x21,
2074 				     0xff, 0xd2, 0xe2, 0xb2, 0x0a, 0x4f,
2075 				     0xb7, 0x0e ) );
2076 	bigint_mod_exp_ok ( BIGINT ( 0x06, 0xcf, 0x54, 0xf2, 0x0d, 0x62,
2077 				     0x33, 0xdd, 0xe7, 0x4d, 0x7f, 0x2f,
2078 				     0x8e, 0x52, 0x73, 0xf4, 0x73, 0x68,
2079 				     0x4b, 0x13, 0x6e, 0x58, 0x6b, 0x4a,
2080 				     0xb8, 0x4c, 0xef, 0x73, 0xfe, 0x5f,
2081 				     0xf6, 0xd0, 0xbb, 0x82, 0x17, 0x3f,
2082 				     0x9d, 0x91, 0xf8, 0xa3, 0xb8, 0x79,
2083 				     0xef, 0x41, 0x38, 0xc1, 0xef, 0xc9,
2084 				     0xc6, 0xcf, 0x2a, 0xc3, 0xaa, 0x75,
2085 				     0x17, 0xda, 0xbc, 0x76, 0x29, 0x61,
2086 				     0x6d, 0x05, 0x79, 0x0b, 0x44, 0xb1,
2087 				     0x54, 0x75, 0xb7, 0xd9, 0xf6, 0xa8,
2088 				     0xbd, 0xf7, 0x85, 0xe0, 0xe7, 0x90,
2089 				     0x62, 0xce, 0x79, 0xfb, 0xc5, 0x23,
2090 				     0xa5, 0x09, 0xc0, 0xc4, 0x4d, 0xe7,
2091 				     0x9c, 0x49, 0x8f, 0x82, 0xf1, 0x31,
2092 				     0x34, 0x85, 0xdd, 0x3b, 0xbe, 0xe9,
2093 				     0x93, 0x19, 0x03, 0x75, 0x3f, 0xc4,
2094 				     0xa4, 0x0f, 0x52, 0x53, 0xc1, 0xcd,
2095 				     0x08, 0xb0, 0x05, 0x0c, 0xa2, 0x0c,
2096 				     0x3a, 0x72, 0xb2, 0x3c, 0xdb, 0x4f,
2097 				     0xac, 0xc6 ),
2098 			    BIGINT ( 0xe4, 0x40, 0xd8, 0x30, 0x00, 0xcf,
2099 				     0x4c, 0xfd, 0xda, 0xae, 0x90, 0xd3,
2100 				     0x5b, 0xc7, 0x20, 0xcc, 0x2b, 0xe2,
2101 				     0x0a, 0x39, 0x1e, 0xde, 0xef, 0x98,
2102 				     0x16, 0x3b, 0x9d, 0x36, 0x63, 0x0d,
2103 				     0x46, 0xed, 0x23, 0x6e, 0x38, 0xa8,
2104 				     0x15, 0xb5, 0xb1, 0xaf, 0x47, 0xb1,
2105 				     0xec, 0xaa, 0x8b, 0x57, 0xd6, 0xca,
2106 				     0x39, 0x2f, 0x62, 0xbd, 0xd5, 0xf8,
2107 				     0x98, 0x98, 0x5d, 0xfe, 0x14, 0xd6,
2108 				     0xdc, 0xe5, 0x98, 0x60, 0x5b, 0x16,
2109 				     0x92, 0xcb, 0xed, 0xb6, 0x9c, 0x5c,
2110 				     0x82, 0x40, 0x6b, 0xaa, 0x48, 0x7a,
2111 				     0xd4, 0xfe, 0xa3, 0xe7, 0x30, 0xf1,
2112 				     0x7c, 0xfb, 0x94, 0x2e, 0xeb, 0xb6,
2113 				     0x71, 0xe4, 0x33, 0x63, 0xc3, 0xb0,
2114 				     0x94, 0x6d, 0xee, 0xa5, 0x15, 0x3f,
2115 				     0x28, 0xf1, 0xfa, 0xdc, 0xf2, 0x13,
2116 				     0x0f, 0xc7, 0xd9, 0xe0, 0xbf, 0x1b,
2117 				     0x49, 0xee, 0x21, 0x8e, 0x26, 0xc9,
2118 				     0x28, 0x21, 0x86, 0x1d, 0x46, 0x33,
2119 				     0xd4, 0x69 ),
2120 			    BIGINT ( 0xd9, 0x87 ),
2121 			    BIGINT ( 0xdf, 0xff, 0xcc, 0xb7, 0xfe, 0x19,
2122 				     0x02, 0x92, 0x9d, 0xab, 0x33, 0xd2,
2123 				     0x21, 0xbc, 0xd3, 0xc4, 0x31, 0xad,
2124 				     0x4b, 0xb3, 0x16, 0x50, 0x96, 0xd9,
2125 				     0xdc, 0x88, 0x74, 0x60, 0xde, 0xdf,
2126 				     0xb7, 0x83, 0xdb, 0x22, 0xef, 0xcb,
2127 				     0xcb, 0xdb, 0x4c, 0xfb, 0x94, 0x4c,
2128 				     0x3f, 0xf5, 0xf5, 0x99, 0x85, 0x21,
2129 				     0x1a, 0x2b, 0xec, 0x90, 0x2d, 0xb4,
2130 				     0x20, 0x3c, 0x27, 0x9f, 0xe5, 0xb1,
2131 				     0x5c, 0x92, 0xfa, 0xb0, 0xa9, 0x8e,
2132 				     0x2c, 0x21, 0x8e, 0x8d, 0xe5, 0x55,
2133 				     0x84, 0x02, 0xa5, 0x15, 0x5c, 0x53,
2134 				     0x1f, 0x40, 0x81, 0x0a, 0x10, 0xde,
2135 				     0x21, 0x41, 0xa9, 0x97, 0xf8, 0x6f,
2136 				     0xbf, 0x42, 0x58, 0x9e, 0xc6, 0xdd,
2137 				     0x10, 0x33, 0x3f, 0xad, 0xe6, 0x8e,
2138 				     0x57, 0x27, 0x37, 0x20, 0xa4, 0x86,
2139 				     0xef, 0x39, 0x7b, 0x6f, 0x78, 0x77,
2140 				     0xab, 0xa0, 0x62, 0xe1, 0xfd, 0x9c,
2141 				     0xbe, 0xfa, 0x98, 0x2e, 0x29, 0xe3,
2142 				     0xeb, 0x52 ) );
2143 	bigint_mod_exp_ok ( BIGINT ( 0x00, 0x91, 0xb3, 0x87, 0xe6, 0x01,
2144 				     0x57, 0xe9, 0x68, 0xa4, 0xf4, 0x9b,
2145 				     0xea, 0x6a, 0x8a, 0x9e, 0x1a, 0x8b,
2146 				     0xd3, 0x85, 0x9d, 0xba, 0x85, 0xab,
2147 				     0xd8, 0xcd, 0x25, 0x56, 0x8e, 0x85,
2148 				     0x8a, 0x8e, 0x48, 0x9e, 0xb4, 0x90,
2149 				     0xc8, 0x2e, 0x07, 0x78, 0x80, 0x49,
2150 				     0xa0, 0xb7, 0x95, 0x6a, 0xd8, 0xad,
2151 				     0xb5, 0xda, 0x5d, 0xe6, 0x11, 0x87,
2152 				     0xb8, 0x33, 0x8f, 0xa8, 0x6f, 0x4e,
2153 				     0xc6, 0xc3, 0x0d, 0xf5, 0xa9, 0x4e,
2154 				     0xb2, 0x42, 0x53, 0x81, 0xcd, 0x33,
2155 				     0x83, 0x49, 0xab, 0x0d, 0x0e, 0xf5,
2156 				     0x2c, 0xcd, 0x84, 0x58, 0xf3, 0x30,
2157 				     0xa3, 0x6e, 0x3c, 0x3a, 0xc6, 0x77,
2158 				     0x43, 0xb0, 0xe7, 0x4b, 0x66, 0x30,
2159 				     0xe9, 0x48, 0x0b, 0x0d, 0x86, 0x3f,
2160 				     0xd8, 0xe2, 0xb5, 0x88, 0xc1, 0x44,
2161 				     0xb2, 0x6b, 0xb0, 0x7a, 0x35, 0x3b,
2162 				     0x56, 0x83, 0xb1, 0xac, 0x9e, 0xeb,
2163 				     0x9b, 0x08, 0x43, 0xac, 0x0a, 0x3a,
2164 				     0x31, 0x69 ),
2165 			    BIGINT ( 0x96, 0x6f, 0xb0, 0xa7, 0x02, 0xb5,
2166 				     0xd9, 0x19, 0xbe, 0x4b, 0x27, 0x65,
2167 				     0x5b, 0x96, 0xd4, 0x0b, 0x49, 0x70,
2168 				     0xf0, 0x09, 0x8e, 0xf2, 0x04, 0x85,
2169 				     0x93, 0xe9, 0x2e, 0x09, 0x31, 0x76,
2170 				     0x8b, 0xbb, 0xe9, 0xe1, 0x2b, 0x4f,
2171 				     0xed, 0x83, 0xa6, 0x87, 0xa3, 0x07,
2172 				     0x0a, 0x3d, 0x1c, 0x65, 0x14, 0x5a,
2173 				     0xd5, 0xc0, 0x5d, 0x3c, 0x31, 0x9a,
2174 				     0x83, 0xad, 0xca, 0x6a, 0x93, 0x0d,
2175 				     0x1a, 0x67, 0x4e, 0x68, 0x06, 0x64,
2176 				     0x53, 0x2e, 0x15, 0xd9, 0xdd, 0x5e,
2177 				     0xcb, 0xb7, 0x2e, 0xef, 0xd3, 0xbb,
2178 				     0x5f, 0xaf, 0xef, 0x9e, 0xf2, 0x7b,
2179 				     0x69, 0x15, 0xb0, 0x18, 0x6c, 0x67,
2180 				     0x10, 0xda, 0x33, 0x07, 0x48, 0x97,
2181 				     0x31, 0xb3, 0x3d, 0x3d, 0xc9, 0x2e,
2182 				     0x0b, 0x68, 0x91, 0x3f, 0x6a, 0x3b,
2183 				     0x1a, 0xdf, 0xa8, 0x69, 0x46, 0x1c,
2184 				     0xb2, 0x69, 0x08, 0x0b, 0x02, 0x1b,
2185 				     0x03, 0x64, 0xae, 0xb6, 0x2d, 0xc6,
2186 				     0xc4, 0x0a ),
2187 			    BIGINT ( 0x6d, 0x3f, 0xdd ),
2188 			    BIGINT ( 0x40, 0x6e, 0x9d, 0x3e, 0xeb, 0xa4,
2189 				     0xb1, 0x8d, 0xb7, 0xb4, 0x0f, 0x5b,
2190 				     0x12, 0xad, 0x27, 0x9e, 0xbd, 0xe7,
2191 				     0xe5, 0x9d, 0xec, 0xb4, 0xac, 0x23,
2192 				     0x5f, 0xa9, 0xec, 0x9c, 0xd1, 0x6a,
2193 				     0xbe, 0x99, 0xba, 0xb3, 0x66, 0x0e,
2194 				     0x17, 0xaa, 0x13, 0xa2, 0x2e, 0x01,
2195 				     0x28, 0xb1, 0x6c, 0xba, 0xad, 0x68,
2196 				     0x48, 0xf0, 0xf3, 0x4c, 0x08, 0x9f,
2197 				     0xd1, 0x9c, 0xb7, 0x75, 0xc5, 0xb6,
2198 				     0x5a, 0x05, 0xb0, 0x14, 0xd4, 0x61,
2199 				     0xea, 0x18, 0x9f, 0xe6, 0xe5, 0xe3,
2200 				     0xd4, 0xff, 0x35, 0x43, 0x0b, 0xb8,
2201 				     0xf6, 0xe9, 0x19, 0x7a, 0x88, 0xa7,
2202 				     0x4d, 0x01, 0x92, 0x05, 0xd2, 0x6e,
2203 				     0xa3, 0xc1, 0xb6, 0x66, 0x75, 0xb1,
2204 				     0x00, 0x0d, 0x42, 0x37, 0xcc, 0xca,
2205 				     0xc0, 0x8d, 0xc8, 0x7e, 0x5c, 0xc9,
2206 				     0x53, 0x81, 0x2f, 0xc4, 0x61, 0xb6,
2207 				     0x96, 0x3b, 0xa5, 0x04, 0x14, 0x1b,
2208 				     0xa7, 0x77, 0xa1, 0xbc, 0x73, 0x1d,
2209 				     0xad, 0xed ) );
2210 	bigint_mod_exp_ok ( BIGINT ( 0x45, 0xfb, 0xf3, 0xdc, 0x31, 0xe5,
2211 				     0x56, 0x7a, 0xee, 0x15, 0xfb, 0x16,
2212 				     0xee, 0x6e, 0x90, 0x3e, 0xa3, 0x89,
2213 				     0xc2, 0x6d, 0x9b, 0x06, 0x65, 0xd0,
2214 				     0xcd, 0xa2, 0xcc, 0x01, 0x60, 0x0d,
2215 				     0xd1, 0xdd, 0x68, 0x14, 0xc2, 0xcd,
2216 				     0xd8, 0x79, 0x75, 0xad, 0x0a, 0x9f,
2217 				     0x39, 0x5f, 0x52, 0x4b, 0x58, 0x31,
2218 				     0x48, 0xbb, 0x2a, 0xcc, 0xe0, 0x42,
2219 				     0x18, 0x32, 0xdc, 0x63, 0x14, 0x11,
2220 				     0x4e, 0xab, 0x96, 0x29, 0xc5, 0x06,
2221 				     0x79, 0xe5, 0x06, 0xf7, 0x59, 0xdb,
2222 				     0x1e, 0x51, 0xfd, 0xc4, 0x48, 0x3a,
2223 				     0x4c, 0x7f, 0xd0, 0xe2, 0x36, 0x86,
2224 				     0xc1, 0x8b, 0xc5, 0x86, 0x52, 0xe0,
2225 				     0xdb, 0x92, 0x5f, 0x0e, 0x19, 0xb1,
2226 				     0xa3, 0x23, 0xdd, 0xf0, 0x78, 0xcc,
2227 				     0x81, 0x3f, 0x4a, 0xe6, 0xb0, 0x32,
2228 				     0xd1, 0x5c, 0x5e, 0x3a, 0xb0, 0xd8,
2229 				     0xe2, 0x04, 0xc0, 0x30, 0x85, 0x1d,
2230 				     0x5e, 0x28, 0xee, 0xd9, 0xb3, 0x83,
2231 				     0x9f, 0xe2 ),
2232 			    BIGINT ( 0xb3, 0x2c, 0x2e, 0xc5, 0xba, 0xf8,
2233 				     0x41, 0x98, 0x79, 0x7e, 0xaa, 0x0c,
2234 				     0x2a, 0x8f, 0xd9, 0x56, 0x55, 0xaa,
2235 				     0x74, 0x60, 0x74, 0xd1, 0x49, 0x2c,
2236 				     0x6f, 0x0a, 0x4e, 0xf8, 0x3f, 0x1b,
2237 				     0x73, 0x4c, 0xe0, 0x17, 0x37, 0x06,
2238 				     0x76, 0x73, 0xd5, 0x2d, 0x4d, 0x3f,
2239 				     0xb0, 0x15, 0x7e, 0x98, 0xd0, 0xdf,
2240 				     0xf0, 0x33, 0x78, 0xe2, 0xe6, 0xec,
2241 				     0x21, 0x22, 0xad, 0xd5, 0xab, 0x2d,
2242 				     0x0d, 0x59, 0x95, 0x05, 0x34, 0x1f,
2243 				     0x51, 0xf5, 0xec, 0x93, 0x05, 0x15,
2244 				     0x37, 0xcf, 0x93, 0x03, 0xd7, 0xf6,
2245 				     0x35, 0x23, 0x8f, 0x33, 0xf6, 0xba,
2246 				     0x42, 0xc8, 0x52, 0x94, 0xd3, 0x33,
2247 				     0x3e, 0x39, 0x01, 0xd1, 0x55, 0x3f,
2248 				     0x48, 0x84, 0xe9, 0xbc, 0x0b, 0x0f,
2249 				     0xc9, 0x69, 0x41, 0x2c, 0x5f, 0x34,
2250 				     0xd0, 0xe6, 0x15, 0x50, 0x06, 0x64,
2251 				     0x5b, 0x8b, 0x71, 0x22, 0xb3, 0x3e,
2252 				     0x09, 0x9c, 0x76, 0x13, 0x9b, 0x29,
2253 				     0x57, 0x94 ),
2254 			    BIGINT ( 0xca, 0x94, 0xf7, 0xca ),
2255 			    BIGINT ( 0x83, 0x68, 0xb9, 0xe7, 0x91, 0xf3,
2256 				     0x3b, 0x5a, 0x0b, 0xb6, 0x1e, 0x2f,
2257 				     0x3f, 0x5f, 0xdc, 0x96, 0x5b, 0x7f,
2258 				     0x8d, 0xc5, 0x8e, 0xda, 0x6e, 0x21,
2259 				     0xe3, 0x20, 0xea, 0x37, 0x39, 0x3b,
2260 				     0xb4, 0xd7, 0xf6, 0xba, 0x61, 0xfe,
2261 				     0xdc, 0x7e, 0x82, 0x9a, 0x38, 0x7b,
2262 				     0xd5, 0xb1, 0x11, 0x98, 0xc4, 0x88,
2263 				     0x0b, 0x01, 0x7d, 0x81, 0xc9, 0x64,
2264 				     0x23, 0xc3, 0x3e, 0xf3, 0x67, 0x95,
2265 				     0x78, 0xca, 0xda, 0x52, 0xaf, 0x72,
2266 				     0x25, 0xd9, 0xf0, 0x27, 0xd3, 0x1c,
2267 				     0xfb, 0xad, 0xa1, 0xa7, 0x06, 0x2f,
2268 				     0xaa, 0x2f, 0x86, 0x5c, 0x8b, 0x30,
2269 				     0xe1, 0xda, 0x5a, 0x36, 0xf9, 0xfd,
2270 				     0xbf, 0xfe, 0x0d, 0x03, 0xf8, 0x9c,
2271 				     0x6b, 0x9b, 0xe5, 0x70, 0x6d, 0x75,
2272 				     0xd7, 0x54, 0x28, 0x43, 0x34, 0x69,
2273 				     0x98, 0x11, 0x29, 0xee, 0x50, 0x06,
2274 				     0xa4, 0xc4, 0x11, 0x6d, 0x60, 0x8c,
2275 				     0xcd, 0xd1, 0x88, 0xe9, 0x6b, 0xbb,
2276 				     0xc1, 0xd4 ) );
2277 	bigint_mod_exp_ok ( BIGINT ( 0xa1, 0x01, 0x7e, 0xb4, 0x0e, 0x66,
2278 				     0xa5, 0x07, 0x8b, 0x10, 0x84, 0x0d,
2279 				     0x30, 0x0a, 0xa4, 0x2d, 0x10, 0x2c,
2280 				     0xd4, 0x9a, 0x27, 0xf1, 0x02, 0x8c,
2281 				     0x38, 0x18, 0x7f, 0x7f, 0x95, 0x65,
2282 				     0xf1, 0xa9, 0x3b, 0x7d, 0x1f, 0x4f,
2283 				     0x88, 0xb0, 0x65, 0x62, 0x63, 0x63,
2284 				     0xaa, 0x82, 0xfc, 0x83, 0x3a, 0x3a,
2285 				     0x46, 0x59, 0x6a, 0x89, 0xec, 0xa9,
2286 				     0xb0, 0x4c, 0x5e, 0xbe, 0x46, 0x98,
2287 				     0xd0, 0xd4, 0xb7, 0xe3, 0x1b, 0x30,
2288 				     0x0b, 0xfb, 0xbb, 0x4f, 0x0b, 0xd3,
2289 				     0xe4, 0xa0, 0x80, 0x54, 0xcb, 0x52,
2290 				     0x0a, 0xe8, 0x03, 0x75, 0x8e, 0x96,
2291 				     0xa4, 0x21, 0xaa, 0xbd, 0x7a, 0xfd,
2292 				     0xfa, 0xf8, 0xaf, 0x42, 0xf6, 0x61,
2293 				     0xd2, 0x93, 0xce, 0x66, 0x67, 0xe9,
2294 				     0x02, 0xda, 0x81, 0x0b, 0xb0, 0x1e,
2295 				     0x9e, 0x27, 0x57, 0x98, 0x18, 0x88,
2296 				     0x35, 0x49, 0xc0, 0x88, 0x88, 0x59,
2297 				     0xae, 0x2f, 0x66, 0x59, 0x31, 0x87,
2298 				     0x88, 0xda ),
2299 			    BIGINT ( 0xfe, 0x21, 0x7c, 0xf4, 0xbe, 0xae,
2300 				     0x65, 0xda, 0x89, 0xd2, 0x26, 0xd6,
2301 				     0x9c, 0x65, 0xc6, 0xb6, 0xb4, 0x0a,
2302 				     0x84, 0x11, 0xe1, 0xe8, 0xba, 0xd8,
2303 				     0x16, 0xcf, 0x60, 0x6c, 0x83, 0xa5,
2304 				     0x4a, 0xbf, 0xa2, 0x24, 0x0b, 0x66,
2305 				     0xda, 0xe2, 0x4e, 0x2d, 0xe5, 0x9e,
2306 				     0xbf, 0xad, 0x5c, 0xa3, 0x1e, 0x5c,
2307 				     0xbd, 0xe2, 0x5b, 0x46, 0xcf, 0xcc,
2308 				     0xd5, 0xc9, 0x13, 0x95, 0xc3, 0xdb,
2309 				     0x64, 0xbf, 0xeb, 0x31, 0xa9, 0x8a,
2310 				     0x3b, 0xd2, 0x5d, 0x3b, 0x2e, 0xdc,
2311 				     0x0c, 0xca, 0xab, 0xde, 0x92, 0xae,
2312 				     0x45, 0x35, 0x96, 0xb0, 0xb7, 0xb9,
2313 				     0xe6, 0xfe, 0x28, 0x0d, 0x10, 0x72,
2314 				     0x53, 0x8e, 0x21, 0xc0, 0x33, 0x79,
2315 				     0x01, 0x43, 0x8d, 0x77, 0xc4, 0xaa,
2316 				     0xcf, 0x7f, 0xc3, 0xd1, 0xf5, 0xfd,
2317 				     0x79, 0x81, 0xf6, 0x2e, 0xb7, 0xeb,
2318 				     0x55, 0x5f, 0x74, 0xf0, 0x3a, 0xb9,
2319 				     0x57, 0x07, 0x09, 0x97, 0xa5, 0x4c,
2320 				     0x4a, 0x85 ),
2321 			    BIGINT ( 0xd9, 0xb7, 0xb2, 0xd6, 0xeb, 0xf3,
2322 				     0x66, 0xbe, 0x15, 0x64, 0xad, 0x2e,
2323 				     0x9e, 0xc6, 0xaf, 0x5e, 0xaf, 0x40,
2324 				     0x1e, 0x90, 0x82, 0x2f, 0x98 ),
2325 			    BIGINT ( 0x12, 0x48, 0x31, 0x7f, 0x09, 0xbb,
2326 				     0x8f, 0xd9, 0x02, 0x7e, 0x4a, 0xd0,
2327 				     0x2f, 0x42, 0x7c, 0x17, 0x6e, 0x83,
2328 				     0x74, 0x21, 0x95, 0x47, 0x7d, 0x93,
2329 				     0x4a, 0xce, 0x34, 0x7c, 0xde, 0xc7,
2330 				     0x8f, 0xf6, 0x28, 0x97, 0xba, 0x81,
2331 				     0x9b, 0xcc, 0x54, 0x14, 0x7f, 0xd3,
2332 				     0x93, 0x66, 0x41, 0x8c, 0x0e, 0x47,
2333 				     0xee, 0xc5, 0x5e, 0xd6, 0x5f, 0x01,
2334 				     0x62, 0x97, 0xf1, 0x2b, 0xee, 0x60,
2335 				     0x5e, 0x82, 0x2c, 0x7b, 0x0a, 0xf2,
2336 				     0xc3, 0x23, 0xbf, 0xb9, 0x83, 0xf7,
2337 				     0x97, 0xf5, 0xca, 0x58, 0xd7, 0xf0,
2338 				     0x87, 0x7b, 0xcb, 0x87, 0x69, 0x42,
2339 				     0xbc, 0x05, 0xc4, 0xad, 0xbd, 0x82,
2340 				     0xcf, 0x44, 0x16, 0x4f, 0x46, 0xe0,
2341 				     0xde, 0x2f, 0xfa, 0x77, 0xec, 0xa4,
2342 				     0x23, 0x7d, 0x47, 0x3e, 0x94, 0x19,
2343 				     0x8b, 0xb8, 0x84, 0x81, 0x80, 0x6c,
2344 				     0x1e, 0x31, 0xa3, 0x6d, 0x14, 0x94,
2345 				     0x57, 0x28, 0x99, 0x08, 0x0a, 0xa7,
2346 				     0x98, 0x4b ) );
2347 	bigint_mod_exp_ok ( BIGINT ( 0xda, 0x52, 0xfd, 0x44, 0x5d, 0x11,
2348 				     0x60, 0x6c, 0xec, 0x87, 0xbf, 0x19,
2349 				     0xb8, 0x46, 0xaa, 0x41, 0xfc, 0x10,
2350 				     0xae, 0x47, 0xd6, 0x72, 0x42, 0x57,
2351 				     0xc3, 0x05, 0xca, 0xe3, 0x59, 0x94,
2352 				     0x82, 0x7c, 0xa1, 0xe0, 0xd2, 0x6b,
2353 				     0x77, 0x71, 0x42, 0xa1, 0xf7, 0x84,
2354 				     0xae, 0xf4, 0x6f, 0x44, 0x0d, 0x88,
2355 				     0xa2, 0xc5, 0x45, 0x9b, 0x49, 0x36,
2356 				     0xd4, 0x20, 0x3a, 0x7c, 0x92, 0xdb,
2357 				     0x65, 0xd9, 0x20, 0xd6, 0x71, 0x22,
2358 				     0x90, 0x70, 0xbf, 0xf3, 0x17, 0xe8,
2359 				     0x2c, 0x10, 0xe9, 0x4c, 0x02, 0x69,
2360 				     0x37, 0xa2, 0x91, 0x04, 0x46, 0x11,
2361 				     0xdc, 0xab, 0x5b, 0x1e, 0x3e, 0x31,
2362 				     0xd8, 0x69, 0xf8, 0x48, 0x84, 0x1f,
2363 				     0x56, 0x46, 0xf1, 0xc0, 0x14, 0x3f,
2364 				     0xcc, 0x5d, 0xe2, 0xf7, 0x8b, 0xa4,
2365 				     0x9e, 0x94, 0x32, 0xaa, 0x3c, 0x5e,
2366 				     0x21, 0x70, 0x00, 0x24, 0x2a, 0x1b,
2367 				     0xec, 0x25, 0xb1, 0xb6, 0x83, 0x36,
2368 				     0x5a, 0x95 ),
2369 			    BIGINT ( 0x5e, 0xdc, 0x71, 0x1f, 0x5b, 0x55,
2370 				     0xaa, 0xda, 0x56, 0xf5, 0x93, 0x9b,
2371 				     0xe8, 0xfc, 0x6a, 0x80, 0xe1, 0xe3,
2372 				     0x93, 0xe4, 0xc0, 0x58, 0x6f, 0x22,
2373 				     0xce, 0x9d, 0x6f, 0x84, 0x4c, 0xd4,
2374 				     0x12, 0x44, 0x57, 0x25, 0xca, 0xe5,
2375 				     0x2b, 0x7c, 0x35, 0x88, 0xc7, 0x38,
2376 				     0x25, 0x20, 0x9b, 0x57, 0xf2, 0xf2,
2377 				     0x6c, 0x28, 0x47, 0x9c, 0x3f, 0x91,
2378 				     0x1e, 0x3f, 0xe9, 0xeb, 0x50, 0xd6,
2379 				     0xa7, 0x22, 0x88, 0x6c, 0x71, 0xe5,
2380 				     0x62, 0x2a, 0xb7, 0xce, 0xbe, 0xf7,
2381 				     0x1a, 0x8c, 0x52, 0xa6, 0xff, 0xb8,
2382 				     0x34, 0x83, 0x7e, 0x04, 0xa8, 0x9c,
2383 				     0xa8, 0xa7, 0xd1, 0x05, 0x8e, 0x13,
2384 				     0x03, 0xe0, 0x49, 0xd8, 0x4a, 0xc4,
2385 				     0x4d, 0x38, 0x21, 0x5b, 0x62, 0xc2,
2386 				     0x38, 0x23, 0x7c, 0x9e, 0xf1, 0xe9,
2387 				     0xb6, 0x9a, 0x75, 0x42, 0x14, 0x99,
2388 				     0x63, 0x36, 0x13, 0x4c, 0x2d, 0x3a,
2389 				     0x77, 0xd4, 0x74, 0xb7, 0x30, 0xb2,
2390 				     0x00, 0x0f ),
2391 			    BIGINT ( 0xe3, 0xe5, 0x3b, 0xb5, 0x92, 0x5a,
2392 				     0xc6, 0xfa, 0x8f, 0xe8, 0x00, 0xb9,
2393 				     0x5c, 0xa0, 0xb6, 0x3e, 0x5e, 0x14,
2394 				     0x12, 0xa9, 0xdd, 0x2a, 0x3d, 0x4d,
2395 				     0xa3, 0x91, 0x6a, 0x56, 0x99, 0xc2,
2396 				     0x6c, 0x8e, 0xda, 0xb0, 0x5a, 0x2a,
2397 				     0x37, 0x55, 0x8b, 0xd3, 0x9b, 0xb6,
2398 				     0x1d, 0x49, 0x7d, 0x81, 0x76, 0x1c,
2399 				     0x2e, 0xb9, 0x92, 0x6d, 0xfa, 0x54,
2400 				     0x53, 0xfc, 0x74, 0x9b, 0x6b, 0x63,
2401 				     0x95, 0x1a, 0x89, 0xcc, 0xbd, 0x36,
2402 				     0xc5, 0x31, 0x7f, 0xf5, 0x31, 0x69,
2403 				     0x40, 0xd5, 0x7b, 0x94, 0x5d, 0xa9,
2404 				     0xd1, 0x34, 0x95, 0xa1, 0x8b, 0xa5,
2405 				     0xb5, 0x83, 0xda, 0xb5, 0x9d, 0x5b,
2406 				     0x74, 0x41, 0xad, 0x81, 0x45, 0x40,
2407 				     0x9b, 0xc3, 0xe8, 0xfe, 0x47, 0xdc,
2408 				     0xb0, 0xc3, 0x34, 0x5d, 0xf6, 0x3c,
2409 				     0x1d, 0x07, 0x76, 0xd9, 0x25, 0xca,
2410 				     0xa2, 0x39, 0x6c, 0xa8, 0xae, 0x30,
2411 				     0x4a, 0xde, 0xfb, 0xeb, 0x19, 0x80,
2412 				     0x5e, 0x49 ),
2413 			    BIGINT ( 0x4b, 0x0e, 0x74, 0xb8, 0xa7, 0x92,
2414 				     0x74, 0xd9, 0x50, 0xf6, 0x1b, 0x67,
2415 				     0x76, 0x76, 0x56, 0x6c, 0x09, 0x9c,
2416 				     0x01, 0xda, 0xaf, 0xa3, 0xca, 0xb2,
2417 				     0x12, 0x85, 0x52, 0x24, 0xe9, 0x7e,
2418 				     0x2b, 0xf2, 0x6e, 0xe9, 0x1a, 0x10,
2419 				     0x5d, 0xa0, 0x25, 0x46, 0x8f, 0x2a,
2420 				     0x95, 0x62, 0x50, 0xb6, 0x66, 0x43,
2421 				     0x37, 0x8b, 0xcb, 0x05, 0xf8, 0x61,
2422 				     0x59, 0xf9, 0xdd, 0xd2, 0x68, 0x72,
2423 				     0xfa, 0x88, 0x13, 0x36, 0xd8, 0x24,
2424 				     0x73, 0xec, 0x47, 0x44, 0xdd, 0x45,
2425 				     0x8a, 0x59, 0xd2, 0xbd, 0x43, 0xe3,
2426 				     0x05, 0x16, 0xd5, 0x9b, 0x1c, 0x8a,
2427 				     0x4b, 0x07, 0xda, 0x58, 0x0d, 0x4a,
2428 				     0x4e, 0xe7, 0x15, 0xfc, 0xbd, 0x95,
2429 				     0xf7, 0x18, 0xa5, 0xa7, 0x93, 0xff,
2430 				     0xf8, 0x1f, 0xd4, 0x6b, 0x07, 0xc6,
2431 				     0x5d, 0x90, 0x73, 0x57, 0x57, 0x37,
2432 				     0xfa, 0x83, 0xd4, 0x7c, 0xe9, 0x77,
2433 				     0x46, 0x91, 0x3a, 0x50, 0x0d, 0x6a,
2434 				     0x25, 0xd0 ) );
2435 }
2436 
2437 /** Big integer self-test */
2438 struct self_test bigint_test __self_test = {
2439 	.name = "bigint",
2440 	.exec = bigint_test_exec,
2441 };
2442