]> begriffs open source - freertos/blob - FreeRTOS-Plus/Source/WolfSSL/wolfcrypt/src/fp_mont_small.i
Create minor optimisations (just an asm instruction or two) by using consts in a...
[freertos] / FreeRTOS-Plus / Source / WolfSSL / wolfcrypt / src / fp_mont_small.i
1 /* fp_mont_small.i
2  *
3  * Copyright (C) 2006-2015 wolfSSL Inc.
4  *
5  * This file is part of wolfSSL. (formerly known as CyaSSL)
6  *
7  * wolfSSL is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 2 of the License, or
10  * (at your option) any later version.
11  *
12  * wolfSSL is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
20  */
21
22
23 #ifdef TFM_SMALL_MONT_SET
24 /* computes x/R == x (mod N) via Montgomery Reduction */
25 void fp_montgomery_reduce_small(fp_int *a, fp_int *m, fp_digit mp)
26 {
27    fp_digit c[FP_SIZE], *_c, *tmpm, mu, cy;
28    int      oldused, x, y, pa;
29
30 #if defined(USE_MEMSET)
31    /* now zero the buff */
32    memset(c, 0, sizeof c);
33 #endif
34    pa = m->used;
35
36    /* copy the input */
37    oldused = a->used;
38    for (x = 0; x < oldused; x++) {
39        c[x] = a->dp[x];
40    }
41 #if !defined(USE_MEMSET)
42    for (; x < 2*pa+3; x++) {
43        c[x] = 0;
44    }
45 #endif
46    MONT_START;
47
48    switch (pa) {
49       case 1:
50             x = 0; cy   = 0;
51             LOOP_START;
52             _c   = c + 0;
53             tmpm = m->dp;
54 #ifdef INNERMUL8
55             INNERMUL; ++_c;
56 #else
57             INNERMUL; ++_c;
58 #endif
59             LOOP_END;
60             while (cy) {
61                PROPCARRY;
62                ++_c;
63             }
64          break;
65       case 2:
66             x = 0; cy   = 0;
67             LOOP_START;
68             _c   = c + 0;
69             tmpm = m->dp;
70 #ifdef INNERMUL8
71             INNERMUL; ++_c;
72             INNERMUL; ++_c;
73 #else
74             INNERMUL; ++_c;
75             INNERMUL; ++_c;
76 #endif
77             LOOP_END;
78             while (cy) {
79                PROPCARRY;
80                ++_c;
81             }
82             x = 1; cy   = 0;
83             LOOP_START;
84             _c   = c + 1;
85             tmpm = m->dp;
86 #ifdef INNERMUL8
87             INNERMUL; ++_c;
88             INNERMUL; ++_c;
89 #else
90             INNERMUL; ++_c;
91             INNERMUL; ++_c;
92 #endif
93             LOOP_END;
94             while (cy) {
95                PROPCARRY;
96                ++_c;
97             }
98          break;
99       case 3:
100             x = 0; cy   = 0;
101             LOOP_START;
102             _c   = c + 0;
103             tmpm = m->dp;
104 #ifdef INNERMUL8
105             INNERMUL; ++_c;
106             INNERMUL; ++_c;
107             INNERMUL; ++_c;
108 #else
109             INNERMUL; ++_c;
110             INNERMUL; ++_c;
111             INNERMUL; ++_c;
112 #endif
113             LOOP_END;
114             while (cy) {
115                PROPCARRY;
116                ++_c;
117             }
118             x = 1; cy   = 0;
119             LOOP_START;
120             _c   = c + 1;
121             tmpm = m->dp;
122 #ifdef INNERMUL8
123             INNERMUL; ++_c;
124             INNERMUL; ++_c;
125             INNERMUL; ++_c;
126 #else
127             INNERMUL; ++_c;
128             INNERMUL; ++_c;
129             INNERMUL; ++_c;
130 #endif
131             LOOP_END;
132             while (cy) {
133                PROPCARRY;
134                ++_c;
135             }
136             x = 2; cy   = 0;
137             LOOP_START;
138             _c   = c + 2;
139             tmpm = m->dp;
140 #ifdef INNERMUL8
141             INNERMUL; ++_c;
142             INNERMUL; ++_c;
143             INNERMUL; ++_c;
144 #else
145             INNERMUL; ++_c;
146             INNERMUL; ++_c;
147             INNERMUL; ++_c;
148 #endif
149             LOOP_END;
150             while (cy) {
151                PROPCARRY;
152                ++_c;
153             }
154          break;
155       case 4:
156             x = 0; cy   = 0;
157             LOOP_START;
158             _c   = c + 0;
159             tmpm = m->dp;
160 #ifdef INNERMUL8
161             INNERMUL; ++_c;
162             INNERMUL; ++_c;
163             INNERMUL; ++_c;
164             INNERMUL; ++_c;
165 #else
166             INNERMUL; ++_c;
167             INNERMUL; ++_c;
168             INNERMUL; ++_c;
169             INNERMUL; ++_c;
170 #endif
171             LOOP_END;
172             while (cy) {
173                PROPCARRY;
174                ++_c;
175             }
176             x = 1; cy   = 0;
177             LOOP_START;
178             _c   = c + 1;
179             tmpm = m->dp;
180 #ifdef INNERMUL8
181             INNERMUL; ++_c;
182             INNERMUL; ++_c;
183             INNERMUL; ++_c;
184             INNERMUL; ++_c;
185 #else
186             INNERMUL; ++_c;
187             INNERMUL; ++_c;
188             INNERMUL; ++_c;
189             INNERMUL; ++_c;
190 #endif
191             LOOP_END;
192             while (cy) {
193                PROPCARRY;
194                ++_c;
195             }
196             x = 2; cy   = 0;
197             LOOP_START;
198             _c   = c + 2;
199             tmpm = m->dp;
200 #ifdef INNERMUL8
201             INNERMUL; ++_c;
202             INNERMUL; ++_c;
203             INNERMUL; ++_c;
204             INNERMUL; ++_c;
205 #else
206             INNERMUL; ++_c;
207             INNERMUL; ++_c;
208             INNERMUL; ++_c;
209             INNERMUL; ++_c;
210 #endif
211             LOOP_END;
212             while (cy) {
213                PROPCARRY;
214                ++_c;
215             }
216             x = 3; cy   = 0;
217             LOOP_START;
218             _c   = c + 3;
219             tmpm = m->dp;
220 #ifdef INNERMUL8
221             INNERMUL; ++_c;
222             INNERMUL; ++_c;
223             INNERMUL; ++_c;
224             INNERMUL; ++_c;
225 #else
226             INNERMUL; ++_c;
227             INNERMUL; ++_c;
228             INNERMUL; ++_c;
229             INNERMUL; ++_c;
230 #endif
231             LOOP_END;
232             while (cy) {
233                PROPCARRY;
234                ++_c;
235             }
236          break;
237       case 5:
238             x = 0; cy   = 0;
239             LOOP_START;
240             _c   = c + 0;
241             tmpm = m->dp;
242 #ifdef INNERMUL8
243             INNERMUL; ++_c;
244             INNERMUL; ++_c;
245             INNERMUL; ++_c;
246             INNERMUL; ++_c;
247             INNERMUL; ++_c;
248 #else
249             INNERMUL; ++_c;
250             INNERMUL; ++_c;
251             INNERMUL; ++_c;
252             INNERMUL; ++_c;
253             INNERMUL; ++_c;
254 #endif
255             LOOP_END;
256             while (cy) {
257                PROPCARRY;
258                ++_c;
259             }
260             x = 1; cy   = 0;
261             LOOP_START;
262             _c   = c + 1;
263             tmpm = m->dp;
264 #ifdef INNERMUL8
265             INNERMUL; ++_c;
266             INNERMUL; ++_c;
267             INNERMUL; ++_c;
268             INNERMUL; ++_c;
269             INNERMUL; ++_c;
270 #else
271             INNERMUL; ++_c;
272             INNERMUL; ++_c;
273             INNERMUL; ++_c;
274             INNERMUL; ++_c;
275             INNERMUL; ++_c;
276 #endif
277             LOOP_END;
278             while (cy) {
279                PROPCARRY;
280                ++_c;
281             }
282             x = 2; cy   = 0;
283             LOOP_START;
284             _c   = c + 2;
285             tmpm = m->dp;
286 #ifdef INNERMUL8
287             INNERMUL; ++_c;
288             INNERMUL; ++_c;
289             INNERMUL; ++_c;
290             INNERMUL; ++_c;
291             INNERMUL; ++_c;
292 #else
293             INNERMUL; ++_c;
294             INNERMUL; ++_c;
295             INNERMUL; ++_c;
296             INNERMUL; ++_c;
297             INNERMUL; ++_c;
298 #endif
299             LOOP_END;
300             while (cy) {
301                PROPCARRY;
302                ++_c;
303             }
304             x = 3; cy   = 0;
305             LOOP_START;
306             _c   = c + 3;
307             tmpm = m->dp;
308 #ifdef INNERMUL8
309             INNERMUL; ++_c;
310             INNERMUL; ++_c;
311             INNERMUL; ++_c;
312             INNERMUL; ++_c;
313             INNERMUL; ++_c;
314 #else
315             INNERMUL; ++_c;
316             INNERMUL; ++_c;
317             INNERMUL; ++_c;
318             INNERMUL; ++_c;
319             INNERMUL; ++_c;
320 #endif
321             LOOP_END;
322             while (cy) {
323                PROPCARRY;
324                ++_c;
325             }
326             x = 4; cy   = 0;
327             LOOP_START;
328             _c   = c + 4;
329             tmpm = m->dp;
330 #ifdef INNERMUL8
331             INNERMUL; ++_c;
332             INNERMUL; ++_c;
333             INNERMUL; ++_c;
334             INNERMUL; ++_c;
335             INNERMUL; ++_c;
336 #else
337             INNERMUL; ++_c;
338             INNERMUL; ++_c;
339             INNERMUL; ++_c;
340             INNERMUL; ++_c;
341             INNERMUL; ++_c;
342 #endif
343             LOOP_END;
344             while (cy) {
345                PROPCARRY;
346                ++_c;
347             }
348          break;
349       case 6:
350             x = 0; cy   = 0;
351             LOOP_START;
352             _c   = c + 0;
353             tmpm = m->dp;
354 #ifdef INNERMUL8
355             INNERMUL; ++_c;
356             INNERMUL; ++_c;
357             INNERMUL; ++_c;
358             INNERMUL; ++_c;
359             INNERMUL; ++_c;
360             INNERMUL; ++_c;
361 #else
362             INNERMUL; ++_c;
363             INNERMUL; ++_c;
364             INNERMUL; ++_c;
365             INNERMUL; ++_c;
366             INNERMUL; ++_c;
367             INNERMUL; ++_c;
368 #endif
369             LOOP_END;
370             while (cy) {
371                PROPCARRY;
372                ++_c;
373             }
374             x = 1; cy   = 0;
375             LOOP_START;
376             _c   = c + 1;
377             tmpm = m->dp;
378 #ifdef INNERMUL8
379             INNERMUL; ++_c;
380             INNERMUL; ++_c;
381             INNERMUL; ++_c;
382             INNERMUL; ++_c;
383             INNERMUL; ++_c;
384             INNERMUL; ++_c;
385 #else
386             INNERMUL; ++_c;
387             INNERMUL; ++_c;
388             INNERMUL; ++_c;
389             INNERMUL; ++_c;
390             INNERMUL; ++_c;
391             INNERMUL; ++_c;
392 #endif
393             LOOP_END;
394             while (cy) {
395                PROPCARRY;
396                ++_c;
397             }
398             x = 2; cy   = 0;
399             LOOP_START;
400             _c   = c + 2;
401             tmpm = m->dp;
402 #ifdef INNERMUL8
403             INNERMUL; ++_c;
404             INNERMUL; ++_c;
405             INNERMUL; ++_c;
406             INNERMUL; ++_c;
407             INNERMUL; ++_c;
408             INNERMUL; ++_c;
409 #else
410             INNERMUL; ++_c;
411             INNERMUL; ++_c;
412             INNERMUL; ++_c;
413             INNERMUL; ++_c;
414             INNERMUL; ++_c;
415             INNERMUL; ++_c;
416 #endif
417             LOOP_END;
418             while (cy) {
419                PROPCARRY;
420                ++_c;
421             }
422             x = 3; cy   = 0;
423             LOOP_START;
424             _c   = c + 3;
425             tmpm = m->dp;
426 #ifdef INNERMUL8
427             INNERMUL; ++_c;
428             INNERMUL; ++_c;
429             INNERMUL; ++_c;
430             INNERMUL; ++_c;
431             INNERMUL; ++_c;
432             INNERMUL; ++_c;
433 #else
434             INNERMUL; ++_c;
435             INNERMUL; ++_c;
436             INNERMUL; ++_c;
437             INNERMUL; ++_c;
438             INNERMUL; ++_c;
439             INNERMUL; ++_c;
440 #endif
441             LOOP_END;
442             while (cy) {
443                PROPCARRY;
444                ++_c;
445             }
446             x = 4; cy   = 0;
447             LOOP_START;
448             _c   = c + 4;
449             tmpm = m->dp;
450 #ifdef INNERMUL8
451             INNERMUL; ++_c;
452             INNERMUL; ++_c;
453             INNERMUL; ++_c;
454             INNERMUL; ++_c;
455             INNERMUL; ++_c;
456             INNERMUL; ++_c;
457 #else
458             INNERMUL; ++_c;
459             INNERMUL; ++_c;
460             INNERMUL; ++_c;
461             INNERMUL; ++_c;
462             INNERMUL; ++_c;
463             INNERMUL; ++_c;
464 #endif
465             LOOP_END;
466             while (cy) {
467                PROPCARRY;
468                ++_c;
469             }
470             x = 5; cy   = 0;
471             LOOP_START;
472             _c   = c + 5;
473             tmpm = m->dp;
474 #ifdef INNERMUL8
475             INNERMUL; ++_c;
476             INNERMUL; ++_c;
477             INNERMUL; ++_c;
478             INNERMUL; ++_c;
479             INNERMUL; ++_c;
480             INNERMUL; ++_c;
481 #else
482             INNERMUL; ++_c;
483             INNERMUL; ++_c;
484             INNERMUL; ++_c;
485             INNERMUL; ++_c;
486             INNERMUL; ++_c;
487             INNERMUL; ++_c;
488 #endif
489             LOOP_END;
490             while (cy) {
491                PROPCARRY;
492                ++_c;
493             }
494          break;
495       case 7:
496             x = 0; cy   = 0;
497             LOOP_START;
498             _c   = c + 0;
499             tmpm = m->dp;
500 #ifdef INNERMUL8
501             INNERMUL; ++_c;
502             INNERMUL; ++_c;
503             INNERMUL; ++_c;
504             INNERMUL; ++_c;
505             INNERMUL; ++_c;
506             INNERMUL; ++_c;
507             INNERMUL; ++_c;
508 #else
509             INNERMUL; ++_c;
510             INNERMUL; ++_c;
511             INNERMUL; ++_c;
512             INNERMUL; ++_c;
513             INNERMUL; ++_c;
514             INNERMUL; ++_c;
515             INNERMUL; ++_c;
516 #endif
517             LOOP_END;
518             while (cy) {
519                PROPCARRY;
520                ++_c;
521             }
522             x = 1; cy   = 0;
523             LOOP_START;
524             _c   = c + 1;
525             tmpm = m->dp;
526 #ifdef INNERMUL8
527             INNERMUL; ++_c;
528             INNERMUL; ++_c;
529             INNERMUL; ++_c;
530             INNERMUL; ++_c;
531             INNERMUL; ++_c;
532             INNERMUL; ++_c;
533             INNERMUL; ++_c;
534 #else
535             INNERMUL; ++_c;
536             INNERMUL; ++_c;
537             INNERMUL; ++_c;
538             INNERMUL; ++_c;
539             INNERMUL; ++_c;
540             INNERMUL; ++_c;
541             INNERMUL; ++_c;
542 #endif
543             LOOP_END;
544             while (cy) {
545                PROPCARRY;
546                ++_c;
547             }
548             x = 2; cy   = 0;
549             LOOP_START;
550             _c   = c + 2;
551             tmpm = m->dp;
552 #ifdef INNERMUL8
553             INNERMUL; ++_c;
554             INNERMUL; ++_c;
555             INNERMUL; ++_c;
556             INNERMUL; ++_c;
557             INNERMUL; ++_c;
558             INNERMUL; ++_c;
559             INNERMUL; ++_c;
560 #else
561             INNERMUL; ++_c;
562             INNERMUL; ++_c;
563             INNERMUL; ++_c;
564             INNERMUL; ++_c;
565             INNERMUL; ++_c;
566             INNERMUL; ++_c;
567             INNERMUL; ++_c;
568 #endif
569             LOOP_END;
570             while (cy) {
571                PROPCARRY;
572                ++_c;
573             }
574             x = 3; cy   = 0;
575             LOOP_START;
576             _c   = c + 3;
577             tmpm = m->dp;
578 #ifdef INNERMUL8
579             INNERMUL; ++_c;
580             INNERMUL; ++_c;
581             INNERMUL; ++_c;
582             INNERMUL; ++_c;
583             INNERMUL; ++_c;
584             INNERMUL; ++_c;
585             INNERMUL; ++_c;
586 #else
587             INNERMUL; ++_c;
588             INNERMUL; ++_c;
589             INNERMUL; ++_c;
590             INNERMUL; ++_c;
591             INNERMUL; ++_c;
592             INNERMUL; ++_c;
593             INNERMUL; ++_c;
594 #endif
595             LOOP_END;
596             while (cy) {
597                PROPCARRY;
598                ++_c;
599             }
600             x = 4; cy   = 0;
601             LOOP_START;
602             _c   = c + 4;
603             tmpm = m->dp;
604 #ifdef INNERMUL8
605             INNERMUL; ++_c;
606             INNERMUL; ++_c;
607             INNERMUL; ++_c;
608             INNERMUL; ++_c;
609             INNERMUL; ++_c;
610             INNERMUL; ++_c;
611             INNERMUL; ++_c;
612 #else
613             INNERMUL; ++_c;
614             INNERMUL; ++_c;
615             INNERMUL; ++_c;
616             INNERMUL; ++_c;
617             INNERMUL; ++_c;
618             INNERMUL; ++_c;
619             INNERMUL; ++_c;
620 #endif
621             LOOP_END;
622             while (cy) {
623                PROPCARRY;
624                ++_c;
625             }
626             x = 5; cy   = 0;
627             LOOP_START;
628             _c   = c + 5;
629             tmpm = m->dp;
630 #ifdef INNERMUL8
631             INNERMUL; ++_c;
632             INNERMUL; ++_c;
633             INNERMUL; ++_c;
634             INNERMUL; ++_c;
635             INNERMUL; ++_c;
636             INNERMUL; ++_c;
637             INNERMUL; ++_c;
638 #else
639             INNERMUL; ++_c;
640             INNERMUL; ++_c;
641             INNERMUL; ++_c;
642             INNERMUL; ++_c;
643             INNERMUL; ++_c;
644             INNERMUL; ++_c;
645             INNERMUL; ++_c;
646 #endif
647             LOOP_END;
648             while (cy) {
649                PROPCARRY;
650                ++_c;
651             }
652             x = 6; cy   = 0;
653             LOOP_START;
654             _c   = c + 6;
655             tmpm = m->dp;
656 #ifdef INNERMUL8
657             INNERMUL; ++_c;
658             INNERMUL; ++_c;
659             INNERMUL; ++_c;
660             INNERMUL; ++_c;
661             INNERMUL; ++_c;
662             INNERMUL; ++_c;
663             INNERMUL; ++_c;
664 #else
665             INNERMUL; ++_c;
666             INNERMUL; ++_c;
667             INNERMUL; ++_c;
668             INNERMUL; ++_c;
669             INNERMUL; ++_c;
670             INNERMUL; ++_c;
671             INNERMUL; ++_c;
672 #endif
673             LOOP_END;
674             while (cy) {
675                PROPCARRY;
676                ++_c;
677             }
678          break;
679       case 8:
680             x = 0; cy   = 0;
681             LOOP_START;
682             _c   = c + 0;
683             tmpm = m->dp;
684 #ifdef INNERMUL8
685             INNERMUL8; _c += 8; tmpm += 8;
686 #else
687             INNERMUL; ++_c;
688             INNERMUL; ++_c;
689             INNERMUL; ++_c;
690             INNERMUL; ++_c;
691             INNERMUL; ++_c;
692             INNERMUL; ++_c;
693             INNERMUL; ++_c;
694             INNERMUL; ++_c;
695 #endif
696             LOOP_END;
697             while (cy) {
698                PROPCARRY;
699                ++_c;
700             }
701             x = 1; cy   = 0;
702             LOOP_START;
703             _c   = c + 1;
704             tmpm = m->dp;
705 #ifdef INNERMUL8
706             INNERMUL8; _c += 8; tmpm += 8;
707 #else
708             INNERMUL; ++_c;
709             INNERMUL; ++_c;
710             INNERMUL; ++_c;
711             INNERMUL; ++_c;
712             INNERMUL; ++_c;
713             INNERMUL; ++_c;
714             INNERMUL; ++_c;
715             INNERMUL; ++_c;
716 #endif
717             LOOP_END;
718             while (cy) {
719                PROPCARRY;
720                ++_c;
721             }
722             x = 2; cy   = 0;
723             LOOP_START;
724             _c   = c + 2;
725             tmpm = m->dp;
726 #ifdef INNERMUL8
727             INNERMUL8; _c += 8; tmpm += 8;
728 #else
729             INNERMUL; ++_c;
730             INNERMUL; ++_c;
731             INNERMUL; ++_c;
732             INNERMUL; ++_c;
733             INNERMUL; ++_c;
734             INNERMUL; ++_c;
735             INNERMUL; ++_c;
736             INNERMUL; ++_c;
737 #endif
738             LOOP_END;
739             while (cy) {
740                PROPCARRY;
741                ++_c;
742             }
743             x = 3; cy   = 0;
744             LOOP_START;
745             _c   = c + 3;
746             tmpm = m->dp;
747 #ifdef INNERMUL8
748             INNERMUL8; _c += 8; tmpm += 8;
749 #else
750             INNERMUL; ++_c;
751             INNERMUL; ++_c;
752             INNERMUL; ++_c;
753             INNERMUL; ++_c;
754             INNERMUL; ++_c;
755             INNERMUL; ++_c;
756             INNERMUL; ++_c;
757             INNERMUL; ++_c;
758 #endif
759             LOOP_END;
760             while (cy) {
761                PROPCARRY;
762                ++_c;
763             }
764             x = 4; cy   = 0;
765             LOOP_START;
766             _c   = c + 4;
767             tmpm = m->dp;
768 #ifdef INNERMUL8
769             INNERMUL8; _c += 8; tmpm += 8;
770 #else
771             INNERMUL; ++_c;
772             INNERMUL; ++_c;
773             INNERMUL; ++_c;
774             INNERMUL; ++_c;
775             INNERMUL; ++_c;
776             INNERMUL; ++_c;
777             INNERMUL; ++_c;
778             INNERMUL; ++_c;
779 #endif
780             LOOP_END;
781             while (cy) {
782                PROPCARRY;
783                ++_c;
784             }
785             x = 5; cy   = 0;
786             LOOP_START;
787             _c   = c + 5;
788             tmpm = m->dp;
789 #ifdef INNERMUL8
790             INNERMUL8; _c += 8; tmpm += 8;
791 #else
792             INNERMUL; ++_c;
793             INNERMUL; ++_c;
794             INNERMUL; ++_c;
795             INNERMUL; ++_c;
796             INNERMUL; ++_c;
797             INNERMUL; ++_c;
798             INNERMUL; ++_c;
799             INNERMUL; ++_c;
800 #endif
801             LOOP_END;
802             while (cy) {
803                PROPCARRY;
804                ++_c;
805             }
806             x = 6; cy   = 0;
807             LOOP_START;
808             _c   = c + 6;
809             tmpm = m->dp;
810 #ifdef INNERMUL8
811             INNERMUL8; _c += 8; tmpm += 8;
812 #else
813             INNERMUL; ++_c;
814             INNERMUL; ++_c;
815             INNERMUL; ++_c;
816             INNERMUL; ++_c;
817             INNERMUL; ++_c;
818             INNERMUL; ++_c;
819             INNERMUL; ++_c;
820             INNERMUL; ++_c;
821 #endif
822             LOOP_END;
823             while (cy) {
824                PROPCARRY;
825                ++_c;
826             }
827             x = 7; cy   = 0;
828             LOOP_START;
829             _c   = c + 7;
830             tmpm = m->dp;
831 #ifdef INNERMUL8
832             INNERMUL8; _c += 8; tmpm += 8;
833 #else
834             INNERMUL; ++_c;
835             INNERMUL; ++_c;
836             INNERMUL; ++_c;
837             INNERMUL; ++_c;
838             INNERMUL; ++_c;
839             INNERMUL; ++_c;
840             INNERMUL; ++_c;
841             INNERMUL; ++_c;
842 #endif
843             LOOP_END;
844             while (cy) {
845                PROPCARRY;
846                ++_c;
847             }
848          break;
849       case 9:
850             x = 0; cy   = 0;
851             LOOP_START;
852             _c   = c + 0;
853             tmpm = m->dp;
854 #ifdef INNERMUL8
855             INNERMUL8; _c += 8; tmpm += 8;
856             INNERMUL; ++_c;
857 #else
858             INNERMUL; ++_c;
859             INNERMUL; ++_c;
860             INNERMUL; ++_c;
861             INNERMUL; ++_c;
862             INNERMUL; ++_c;
863             INNERMUL; ++_c;
864             INNERMUL; ++_c;
865             INNERMUL; ++_c;
866             INNERMUL; ++_c;
867 #endif
868             LOOP_END;
869             while (cy) {
870                PROPCARRY;
871                ++_c;
872             }
873             x = 1; cy   = 0;
874             LOOP_START;
875             _c   = c + 1;
876             tmpm = m->dp;
877 #ifdef INNERMUL8
878             INNERMUL8; _c += 8; tmpm += 8;
879             INNERMUL; ++_c;
880 #else
881             INNERMUL; ++_c;
882             INNERMUL; ++_c;
883             INNERMUL; ++_c;
884             INNERMUL; ++_c;
885             INNERMUL; ++_c;
886             INNERMUL; ++_c;
887             INNERMUL; ++_c;
888             INNERMUL; ++_c;
889             INNERMUL; ++_c;
890 #endif
891             LOOP_END;
892             while (cy) {
893                PROPCARRY;
894                ++_c;
895             }
896             x = 2; cy   = 0;
897             LOOP_START;
898             _c   = c + 2;
899             tmpm = m->dp;
900 #ifdef INNERMUL8
901             INNERMUL8; _c += 8; tmpm += 8;
902             INNERMUL; ++_c;
903 #else
904             INNERMUL; ++_c;
905             INNERMUL; ++_c;
906             INNERMUL; ++_c;
907             INNERMUL; ++_c;
908             INNERMUL; ++_c;
909             INNERMUL; ++_c;
910             INNERMUL; ++_c;
911             INNERMUL; ++_c;
912             INNERMUL; ++_c;
913 #endif
914             LOOP_END;
915             while (cy) {
916                PROPCARRY;
917                ++_c;
918             }
919             x = 3; cy   = 0;
920             LOOP_START;
921             _c   = c + 3;
922             tmpm = m->dp;
923 #ifdef INNERMUL8
924             INNERMUL8; _c += 8; tmpm += 8;
925             INNERMUL; ++_c;
926 #else
927             INNERMUL; ++_c;
928             INNERMUL; ++_c;
929             INNERMUL; ++_c;
930             INNERMUL; ++_c;
931             INNERMUL; ++_c;
932             INNERMUL; ++_c;
933             INNERMUL; ++_c;
934             INNERMUL; ++_c;
935             INNERMUL; ++_c;
936 #endif
937             LOOP_END;
938             while (cy) {
939                PROPCARRY;
940                ++_c;
941             }
942             x = 4; cy   = 0;
943             LOOP_START;
944             _c   = c + 4;
945             tmpm = m->dp;
946 #ifdef INNERMUL8
947             INNERMUL8; _c += 8; tmpm += 8;
948             INNERMUL; ++_c;
949 #else
950             INNERMUL; ++_c;
951             INNERMUL; ++_c;
952             INNERMUL; ++_c;
953             INNERMUL; ++_c;
954             INNERMUL; ++_c;
955             INNERMUL; ++_c;
956             INNERMUL; ++_c;
957             INNERMUL; ++_c;
958             INNERMUL; ++_c;
959 #endif
960             LOOP_END;
961             while (cy) {
962                PROPCARRY;
963                ++_c;
964             }
965             x = 5; cy   = 0;
966             LOOP_START;
967             _c   = c + 5;
968             tmpm = m->dp;
969 #ifdef INNERMUL8
970             INNERMUL8; _c += 8; tmpm += 8;
971             INNERMUL; ++_c;
972 #else
973             INNERMUL; ++_c;
974             INNERMUL; ++_c;
975             INNERMUL; ++_c;
976             INNERMUL; ++_c;
977             INNERMUL; ++_c;
978             INNERMUL; ++_c;
979             INNERMUL; ++_c;
980             INNERMUL; ++_c;
981             INNERMUL; ++_c;
982 #endif
983             LOOP_END;
984             while (cy) {
985                PROPCARRY;
986                ++_c;
987             }
988             x = 6; cy   = 0;
989             LOOP_START;
990             _c   = c + 6;
991             tmpm = m->dp;
992 #ifdef INNERMUL8
993             INNERMUL8; _c += 8; tmpm += 8;
994             INNERMUL; ++_c;
995 #else
996             INNERMUL; ++_c;
997             INNERMUL; ++_c;
998             INNERMUL; ++_c;
999             INNERMUL; ++_c;
1000             INNERMUL; ++_c;
1001             INNERMUL; ++_c;
1002             INNERMUL; ++_c;
1003             INNERMUL; ++_c;
1004             INNERMUL; ++_c;
1005 #endif
1006             LOOP_END;
1007             while (cy) {
1008                PROPCARRY;
1009                ++_c;
1010             }
1011             x = 7; cy   = 0;
1012             LOOP_START;
1013             _c   = c + 7;
1014             tmpm = m->dp;
1015 #ifdef INNERMUL8
1016             INNERMUL8; _c += 8; tmpm += 8;
1017             INNERMUL; ++_c;
1018 #else
1019             INNERMUL; ++_c;
1020             INNERMUL; ++_c;
1021             INNERMUL; ++_c;
1022             INNERMUL; ++_c;
1023             INNERMUL; ++_c;
1024             INNERMUL; ++_c;
1025             INNERMUL; ++_c;
1026             INNERMUL; ++_c;
1027             INNERMUL; ++_c;
1028 #endif
1029             LOOP_END;
1030             while (cy) {
1031                PROPCARRY;
1032                ++_c;
1033             }
1034             x = 8; cy   = 0;
1035             LOOP_START;
1036             _c   = c + 8;
1037             tmpm = m->dp;
1038 #ifdef INNERMUL8
1039             INNERMUL8; _c += 8; tmpm += 8;
1040             INNERMUL; ++_c;
1041 #else
1042             INNERMUL; ++_c;
1043             INNERMUL; ++_c;
1044             INNERMUL; ++_c;
1045             INNERMUL; ++_c;
1046             INNERMUL; ++_c;
1047             INNERMUL; ++_c;
1048             INNERMUL; ++_c;
1049             INNERMUL; ++_c;
1050             INNERMUL; ++_c;
1051 #endif
1052             LOOP_END;
1053             while (cy) {
1054                PROPCARRY;
1055                ++_c;
1056             }
1057          break;
1058       case 10:
1059             x = 0; cy   = 0;
1060             LOOP_START;
1061             _c   = c + 0;
1062             tmpm = m->dp;
1063 #ifdef INNERMUL8
1064             INNERMUL8; _c += 8; tmpm += 8;
1065             INNERMUL; ++_c;
1066             INNERMUL; ++_c;
1067 #else
1068             INNERMUL; ++_c;
1069             INNERMUL; ++_c;
1070             INNERMUL; ++_c;
1071             INNERMUL; ++_c;
1072             INNERMUL; ++_c;
1073             INNERMUL; ++_c;
1074             INNERMUL; ++_c;
1075             INNERMUL; ++_c;
1076             INNERMUL; ++_c;
1077             INNERMUL; ++_c;
1078 #endif
1079             LOOP_END;
1080             while (cy) {
1081                PROPCARRY;
1082                ++_c;
1083             }
1084             x = 1; cy   = 0;
1085             LOOP_START;
1086             _c   = c + 1;
1087             tmpm = m->dp;
1088 #ifdef INNERMUL8
1089             INNERMUL8; _c += 8; tmpm += 8;
1090             INNERMUL; ++_c;
1091             INNERMUL; ++_c;
1092 #else
1093             INNERMUL; ++_c;
1094             INNERMUL; ++_c;
1095             INNERMUL; ++_c;
1096             INNERMUL; ++_c;
1097             INNERMUL; ++_c;
1098             INNERMUL; ++_c;
1099             INNERMUL; ++_c;
1100             INNERMUL; ++_c;
1101             INNERMUL; ++_c;
1102             INNERMUL; ++_c;
1103 #endif
1104             LOOP_END;
1105             while (cy) {
1106                PROPCARRY;
1107                ++_c;
1108             }
1109             x = 2; cy   = 0;
1110             LOOP_START;
1111             _c   = c + 2;
1112             tmpm = m->dp;
1113 #ifdef INNERMUL8
1114             INNERMUL8; _c += 8; tmpm += 8;
1115             INNERMUL; ++_c;
1116             INNERMUL; ++_c;
1117 #else
1118             INNERMUL; ++_c;
1119             INNERMUL; ++_c;
1120             INNERMUL; ++_c;
1121             INNERMUL; ++_c;
1122             INNERMUL; ++_c;
1123             INNERMUL; ++_c;
1124             INNERMUL; ++_c;
1125             INNERMUL; ++_c;
1126             INNERMUL; ++_c;
1127             INNERMUL; ++_c;
1128 #endif
1129             LOOP_END;
1130             while (cy) {
1131                PROPCARRY;
1132                ++_c;
1133             }
1134             x = 3; cy   = 0;
1135             LOOP_START;
1136             _c   = c + 3;
1137             tmpm = m->dp;
1138 #ifdef INNERMUL8
1139             INNERMUL8; _c += 8; tmpm += 8;
1140             INNERMUL; ++_c;
1141             INNERMUL; ++_c;
1142 #else
1143             INNERMUL; ++_c;
1144             INNERMUL; ++_c;
1145             INNERMUL; ++_c;
1146             INNERMUL; ++_c;
1147             INNERMUL; ++_c;
1148             INNERMUL; ++_c;
1149             INNERMUL; ++_c;
1150             INNERMUL; ++_c;
1151             INNERMUL; ++_c;
1152             INNERMUL; ++_c;
1153 #endif
1154             LOOP_END;
1155             while (cy) {
1156                PROPCARRY;
1157                ++_c;
1158             }
1159             x = 4; cy   = 0;
1160             LOOP_START;
1161             _c   = c + 4;
1162             tmpm = m->dp;
1163 #ifdef INNERMUL8
1164             INNERMUL8; _c += 8; tmpm += 8;
1165             INNERMUL; ++_c;
1166             INNERMUL; ++_c;
1167 #else
1168             INNERMUL; ++_c;
1169             INNERMUL; ++_c;
1170             INNERMUL; ++_c;
1171             INNERMUL; ++_c;
1172             INNERMUL; ++_c;
1173             INNERMUL; ++_c;
1174             INNERMUL; ++_c;
1175             INNERMUL; ++_c;
1176             INNERMUL; ++_c;
1177             INNERMUL; ++_c;
1178 #endif
1179             LOOP_END;
1180             while (cy) {
1181                PROPCARRY;
1182                ++_c;
1183             }
1184             x = 5; cy   = 0;
1185             LOOP_START;
1186             _c   = c + 5;
1187             tmpm = m->dp;
1188 #ifdef INNERMUL8
1189             INNERMUL8; _c += 8; tmpm += 8;
1190             INNERMUL; ++_c;
1191             INNERMUL; ++_c;
1192 #else
1193             INNERMUL; ++_c;
1194             INNERMUL; ++_c;
1195             INNERMUL; ++_c;
1196             INNERMUL; ++_c;
1197             INNERMUL; ++_c;
1198             INNERMUL; ++_c;
1199             INNERMUL; ++_c;
1200             INNERMUL; ++_c;
1201             INNERMUL; ++_c;
1202             INNERMUL; ++_c;
1203 #endif
1204             LOOP_END;
1205             while (cy) {
1206                PROPCARRY;
1207                ++_c;
1208             }
1209             x = 6; cy   = 0;
1210             LOOP_START;
1211             _c   = c + 6;
1212             tmpm = m->dp;
1213 #ifdef INNERMUL8
1214             INNERMUL8; _c += 8; tmpm += 8;
1215             INNERMUL; ++_c;
1216             INNERMUL; ++_c;
1217 #else
1218             INNERMUL; ++_c;
1219             INNERMUL; ++_c;
1220             INNERMUL; ++_c;
1221             INNERMUL; ++_c;
1222             INNERMUL; ++_c;
1223             INNERMUL; ++_c;
1224             INNERMUL; ++_c;
1225             INNERMUL; ++_c;
1226             INNERMUL; ++_c;
1227             INNERMUL; ++_c;
1228 #endif
1229             LOOP_END;
1230             while (cy) {
1231                PROPCARRY;
1232                ++_c;
1233             }
1234             x = 7; cy   = 0;
1235             LOOP_START;
1236             _c   = c + 7;
1237             tmpm = m->dp;
1238 #ifdef INNERMUL8
1239             INNERMUL8; _c += 8; tmpm += 8;
1240             INNERMUL; ++_c;
1241             INNERMUL; ++_c;
1242 #else
1243             INNERMUL; ++_c;
1244             INNERMUL; ++_c;
1245             INNERMUL; ++_c;
1246             INNERMUL; ++_c;
1247             INNERMUL; ++_c;
1248             INNERMUL; ++_c;
1249             INNERMUL; ++_c;
1250             INNERMUL; ++_c;
1251             INNERMUL; ++_c;
1252             INNERMUL; ++_c;
1253 #endif
1254             LOOP_END;
1255             while (cy) {
1256                PROPCARRY;
1257                ++_c;
1258             }
1259             x = 8; cy   = 0;
1260             LOOP_START;
1261             _c   = c + 8;
1262             tmpm = m->dp;
1263 #ifdef INNERMUL8
1264             INNERMUL8; _c += 8; tmpm += 8;
1265             INNERMUL; ++_c;
1266             INNERMUL; ++_c;
1267 #else
1268             INNERMUL; ++_c;
1269             INNERMUL; ++_c;
1270             INNERMUL; ++_c;
1271             INNERMUL; ++_c;
1272             INNERMUL; ++_c;
1273             INNERMUL; ++_c;
1274             INNERMUL; ++_c;
1275             INNERMUL; ++_c;
1276             INNERMUL; ++_c;
1277             INNERMUL; ++_c;
1278 #endif
1279             LOOP_END;
1280             while (cy) {
1281                PROPCARRY;
1282                ++_c;
1283             }
1284             x = 9; cy   = 0;
1285             LOOP_START;
1286             _c   = c + 9;
1287             tmpm = m->dp;
1288 #ifdef INNERMUL8
1289             INNERMUL8; _c += 8; tmpm += 8;
1290             INNERMUL; ++_c;
1291             INNERMUL; ++_c;
1292 #else
1293             INNERMUL; ++_c;
1294             INNERMUL; ++_c;
1295             INNERMUL; ++_c;
1296             INNERMUL; ++_c;
1297             INNERMUL; ++_c;
1298             INNERMUL; ++_c;
1299             INNERMUL; ++_c;
1300             INNERMUL; ++_c;
1301             INNERMUL; ++_c;
1302             INNERMUL; ++_c;
1303 #endif
1304             LOOP_END;
1305             while (cy) {
1306                PROPCARRY;
1307                ++_c;
1308             }
1309          break;
1310       case 11:
1311             x = 0; cy   = 0;
1312             LOOP_START;
1313             _c   = c + 0;
1314             tmpm = m->dp;
1315 #ifdef INNERMUL8
1316             INNERMUL8; _c += 8; tmpm += 8;
1317             INNERMUL; ++_c;
1318             INNERMUL; ++_c;
1319             INNERMUL; ++_c;
1320 #else
1321             INNERMUL; ++_c;
1322             INNERMUL; ++_c;
1323             INNERMUL; ++_c;
1324             INNERMUL; ++_c;
1325             INNERMUL; ++_c;
1326             INNERMUL; ++_c;
1327             INNERMUL; ++_c;
1328             INNERMUL; ++_c;
1329             INNERMUL; ++_c;
1330             INNERMUL; ++_c;
1331             INNERMUL; ++_c;
1332 #endif
1333             LOOP_END;
1334             while (cy) {
1335                PROPCARRY;
1336                ++_c;
1337             }
1338             x = 1; cy   = 0;
1339             LOOP_START;
1340             _c   = c + 1;
1341             tmpm = m->dp;
1342 #ifdef INNERMUL8
1343             INNERMUL8; _c += 8; tmpm += 8;
1344             INNERMUL; ++_c;
1345             INNERMUL; ++_c;
1346             INNERMUL; ++_c;
1347 #else
1348             INNERMUL; ++_c;
1349             INNERMUL; ++_c;
1350             INNERMUL; ++_c;
1351             INNERMUL; ++_c;
1352             INNERMUL; ++_c;
1353             INNERMUL; ++_c;
1354             INNERMUL; ++_c;
1355             INNERMUL; ++_c;
1356             INNERMUL; ++_c;
1357             INNERMUL; ++_c;
1358             INNERMUL; ++_c;
1359 #endif
1360             LOOP_END;
1361             while (cy) {
1362                PROPCARRY;
1363                ++_c;
1364             }
1365             x = 2; cy   = 0;
1366             LOOP_START;
1367             _c   = c + 2;
1368             tmpm = m->dp;
1369 #ifdef INNERMUL8
1370             INNERMUL8; _c += 8; tmpm += 8;
1371             INNERMUL; ++_c;
1372             INNERMUL; ++_c;
1373             INNERMUL; ++_c;
1374 #else
1375             INNERMUL; ++_c;
1376             INNERMUL; ++_c;
1377             INNERMUL; ++_c;
1378             INNERMUL; ++_c;
1379             INNERMUL; ++_c;
1380             INNERMUL; ++_c;
1381             INNERMUL; ++_c;
1382             INNERMUL; ++_c;
1383             INNERMUL; ++_c;
1384             INNERMUL; ++_c;
1385             INNERMUL; ++_c;
1386 #endif
1387             LOOP_END;
1388             while (cy) {
1389                PROPCARRY;
1390                ++_c;
1391             }
1392             x = 3; cy   = 0;
1393             LOOP_START;
1394             _c   = c + 3;
1395             tmpm = m->dp;
1396 #ifdef INNERMUL8
1397             INNERMUL8; _c += 8; tmpm += 8;
1398             INNERMUL; ++_c;
1399             INNERMUL; ++_c;
1400             INNERMUL; ++_c;
1401 #else
1402             INNERMUL; ++_c;
1403             INNERMUL; ++_c;
1404             INNERMUL; ++_c;
1405             INNERMUL; ++_c;
1406             INNERMUL; ++_c;
1407             INNERMUL; ++_c;
1408             INNERMUL; ++_c;
1409             INNERMUL; ++_c;
1410             INNERMUL; ++_c;
1411             INNERMUL; ++_c;
1412             INNERMUL; ++_c;
1413 #endif
1414             LOOP_END;
1415             while (cy) {
1416                PROPCARRY;
1417                ++_c;
1418             }
1419             x = 4; cy   = 0;
1420             LOOP_START;
1421             _c   = c + 4;
1422             tmpm = m->dp;
1423 #ifdef INNERMUL8
1424             INNERMUL8; _c += 8; tmpm += 8;
1425             INNERMUL; ++_c;
1426             INNERMUL; ++_c;
1427             INNERMUL; ++_c;
1428 #else
1429             INNERMUL; ++_c;
1430             INNERMUL; ++_c;
1431             INNERMUL; ++_c;
1432             INNERMUL; ++_c;
1433             INNERMUL; ++_c;
1434             INNERMUL; ++_c;
1435             INNERMUL; ++_c;
1436             INNERMUL; ++_c;
1437             INNERMUL; ++_c;
1438             INNERMUL; ++_c;
1439             INNERMUL; ++_c;
1440 #endif
1441             LOOP_END;
1442             while (cy) {
1443                PROPCARRY;
1444                ++_c;
1445             }
1446             x = 5; cy   = 0;
1447             LOOP_START;
1448             _c   = c + 5;
1449             tmpm = m->dp;
1450 #ifdef INNERMUL8
1451             INNERMUL8; _c += 8; tmpm += 8;
1452             INNERMUL; ++_c;
1453             INNERMUL; ++_c;
1454             INNERMUL; ++_c;
1455 #else
1456             INNERMUL; ++_c;
1457             INNERMUL; ++_c;
1458             INNERMUL; ++_c;
1459             INNERMUL; ++_c;
1460             INNERMUL; ++_c;
1461             INNERMUL; ++_c;
1462             INNERMUL; ++_c;
1463             INNERMUL; ++_c;
1464             INNERMUL; ++_c;
1465             INNERMUL; ++_c;
1466             INNERMUL; ++_c;
1467 #endif
1468             LOOP_END;
1469             while (cy) {
1470                PROPCARRY;
1471                ++_c;
1472             }
1473             x = 6; cy   = 0;
1474             LOOP_START;
1475             _c   = c + 6;
1476             tmpm = m->dp;
1477 #ifdef INNERMUL8
1478             INNERMUL8; _c += 8; tmpm += 8;
1479             INNERMUL; ++_c;
1480             INNERMUL; ++_c;
1481             INNERMUL; ++_c;
1482 #else
1483             INNERMUL; ++_c;
1484             INNERMUL; ++_c;
1485             INNERMUL; ++_c;
1486             INNERMUL; ++_c;
1487             INNERMUL; ++_c;
1488             INNERMUL; ++_c;
1489             INNERMUL; ++_c;
1490             INNERMUL; ++_c;
1491             INNERMUL; ++_c;
1492             INNERMUL; ++_c;
1493             INNERMUL; ++_c;
1494 #endif
1495             LOOP_END;
1496             while (cy) {
1497                PROPCARRY;
1498                ++_c;
1499             }
1500             x = 7; cy   = 0;
1501             LOOP_START;
1502             _c   = c + 7;
1503             tmpm = m->dp;
1504 #ifdef INNERMUL8
1505             INNERMUL8; _c += 8; tmpm += 8;
1506             INNERMUL; ++_c;
1507             INNERMUL; ++_c;
1508             INNERMUL; ++_c;
1509 #else
1510             INNERMUL; ++_c;
1511             INNERMUL; ++_c;
1512             INNERMUL; ++_c;
1513             INNERMUL; ++_c;
1514             INNERMUL; ++_c;
1515             INNERMUL; ++_c;
1516             INNERMUL; ++_c;
1517             INNERMUL; ++_c;
1518             INNERMUL; ++_c;
1519             INNERMUL; ++_c;
1520             INNERMUL; ++_c;
1521 #endif
1522             LOOP_END;
1523             while (cy) {
1524                PROPCARRY;
1525                ++_c;
1526             }
1527             x = 8; cy   = 0;
1528             LOOP_START;
1529             _c   = c + 8;
1530             tmpm = m->dp;
1531 #ifdef INNERMUL8
1532             INNERMUL8; _c += 8; tmpm += 8;
1533             INNERMUL; ++_c;
1534             INNERMUL; ++_c;
1535             INNERMUL; ++_c;
1536 #else
1537             INNERMUL; ++_c;
1538             INNERMUL; ++_c;
1539             INNERMUL; ++_c;
1540             INNERMUL; ++_c;
1541             INNERMUL; ++_c;
1542             INNERMUL; ++_c;
1543             INNERMUL; ++_c;
1544             INNERMUL; ++_c;
1545             INNERMUL; ++_c;
1546             INNERMUL; ++_c;
1547             INNERMUL; ++_c;
1548 #endif
1549             LOOP_END;
1550             while (cy) {
1551                PROPCARRY;
1552                ++_c;
1553             }
1554             x = 9; cy   = 0;
1555             LOOP_START;
1556             _c   = c + 9;
1557             tmpm = m->dp;
1558 #ifdef INNERMUL8
1559             INNERMUL8; _c += 8; tmpm += 8;
1560             INNERMUL; ++_c;
1561             INNERMUL; ++_c;
1562             INNERMUL; ++_c;
1563 #else
1564             INNERMUL; ++_c;
1565             INNERMUL; ++_c;
1566             INNERMUL; ++_c;
1567             INNERMUL; ++_c;
1568             INNERMUL; ++_c;
1569             INNERMUL; ++_c;
1570             INNERMUL; ++_c;
1571             INNERMUL; ++_c;
1572             INNERMUL; ++_c;
1573             INNERMUL; ++_c;
1574             INNERMUL; ++_c;
1575 #endif
1576             LOOP_END;
1577             while (cy) {
1578                PROPCARRY;
1579                ++_c;
1580             }
1581             x = 10; cy   = 0;
1582             LOOP_START;
1583             _c   = c + 10;
1584             tmpm = m->dp;
1585 #ifdef INNERMUL8
1586             INNERMUL8; _c += 8; tmpm += 8;
1587             INNERMUL; ++_c;
1588             INNERMUL; ++_c;
1589             INNERMUL; ++_c;
1590 #else
1591             INNERMUL; ++_c;
1592             INNERMUL; ++_c;
1593             INNERMUL; ++_c;
1594             INNERMUL; ++_c;
1595             INNERMUL; ++_c;
1596             INNERMUL; ++_c;
1597             INNERMUL; ++_c;
1598             INNERMUL; ++_c;
1599             INNERMUL; ++_c;
1600             INNERMUL; ++_c;
1601             INNERMUL; ++_c;
1602 #endif
1603             LOOP_END;
1604             while (cy) {
1605                PROPCARRY;
1606                ++_c;
1607             }
1608          break;
1609       case 12:
1610             x = 0; cy   = 0;
1611             LOOP_START;
1612             _c   = c + 0;
1613             tmpm = m->dp;
1614 #ifdef INNERMUL8
1615             INNERMUL8; _c += 8; tmpm += 8;
1616             INNERMUL; ++_c;
1617             INNERMUL; ++_c;
1618             INNERMUL; ++_c;
1619             INNERMUL; ++_c;
1620 #else
1621             INNERMUL; ++_c;
1622             INNERMUL; ++_c;
1623             INNERMUL; ++_c;
1624             INNERMUL; ++_c;
1625             INNERMUL; ++_c;
1626             INNERMUL; ++_c;
1627             INNERMUL; ++_c;
1628             INNERMUL; ++_c;
1629             INNERMUL; ++_c;
1630             INNERMUL; ++_c;
1631             INNERMUL; ++_c;
1632             INNERMUL; ++_c;
1633 #endif
1634             LOOP_END;
1635             while (cy) {
1636                PROPCARRY;
1637                ++_c;
1638             }
1639             x = 1; cy   = 0;
1640             LOOP_START;
1641             _c   = c + 1;
1642             tmpm = m->dp;
1643 #ifdef INNERMUL8
1644             INNERMUL8; _c += 8; tmpm += 8;
1645             INNERMUL; ++_c;
1646             INNERMUL; ++_c;
1647             INNERMUL; ++_c;
1648             INNERMUL; ++_c;
1649 #else
1650             INNERMUL; ++_c;
1651             INNERMUL; ++_c;
1652             INNERMUL; ++_c;
1653             INNERMUL; ++_c;
1654             INNERMUL; ++_c;
1655             INNERMUL; ++_c;
1656             INNERMUL; ++_c;
1657             INNERMUL; ++_c;
1658             INNERMUL; ++_c;
1659             INNERMUL; ++_c;
1660             INNERMUL; ++_c;
1661             INNERMUL; ++_c;
1662 #endif
1663             LOOP_END;
1664             while (cy) {
1665                PROPCARRY;
1666                ++_c;
1667             }
1668             x = 2; cy   = 0;
1669             LOOP_START;
1670             _c   = c + 2;
1671             tmpm = m->dp;
1672 #ifdef INNERMUL8
1673             INNERMUL8; _c += 8; tmpm += 8;
1674             INNERMUL; ++_c;
1675             INNERMUL; ++_c;
1676             INNERMUL; ++_c;
1677             INNERMUL; ++_c;
1678 #else
1679             INNERMUL; ++_c;
1680             INNERMUL; ++_c;
1681             INNERMUL; ++_c;
1682             INNERMUL; ++_c;
1683             INNERMUL; ++_c;
1684             INNERMUL; ++_c;
1685             INNERMUL; ++_c;
1686             INNERMUL; ++_c;
1687             INNERMUL; ++_c;
1688             INNERMUL; ++_c;
1689             INNERMUL; ++_c;
1690             INNERMUL; ++_c;
1691 #endif
1692             LOOP_END;
1693             while (cy) {
1694                PROPCARRY;
1695                ++_c;
1696             }
1697             x = 3; cy   = 0;
1698             LOOP_START;
1699             _c   = c + 3;
1700             tmpm = m->dp;
1701 #ifdef INNERMUL8
1702             INNERMUL8; _c += 8; tmpm += 8;
1703             INNERMUL; ++_c;
1704             INNERMUL; ++_c;
1705             INNERMUL; ++_c;
1706             INNERMUL; ++_c;
1707 #else
1708             INNERMUL; ++_c;
1709             INNERMUL; ++_c;
1710             INNERMUL; ++_c;
1711             INNERMUL; ++_c;
1712             INNERMUL; ++_c;
1713             INNERMUL; ++_c;
1714             INNERMUL; ++_c;
1715             INNERMUL; ++_c;
1716             INNERMUL; ++_c;
1717             INNERMUL; ++_c;
1718             INNERMUL; ++_c;
1719             INNERMUL; ++_c;
1720 #endif
1721             LOOP_END;
1722             while (cy) {
1723                PROPCARRY;
1724                ++_c;
1725             }
1726             x = 4; cy   = 0;
1727             LOOP_START;
1728             _c   = c + 4;
1729             tmpm = m->dp;
1730 #ifdef INNERMUL8
1731             INNERMUL8; _c += 8; tmpm += 8;
1732             INNERMUL; ++_c;
1733             INNERMUL; ++_c;
1734             INNERMUL; ++_c;
1735             INNERMUL; ++_c;
1736 #else
1737             INNERMUL; ++_c;
1738             INNERMUL; ++_c;
1739             INNERMUL; ++_c;
1740             INNERMUL; ++_c;
1741             INNERMUL; ++_c;
1742             INNERMUL; ++_c;
1743             INNERMUL; ++_c;
1744             INNERMUL; ++_c;
1745             INNERMUL; ++_c;
1746             INNERMUL; ++_c;
1747             INNERMUL; ++_c;
1748             INNERMUL; ++_c;
1749 #endif
1750             LOOP_END;
1751             while (cy) {
1752                PROPCARRY;
1753                ++_c;
1754             }
1755             x = 5; cy   = 0;
1756             LOOP_START;
1757             _c   = c + 5;
1758             tmpm = m->dp;
1759 #ifdef INNERMUL8
1760             INNERMUL8; _c += 8; tmpm += 8;
1761             INNERMUL; ++_c;
1762             INNERMUL; ++_c;
1763             INNERMUL; ++_c;
1764             INNERMUL; ++_c;
1765 #else
1766             INNERMUL; ++_c;
1767             INNERMUL; ++_c;
1768             INNERMUL; ++_c;
1769             INNERMUL; ++_c;
1770             INNERMUL; ++_c;
1771             INNERMUL; ++_c;
1772             INNERMUL; ++_c;
1773             INNERMUL; ++_c;
1774             INNERMUL; ++_c;
1775             INNERMUL; ++_c;
1776             INNERMUL; ++_c;
1777             INNERMUL; ++_c;
1778 #endif
1779             LOOP_END;
1780             while (cy) {
1781                PROPCARRY;
1782                ++_c;
1783             }
1784             x = 6; cy   = 0;
1785             LOOP_START;
1786             _c   = c + 6;
1787             tmpm = m->dp;
1788 #ifdef INNERMUL8
1789             INNERMUL8; _c += 8; tmpm += 8;
1790             INNERMUL; ++_c;
1791             INNERMUL; ++_c;
1792             INNERMUL; ++_c;
1793             INNERMUL; ++_c;
1794 #else
1795             INNERMUL; ++_c;
1796             INNERMUL; ++_c;
1797             INNERMUL; ++_c;
1798             INNERMUL; ++_c;
1799             INNERMUL; ++_c;
1800             INNERMUL; ++_c;
1801             INNERMUL; ++_c;
1802             INNERMUL; ++_c;
1803             INNERMUL; ++_c;
1804             INNERMUL; ++_c;
1805             INNERMUL; ++_c;
1806             INNERMUL; ++_c;
1807 #endif
1808             LOOP_END;
1809             while (cy) {
1810                PROPCARRY;
1811                ++_c;
1812             }
1813             x = 7; cy   = 0;
1814             LOOP_START;
1815             _c   = c + 7;
1816             tmpm = m->dp;
1817 #ifdef INNERMUL8
1818             INNERMUL8; _c += 8; tmpm += 8;
1819             INNERMUL; ++_c;
1820             INNERMUL; ++_c;
1821             INNERMUL; ++_c;
1822             INNERMUL; ++_c;
1823 #else
1824             INNERMUL; ++_c;
1825             INNERMUL; ++_c;
1826             INNERMUL; ++_c;
1827             INNERMUL; ++_c;
1828             INNERMUL; ++_c;
1829             INNERMUL; ++_c;
1830             INNERMUL; ++_c;
1831             INNERMUL; ++_c;
1832             INNERMUL; ++_c;
1833             INNERMUL; ++_c;
1834             INNERMUL; ++_c;
1835             INNERMUL; ++_c;
1836 #endif
1837             LOOP_END;
1838             while (cy) {
1839                PROPCARRY;
1840                ++_c;
1841             }
1842             x = 8; cy   = 0;
1843             LOOP_START;
1844             _c   = c + 8;
1845             tmpm = m->dp;
1846 #ifdef INNERMUL8
1847             INNERMUL8; _c += 8; tmpm += 8;
1848             INNERMUL; ++_c;
1849             INNERMUL; ++_c;
1850             INNERMUL; ++_c;
1851             INNERMUL; ++_c;
1852 #else
1853             INNERMUL; ++_c;
1854             INNERMUL; ++_c;
1855             INNERMUL; ++_c;
1856             INNERMUL; ++_c;
1857             INNERMUL; ++_c;
1858             INNERMUL; ++_c;
1859             INNERMUL; ++_c;
1860             INNERMUL; ++_c;
1861             INNERMUL; ++_c;
1862             INNERMUL; ++_c;
1863             INNERMUL; ++_c;
1864             INNERMUL; ++_c;
1865 #endif
1866             LOOP_END;
1867             while (cy) {
1868                PROPCARRY;
1869                ++_c;
1870             }
1871             x = 9; cy   = 0;
1872             LOOP_START;
1873             _c   = c + 9;
1874             tmpm = m->dp;
1875 #ifdef INNERMUL8
1876             INNERMUL8; _c += 8; tmpm += 8;
1877             INNERMUL; ++_c;
1878             INNERMUL; ++_c;
1879             INNERMUL; ++_c;
1880             INNERMUL; ++_c;
1881 #else
1882             INNERMUL; ++_c;
1883             INNERMUL; ++_c;
1884             INNERMUL; ++_c;
1885             INNERMUL; ++_c;
1886             INNERMUL; ++_c;
1887             INNERMUL; ++_c;
1888             INNERMUL; ++_c;
1889             INNERMUL; ++_c;
1890             INNERMUL; ++_c;
1891             INNERMUL; ++_c;
1892             INNERMUL; ++_c;
1893             INNERMUL; ++_c;
1894 #endif
1895             LOOP_END;
1896             while (cy) {
1897                PROPCARRY;
1898                ++_c;
1899             }
1900             x = 10; cy   = 0;
1901             LOOP_START;
1902             _c   = c + 10;
1903             tmpm = m->dp;
1904 #ifdef INNERMUL8
1905             INNERMUL8; _c += 8; tmpm += 8;
1906             INNERMUL; ++_c;
1907             INNERMUL; ++_c;
1908             INNERMUL; ++_c;
1909             INNERMUL; ++_c;
1910 #else
1911             INNERMUL; ++_c;
1912             INNERMUL; ++_c;
1913             INNERMUL; ++_c;
1914             INNERMUL; ++_c;
1915             INNERMUL; ++_c;
1916             INNERMUL; ++_c;
1917             INNERMUL; ++_c;
1918             INNERMUL; ++_c;
1919             INNERMUL; ++_c;
1920             INNERMUL; ++_c;
1921             INNERMUL; ++_c;
1922             INNERMUL; ++_c;
1923 #endif
1924             LOOP_END;
1925             while (cy) {
1926                PROPCARRY;
1927                ++_c;
1928             }
1929             x = 11; cy   = 0;
1930             LOOP_START;
1931             _c   = c + 11;
1932             tmpm = m->dp;
1933 #ifdef INNERMUL8
1934             INNERMUL8; _c += 8; tmpm += 8;
1935             INNERMUL; ++_c;
1936             INNERMUL; ++_c;
1937             INNERMUL; ++_c;
1938             INNERMUL; ++_c;
1939 #else
1940             INNERMUL; ++_c;
1941             INNERMUL; ++_c;
1942             INNERMUL; ++_c;
1943             INNERMUL; ++_c;
1944             INNERMUL; ++_c;
1945             INNERMUL; ++_c;
1946             INNERMUL; ++_c;
1947             INNERMUL; ++_c;
1948             INNERMUL; ++_c;
1949             INNERMUL; ++_c;
1950             INNERMUL; ++_c;
1951             INNERMUL; ++_c;
1952 #endif
1953             LOOP_END;
1954             while (cy) {
1955                PROPCARRY;
1956                ++_c;
1957             }
1958          break;
1959       case 13:
1960             x = 0; cy   = 0;
1961             LOOP_START;
1962             _c   = c + 0;
1963             tmpm = m->dp;
1964 #ifdef INNERMUL8
1965             INNERMUL8; _c += 8; tmpm += 8;
1966             INNERMUL; ++_c;
1967             INNERMUL; ++_c;
1968             INNERMUL; ++_c;
1969             INNERMUL; ++_c;
1970             INNERMUL; ++_c;
1971 #else
1972             INNERMUL; ++_c;
1973             INNERMUL; ++_c;
1974             INNERMUL; ++_c;
1975             INNERMUL; ++_c;
1976             INNERMUL; ++_c;
1977             INNERMUL; ++_c;
1978             INNERMUL; ++_c;
1979             INNERMUL; ++_c;
1980             INNERMUL; ++_c;
1981             INNERMUL; ++_c;
1982             INNERMUL; ++_c;
1983             INNERMUL; ++_c;
1984             INNERMUL; ++_c;
1985 #endif
1986             LOOP_END;
1987             while (cy) {
1988                PROPCARRY;
1989                ++_c;
1990             }
1991             x = 1; cy   = 0;
1992             LOOP_START;
1993             _c   = c + 1;
1994             tmpm = m->dp;
1995 #ifdef INNERMUL8
1996             INNERMUL8; _c += 8; tmpm += 8;
1997             INNERMUL; ++_c;
1998             INNERMUL; ++_c;
1999             INNERMUL; ++_c;
2000             INNERMUL; ++_c;
2001             INNERMUL; ++_c;
2002 #else
2003             INNERMUL; ++_c;
2004             INNERMUL; ++_c;
2005             INNERMUL; ++_c;
2006             INNERMUL; ++_c;
2007             INNERMUL; ++_c;
2008             INNERMUL; ++_c;
2009             INNERMUL; ++_c;
2010             INNERMUL; ++_c;
2011             INNERMUL; ++_c;
2012             INNERMUL; ++_c;
2013             INNERMUL; ++_c;
2014             INNERMUL; ++_c;
2015             INNERMUL; ++_c;
2016 #endif
2017             LOOP_END;
2018             while (cy) {
2019                PROPCARRY;
2020                ++_c;
2021             }
2022             x = 2; cy   = 0;
2023             LOOP_START;
2024             _c   = c + 2;
2025             tmpm = m->dp;
2026 #ifdef INNERMUL8
2027             INNERMUL8; _c += 8; tmpm += 8;
2028             INNERMUL; ++_c;
2029             INNERMUL; ++_c;
2030             INNERMUL; ++_c;
2031             INNERMUL; ++_c;
2032             INNERMUL; ++_c;
2033 #else
2034             INNERMUL; ++_c;
2035             INNERMUL; ++_c;
2036             INNERMUL; ++_c;
2037             INNERMUL; ++_c;
2038             INNERMUL; ++_c;
2039             INNERMUL; ++_c;
2040             INNERMUL; ++_c;
2041             INNERMUL; ++_c;
2042             INNERMUL; ++_c;
2043             INNERMUL; ++_c;
2044             INNERMUL; ++_c;
2045             INNERMUL; ++_c;
2046             INNERMUL; ++_c;
2047 #endif
2048             LOOP_END;
2049             while (cy) {
2050                PROPCARRY;
2051                ++_c;
2052             }
2053             x = 3; cy   = 0;
2054             LOOP_START;
2055             _c   = c + 3;
2056             tmpm = m->dp;
2057 #ifdef INNERMUL8
2058             INNERMUL8; _c += 8; tmpm += 8;
2059             INNERMUL; ++_c;
2060             INNERMUL; ++_c;
2061             INNERMUL; ++_c;
2062             INNERMUL; ++_c;
2063             INNERMUL; ++_c;
2064 #else
2065             INNERMUL; ++_c;
2066             INNERMUL; ++_c;
2067             INNERMUL; ++_c;
2068             INNERMUL; ++_c;
2069             INNERMUL; ++_c;
2070             INNERMUL; ++_c;
2071             INNERMUL; ++_c;
2072             INNERMUL; ++_c;
2073             INNERMUL; ++_c;
2074             INNERMUL; ++_c;
2075             INNERMUL; ++_c;
2076             INNERMUL; ++_c;
2077             INNERMUL; ++_c;
2078 #endif
2079             LOOP_END;
2080             while (cy) {
2081                PROPCARRY;
2082                ++_c;
2083             }
2084             x = 4; cy   = 0;
2085             LOOP_START;
2086             _c   = c + 4;
2087             tmpm = m->dp;
2088 #ifdef INNERMUL8
2089             INNERMUL8; _c += 8; tmpm += 8;
2090             INNERMUL; ++_c;
2091             INNERMUL; ++_c;
2092             INNERMUL; ++_c;
2093             INNERMUL; ++_c;
2094             INNERMUL; ++_c;
2095 #else
2096             INNERMUL; ++_c;
2097             INNERMUL; ++_c;
2098             INNERMUL; ++_c;
2099             INNERMUL; ++_c;
2100             INNERMUL; ++_c;
2101             INNERMUL; ++_c;
2102             INNERMUL; ++_c;
2103             INNERMUL; ++_c;
2104             INNERMUL; ++_c;
2105             INNERMUL; ++_c;
2106             INNERMUL; ++_c;
2107             INNERMUL; ++_c;
2108             INNERMUL; ++_c;
2109 #endif
2110             LOOP_END;
2111             while (cy) {
2112                PROPCARRY;
2113                ++_c;
2114             }
2115             x = 5; cy   = 0;
2116             LOOP_START;
2117             _c   = c + 5;
2118             tmpm = m->dp;
2119 #ifdef INNERMUL8
2120             INNERMUL8; _c += 8; tmpm += 8;
2121             INNERMUL; ++_c;
2122             INNERMUL; ++_c;
2123             INNERMUL; ++_c;
2124             INNERMUL; ++_c;
2125             INNERMUL; ++_c;
2126 #else
2127             INNERMUL; ++_c;
2128             INNERMUL; ++_c;
2129             INNERMUL; ++_c;
2130             INNERMUL; ++_c;
2131             INNERMUL; ++_c;
2132             INNERMUL; ++_c;
2133             INNERMUL; ++_c;
2134             INNERMUL; ++_c;
2135             INNERMUL; ++_c;
2136             INNERMUL; ++_c;
2137             INNERMUL; ++_c;
2138             INNERMUL; ++_c;
2139             INNERMUL; ++_c;
2140 #endif
2141             LOOP_END;
2142             while (cy) {
2143                PROPCARRY;
2144                ++_c;
2145             }
2146             x = 6; cy   = 0;
2147             LOOP_START;
2148             _c   = c + 6;
2149             tmpm = m->dp;
2150 #ifdef INNERMUL8
2151             INNERMUL8; _c += 8; tmpm += 8;
2152             INNERMUL; ++_c;
2153             INNERMUL; ++_c;
2154             INNERMUL; ++_c;
2155             INNERMUL; ++_c;
2156             INNERMUL; ++_c;
2157 #else
2158             INNERMUL; ++_c;
2159             INNERMUL; ++_c;
2160             INNERMUL; ++_c;
2161             INNERMUL; ++_c;
2162             INNERMUL; ++_c;
2163             INNERMUL; ++_c;
2164             INNERMUL; ++_c;
2165             INNERMUL; ++_c;
2166             INNERMUL; ++_c;
2167             INNERMUL; ++_c;
2168             INNERMUL; ++_c;
2169             INNERMUL; ++_c;
2170             INNERMUL; ++_c;
2171 #endif
2172             LOOP_END;
2173             while (cy) {
2174                PROPCARRY;
2175                ++_c;
2176             }
2177             x = 7; cy   = 0;
2178             LOOP_START;
2179             _c   = c + 7;
2180             tmpm = m->dp;
2181 #ifdef INNERMUL8
2182             INNERMUL8; _c += 8; tmpm += 8;
2183             INNERMUL; ++_c;
2184             INNERMUL; ++_c;
2185             INNERMUL; ++_c;
2186             INNERMUL; ++_c;
2187             INNERMUL; ++_c;
2188 #else
2189             INNERMUL; ++_c;
2190             INNERMUL; ++_c;
2191             INNERMUL; ++_c;
2192             INNERMUL; ++_c;
2193             INNERMUL; ++_c;
2194             INNERMUL; ++_c;
2195             INNERMUL; ++_c;
2196             INNERMUL; ++_c;
2197             INNERMUL; ++_c;
2198             INNERMUL; ++_c;
2199             INNERMUL; ++_c;
2200             INNERMUL; ++_c;
2201             INNERMUL; ++_c;
2202 #endif
2203             LOOP_END;
2204             while (cy) {
2205                PROPCARRY;
2206                ++_c;
2207             }
2208             x = 8; cy   = 0;
2209             LOOP_START;
2210             _c   = c + 8;
2211             tmpm = m->dp;
2212 #ifdef INNERMUL8
2213             INNERMUL8; _c += 8; tmpm += 8;
2214             INNERMUL; ++_c;
2215             INNERMUL; ++_c;
2216             INNERMUL; ++_c;
2217             INNERMUL; ++_c;
2218             INNERMUL; ++_c;
2219 #else
2220             INNERMUL; ++_c;
2221             INNERMUL; ++_c;
2222             INNERMUL; ++_c;
2223             INNERMUL; ++_c;
2224             INNERMUL; ++_c;
2225             INNERMUL; ++_c;
2226             INNERMUL; ++_c;
2227             INNERMUL; ++_c;
2228             INNERMUL; ++_c;
2229             INNERMUL; ++_c;
2230             INNERMUL; ++_c;
2231             INNERMUL; ++_c;
2232             INNERMUL; ++_c;
2233 #endif
2234             LOOP_END;
2235             while (cy) {
2236                PROPCARRY;
2237                ++_c;
2238             }
2239             x = 9; cy   = 0;
2240             LOOP_START;
2241             _c   = c + 9;
2242             tmpm = m->dp;
2243 #ifdef INNERMUL8
2244             INNERMUL8; _c += 8; tmpm += 8;
2245             INNERMUL; ++_c;
2246             INNERMUL; ++_c;
2247             INNERMUL; ++_c;
2248             INNERMUL; ++_c;
2249             INNERMUL; ++_c;
2250 #else
2251             INNERMUL; ++_c;
2252             INNERMUL; ++_c;
2253             INNERMUL; ++_c;
2254             INNERMUL; ++_c;
2255             INNERMUL; ++_c;
2256             INNERMUL; ++_c;
2257             INNERMUL; ++_c;
2258             INNERMUL; ++_c;
2259             INNERMUL; ++_c;
2260             INNERMUL; ++_c;
2261             INNERMUL; ++_c;
2262             INNERMUL; ++_c;
2263             INNERMUL; ++_c;
2264 #endif
2265             LOOP_END;
2266             while (cy) {
2267                PROPCARRY;
2268                ++_c;
2269             }
2270             x = 10; cy   = 0;
2271             LOOP_START;
2272             _c   = c + 10;
2273             tmpm = m->dp;
2274 #ifdef INNERMUL8
2275             INNERMUL8; _c += 8; tmpm += 8;
2276             INNERMUL; ++_c;
2277             INNERMUL; ++_c;
2278             INNERMUL; ++_c;
2279             INNERMUL; ++_c;
2280             INNERMUL; ++_c;
2281 #else
2282             INNERMUL; ++_c;
2283             INNERMUL; ++_c;
2284             INNERMUL; ++_c;
2285             INNERMUL; ++_c;
2286             INNERMUL; ++_c;
2287             INNERMUL; ++_c;
2288             INNERMUL; ++_c;
2289             INNERMUL; ++_c;
2290             INNERMUL; ++_c;
2291             INNERMUL; ++_c;
2292             INNERMUL; ++_c;
2293             INNERMUL; ++_c;
2294             INNERMUL; ++_c;
2295 #endif
2296             LOOP_END;
2297             while (cy) {
2298                PROPCARRY;
2299                ++_c;
2300             }
2301             x = 11; cy   = 0;
2302             LOOP_START;
2303             _c   = c + 11;
2304             tmpm = m->dp;
2305 #ifdef INNERMUL8
2306             INNERMUL8; _c += 8; tmpm += 8;
2307             INNERMUL; ++_c;
2308             INNERMUL; ++_c;
2309             INNERMUL; ++_c;
2310             INNERMUL; ++_c;
2311             INNERMUL; ++_c;
2312 #else
2313             INNERMUL; ++_c;
2314             INNERMUL; ++_c;
2315             INNERMUL; ++_c;
2316             INNERMUL; ++_c;
2317             INNERMUL; ++_c;
2318             INNERMUL; ++_c;
2319             INNERMUL; ++_c;
2320             INNERMUL; ++_c;
2321             INNERMUL; ++_c;
2322             INNERMUL; ++_c;
2323             INNERMUL; ++_c;
2324             INNERMUL; ++_c;
2325             INNERMUL; ++_c;
2326 #endif
2327             LOOP_END;
2328             while (cy) {
2329                PROPCARRY;
2330                ++_c;
2331             }
2332             x = 12; cy   = 0;
2333             LOOP_START;
2334             _c   = c + 12;
2335             tmpm = m->dp;
2336 #ifdef INNERMUL8
2337             INNERMUL8; _c += 8; tmpm += 8;
2338             INNERMUL; ++_c;
2339             INNERMUL; ++_c;
2340             INNERMUL; ++_c;
2341             INNERMUL; ++_c;
2342             INNERMUL; ++_c;
2343 #else
2344             INNERMUL; ++_c;
2345             INNERMUL; ++_c;
2346             INNERMUL; ++_c;
2347             INNERMUL; ++_c;
2348             INNERMUL; ++_c;
2349             INNERMUL; ++_c;
2350             INNERMUL; ++_c;
2351             INNERMUL; ++_c;
2352             INNERMUL; ++_c;
2353             INNERMUL; ++_c;
2354             INNERMUL; ++_c;
2355             INNERMUL; ++_c;
2356             INNERMUL; ++_c;
2357 #endif
2358             LOOP_END;
2359             while (cy) {
2360                PROPCARRY;
2361                ++_c;
2362             }
2363          break;
2364       case 14:
2365             x = 0; cy   = 0;
2366             LOOP_START;
2367             _c   = c + 0;
2368             tmpm = m->dp;
2369 #ifdef INNERMUL8
2370             INNERMUL8; _c += 8; tmpm += 8;
2371             INNERMUL; ++_c;
2372             INNERMUL; ++_c;
2373             INNERMUL; ++_c;
2374             INNERMUL; ++_c;
2375             INNERMUL; ++_c;
2376             INNERMUL; ++_c;
2377 #else
2378             INNERMUL; ++_c;
2379             INNERMUL; ++_c;
2380             INNERMUL; ++_c;
2381             INNERMUL; ++_c;
2382             INNERMUL; ++_c;
2383             INNERMUL; ++_c;
2384             INNERMUL; ++_c;
2385             INNERMUL; ++_c;
2386             INNERMUL; ++_c;
2387             INNERMUL; ++_c;
2388             INNERMUL; ++_c;
2389             INNERMUL; ++_c;
2390             INNERMUL; ++_c;
2391             INNERMUL; ++_c;
2392 #endif
2393             LOOP_END;
2394             while (cy) {
2395                PROPCARRY;
2396                ++_c;
2397             }
2398             x = 1; cy   = 0;
2399             LOOP_START;
2400             _c   = c + 1;
2401             tmpm = m->dp;
2402 #ifdef INNERMUL8
2403             INNERMUL8; _c += 8; tmpm += 8;
2404             INNERMUL; ++_c;
2405             INNERMUL; ++_c;
2406             INNERMUL; ++_c;
2407             INNERMUL; ++_c;
2408             INNERMUL; ++_c;
2409             INNERMUL; ++_c;
2410 #else
2411             INNERMUL; ++_c;
2412             INNERMUL; ++_c;
2413             INNERMUL; ++_c;
2414             INNERMUL; ++_c;
2415             INNERMUL; ++_c;
2416             INNERMUL; ++_c;
2417             INNERMUL; ++_c;
2418             INNERMUL; ++_c;
2419             INNERMUL; ++_c;
2420             INNERMUL; ++_c;
2421             INNERMUL; ++_c;
2422             INNERMUL; ++_c;
2423             INNERMUL; ++_c;
2424             INNERMUL; ++_c;
2425 #endif
2426             LOOP_END;
2427             while (cy) {
2428                PROPCARRY;
2429                ++_c;
2430             }
2431             x = 2; cy   = 0;
2432             LOOP_START;
2433             _c   = c + 2;
2434             tmpm = m->dp;
2435 #ifdef INNERMUL8
2436             INNERMUL8; _c += 8; tmpm += 8;
2437             INNERMUL; ++_c;
2438             INNERMUL; ++_c;
2439             INNERMUL; ++_c;
2440             INNERMUL; ++_c;
2441             INNERMUL; ++_c;
2442             INNERMUL; ++_c;
2443 #else
2444             INNERMUL; ++_c;
2445             INNERMUL; ++_c;
2446             INNERMUL; ++_c;
2447             INNERMUL; ++_c;
2448             INNERMUL; ++_c;
2449             INNERMUL; ++_c;
2450             INNERMUL; ++_c;
2451             INNERMUL; ++_c;
2452             INNERMUL; ++_c;
2453             INNERMUL; ++_c;
2454             INNERMUL; ++_c;
2455             INNERMUL; ++_c;
2456             INNERMUL; ++_c;
2457             INNERMUL; ++_c;
2458 #endif
2459             LOOP_END;
2460             while (cy) {
2461                PROPCARRY;
2462                ++_c;
2463             }
2464             x = 3; cy   = 0;
2465             LOOP_START;
2466             _c   = c + 3;
2467             tmpm = m->dp;
2468 #ifdef INNERMUL8
2469             INNERMUL8; _c += 8; tmpm += 8;
2470             INNERMUL; ++_c;
2471             INNERMUL; ++_c;
2472             INNERMUL; ++_c;
2473             INNERMUL; ++_c;
2474             INNERMUL; ++_c;
2475             INNERMUL; ++_c;
2476 #else
2477             INNERMUL; ++_c;
2478             INNERMUL; ++_c;
2479             INNERMUL; ++_c;
2480             INNERMUL; ++_c;
2481             INNERMUL; ++_c;
2482             INNERMUL; ++_c;
2483             INNERMUL; ++_c;
2484             INNERMUL; ++_c;
2485             INNERMUL; ++_c;
2486             INNERMUL; ++_c;
2487             INNERMUL; ++_c;
2488             INNERMUL; ++_c;
2489             INNERMUL; ++_c;
2490             INNERMUL; ++_c;
2491 #endif
2492             LOOP_END;
2493             while (cy) {
2494                PROPCARRY;
2495                ++_c;
2496             }
2497             x = 4; cy   = 0;
2498             LOOP_START;
2499             _c   = c + 4;
2500             tmpm = m->dp;
2501 #ifdef INNERMUL8
2502             INNERMUL8; _c += 8; tmpm += 8;
2503             INNERMUL; ++_c;
2504             INNERMUL; ++_c;
2505             INNERMUL; ++_c;
2506             INNERMUL; ++_c;
2507             INNERMUL; ++_c;
2508             INNERMUL; ++_c;
2509 #else
2510             INNERMUL; ++_c;
2511             INNERMUL; ++_c;
2512             INNERMUL; ++_c;
2513             INNERMUL; ++_c;
2514             INNERMUL; ++_c;
2515             INNERMUL; ++_c;
2516             INNERMUL; ++_c;
2517             INNERMUL; ++_c;
2518             INNERMUL; ++_c;
2519             INNERMUL; ++_c;
2520             INNERMUL; ++_c;
2521             INNERMUL; ++_c;
2522             INNERMUL; ++_c;
2523             INNERMUL; ++_c;
2524 #endif
2525             LOOP_END;
2526             while (cy) {
2527                PROPCARRY;
2528                ++_c;
2529             }
2530             x = 5; cy   = 0;
2531             LOOP_START;
2532             _c   = c + 5;
2533             tmpm = m->dp;
2534 #ifdef INNERMUL8
2535             INNERMUL8; _c += 8; tmpm += 8;
2536             INNERMUL; ++_c;
2537             INNERMUL; ++_c;
2538             INNERMUL; ++_c;
2539             INNERMUL; ++_c;
2540             INNERMUL; ++_c;
2541             INNERMUL; ++_c;
2542 #else
2543             INNERMUL; ++_c;
2544             INNERMUL; ++_c;
2545             INNERMUL; ++_c;
2546             INNERMUL; ++_c;
2547             INNERMUL; ++_c;
2548             INNERMUL; ++_c;
2549             INNERMUL; ++_c;
2550             INNERMUL; ++_c;
2551             INNERMUL; ++_c;
2552             INNERMUL; ++_c;
2553             INNERMUL; ++_c;
2554             INNERMUL; ++_c;
2555             INNERMUL; ++_c;
2556             INNERMUL; ++_c;
2557 #endif
2558             LOOP_END;
2559             while (cy) {
2560                PROPCARRY;
2561                ++_c;
2562             }
2563             x = 6; cy   = 0;
2564             LOOP_START;
2565             _c   = c + 6;
2566             tmpm = m->dp;
2567 #ifdef INNERMUL8
2568             INNERMUL8; _c += 8; tmpm += 8;
2569             INNERMUL; ++_c;
2570             INNERMUL; ++_c;
2571             INNERMUL; ++_c;
2572             INNERMUL; ++_c;
2573             INNERMUL; ++_c;
2574             INNERMUL; ++_c;
2575 #else
2576             INNERMUL; ++_c;
2577             INNERMUL; ++_c;
2578             INNERMUL; ++_c;
2579             INNERMUL; ++_c;
2580             INNERMUL; ++_c;
2581             INNERMUL; ++_c;
2582             INNERMUL; ++_c;
2583             INNERMUL; ++_c;
2584             INNERMUL; ++_c;
2585             INNERMUL; ++_c;
2586             INNERMUL; ++_c;
2587             INNERMUL; ++_c;
2588             INNERMUL; ++_c;
2589             INNERMUL; ++_c;
2590 #endif
2591             LOOP_END;
2592             while (cy) {
2593                PROPCARRY;
2594                ++_c;
2595             }
2596             x = 7; cy   = 0;
2597             LOOP_START;
2598             _c   = c + 7;
2599             tmpm = m->dp;
2600 #ifdef INNERMUL8
2601             INNERMUL8; _c += 8; tmpm += 8;
2602             INNERMUL; ++_c;
2603             INNERMUL; ++_c;
2604             INNERMUL; ++_c;
2605             INNERMUL; ++_c;
2606             INNERMUL; ++_c;
2607             INNERMUL; ++_c;
2608 #else
2609             INNERMUL; ++_c;
2610             INNERMUL; ++_c;
2611             INNERMUL; ++_c;
2612             INNERMUL; ++_c;
2613             INNERMUL; ++_c;
2614             INNERMUL; ++_c;
2615             INNERMUL; ++_c;
2616             INNERMUL; ++_c;
2617             INNERMUL; ++_c;
2618             INNERMUL; ++_c;
2619             INNERMUL; ++_c;
2620             INNERMUL; ++_c;
2621             INNERMUL; ++_c;
2622             INNERMUL; ++_c;
2623 #endif
2624             LOOP_END;
2625             while (cy) {
2626                PROPCARRY;
2627                ++_c;
2628             }
2629             x = 8; cy   = 0;
2630             LOOP_START;
2631             _c   = c + 8;
2632             tmpm = m->dp;
2633 #ifdef INNERMUL8
2634             INNERMUL8; _c += 8; tmpm += 8;
2635             INNERMUL; ++_c;
2636             INNERMUL; ++_c;
2637             INNERMUL; ++_c;
2638             INNERMUL; ++_c;
2639             INNERMUL; ++_c;
2640             INNERMUL; ++_c;
2641 #else
2642             INNERMUL; ++_c;
2643             INNERMUL; ++_c;
2644             INNERMUL; ++_c;
2645             INNERMUL; ++_c;
2646             INNERMUL; ++_c;
2647             INNERMUL; ++_c;
2648             INNERMUL; ++_c;
2649             INNERMUL; ++_c;
2650             INNERMUL; ++_c;
2651             INNERMUL; ++_c;
2652             INNERMUL; ++_c;
2653             INNERMUL; ++_c;
2654             INNERMUL; ++_c;
2655             INNERMUL; ++_c;
2656 #endif
2657             LOOP_END;
2658             while (cy) {
2659                PROPCARRY;
2660                ++_c;
2661             }
2662             x = 9; cy   = 0;
2663             LOOP_START;
2664             _c   = c + 9;
2665             tmpm = m->dp;
2666 #ifdef INNERMUL8
2667             INNERMUL8; _c += 8; tmpm += 8;
2668             INNERMUL; ++_c;
2669             INNERMUL; ++_c;
2670             INNERMUL; ++_c;
2671             INNERMUL; ++_c;
2672             INNERMUL; ++_c;
2673             INNERMUL; ++_c;
2674 #else
2675             INNERMUL; ++_c;
2676             INNERMUL; ++_c;
2677             INNERMUL; ++_c;
2678             INNERMUL; ++_c;
2679             INNERMUL; ++_c;
2680             INNERMUL; ++_c;
2681             INNERMUL; ++_c;
2682             INNERMUL; ++_c;
2683             INNERMUL; ++_c;
2684             INNERMUL; ++_c;
2685             INNERMUL; ++_c;
2686             INNERMUL; ++_c;
2687             INNERMUL; ++_c;
2688             INNERMUL; ++_c;
2689 #endif
2690             LOOP_END;
2691             while (cy) {
2692                PROPCARRY;
2693                ++_c;
2694             }
2695             x = 10; cy   = 0;
2696             LOOP_START;
2697             _c   = c + 10;
2698             tmpm = m->dp;
2699 #ifdef INNERMUL8
2700             INNERMUL8; _c += 8; tmpm += 8;
2701             INNERMUL; ++_c;
2702             INNERMUL; ++_c;
2703             INNERMUL; ++_c;
2704             INNERMUL; ++_c;
2705             INNERMUL; ++_c;
2706             INNERMUL; ++_c;
2707 #else
2708             INNERMUL; ++_c;
2709             INNERMUL; ++_c;
2710             INNERMUL; ++_c;
2711             INNERMUL; ++_c;
2712             INNERMUL; ++_c;
2713             INNERMUL; ++_c;
2714             INNERMUL; ++_c;
2715             INNERMUL; ++_c;
2716             INNERMUL; ++_c;
2717             INNERMUL; ++_c;
2718             INNERMUL; ++_c;
2719             INNERMUL; ++_c;
2720             INNERMUL; ++_c;
2721             INNERMUL; ++_c;
2722 #endif
2723             LOOP_END;
2724             while (cy) {
2725                PROPCARRY;
2726                ++_c;
2727             }
2728             x = 11; cy   = 0;
2729             LOOP_START;
2730             _c   = c + 11;
2731             tmpm = m->dp;
2732 #ifdef INNERMUL8
2733             INNERMUL8; _c += 8; tmpm += 8;
2734             INNERMUL; ++_c;
2735             INNERMUL; ++_c;
2736             INNERMUL; ++_c;
2737             INNERMUL; ++_c;
2738             INNERMUL; ++_c;
2739             INNERMUL; ++_c;
2740 #else
2741             INNERMUL; ++_c;
2742             INNERMUL; ++_c;
2743             INNERMUL; ++_c;
2744             INNERMUL; ++_c;
2745             INNERMUL; ++_c;
2746             INNERMUL; ++_c;
2747             INNERMUL; ++_c;
2748             INNERMUL; ++_c;
2749             INNERMUL; ++_c;
2750             INNERMUL; ++_c;
2751             INNERMUL; ++_c;
2752             INNERMUL; ++_c;
2753             INNERMUL; ++_c;
2754             INNERMUL; ++_c;
2755 #endif
2756             LOOP_END;
2757             while (cy) {
2758                PROPCARRY;
2759                ++_c;
2760             }
2761             x = 12; cy   = 0;
2762             LOOP_START;
2763             _c   = c + 12;
2764             tmpm = m->dp;
2765 #ifdef INNERMUL8
2766             INNERMUL8; _c += 8; tmpm += 8;
2767             INNERMUL; ++_c;
2768             INNERMUL; ++_c;
2769             INNERMUL; ++_c;
2770             INNERMUL; ++_c;
2771             INNERMUL; ++_c;
2772             INNERMUL; ++_c;
2773 #else
2774             INNERMUL; ++_c;
2775             INNERMUL; ++_c;
2776             INNERMUL; ++_c;
2777             INNERMUL; ++_c;
2778             INNERMUL; ++_c;
2779             INNERMUL; ++_c;
2780             INNERMUL; ++_c;
2781             INNERMUL; ++_c;
2782             INNERMUL; ++_c;
2783             INNERMUL; ++_c;
2784             INNERMUL; ++_c;
2785             INNERMUL; ++_c;
2786             INNERMUL; ++_c;
2787             INNERMUL; ++_c;
2788 #endif
2789             LOOP_END;
2790             while (cy) {
2791                PROPCARRY;
2792                ++_c;
2793             }
2794             x = 13; cy   = 0;
2795             LOOP_START;
2796             _c   = c + 13;
2797             tmpm = m->dp;
2798 #ifdef INNERMUL8
2799             INNERMUL8; _c += 8; tmpm += 8;
2800             INNERMUL; ++_c;
2801             INNERMUL; ++_c;
2802             INNERMUL; ++_c;
2803             INNERMUL; ++_c;
2804             INNERMUL; ++_c;
2805             INNERMUL; ++_c;
2806 #else
2807             INNERMUL; ++_c;
2808             INNERMUL; ++_c;
2809             INNERMUL; ++_c;
2810             INNERMUL; ++_c;
2811             INNERMUL; ++_c;
2812             INNERMUL; ++_c;
2813             INNERMUL; ++_c;
2814             INNERMUL; ++_c;
2815             INNERMUL; ++_c;
2816             INNERMUL; ++_c;
2817             INNERMUL; ++_c;
2818             INNERMUL; ++_c;
2819             INNERMUL; ++_c;
2820             INNERMUL; ++_c;
2821 #endif
2822             LOOP_END;
2823             while (cy) {
2824                PROPCARRY;
2825                ++_c;
2826             }
2827          break;
2828       case 15:
2829             x = 0; cy   = 0;
2830             LOOP_START;
2831             _c   = c + 0;
2832             tmpm = m->dp;
2833 #ifdef INNERMUL8
2834             INNERMUL8; _c += 8; tmpm += 8;
2835             INNERMUL; ++_c;
2836             INNERMUL; ++_c;
2837             INNERMUL; ++_c;
2838             INNERMUL; ++_c;
2839             INNERMUL; ++_c;
2840             INNERMUL; ++_c;
2841             INNERMUL; ++_c;
2842 #else
2843             INNERMUL; ++_c;
2844             INNERMUL; ++_c;
2845             INNERMUL; ++_c;
2846             INNERMUL; ++_c;
2847             INNERMUL; ++_c;
2848             INNERMUL; ++_c;
2849             INNERMUL; ++_c;
2850             INNERMUL; ++_c;
2851             INNERMUL; ++_c;
2852             INNERMUL; ++_c;
2853             INNERMUL; ++_c;
2854             INNERMUL; ++_c;
2855             INNERMUL; ++_c;
2856             INNERMUL; ++_c;
2857             INNERMUL; ++_c;
2858 #endif
2859             LOOP_END;
2860             while (cy) {
2861                PROPCARRY;
2862                ++_c;
2863             }
2864             x = 1; cy   = 0;
2865             LOOP_START;
2866             _c   = c + 1;
2867             tmpm = m->dp;
2868 #ifdef INNERMUL8
2869             INNERMUL8; _c += 8; tmpm += 8;
2870             INNERMUL; ++_c;
2871             INNERMUL; ++_c;
2872             INNERMUL; ++_c;
2873             INNERMUL; ++_c;
2874             INNERMUL; ++_c;
2875             INNERMUL; ++_c;
2876             INNERMUL; ++_c;
2877 #else
2878             INNERMUL; ++_c;
2879             INNERMUL; ++_c;
2880             INNERMUL; ++_c;
2881             INNERMUL; ++_c;
2882             INNERMUL; ++_c;
2883             INNERMUL; ++_c;
2884             INNERMUL; ++_c;
2885             INNERMUL; ++_c;
2886             INNERMUL; ++_c;
2887             INNERMUL; ++_c;
2888             INNERMUL; ++_c;
2889             INNERMUL; ++_c;
2890             INNERMUL; ++_c;
2891             INNERMUL; ++_c;
2892             INNERMUL; ++_c;
2893 #endif
2894             LOOP_END;
2895             while (cy) {
2896                PROPCARRY;
2897                ++_c;
2898             }
2899             x = 2; cy   = 0;
2900             LOOP_START;
2901             _c   = c + 2;
2902             tmpm = m->dp;
2903 #ifdef INNERMUL8
2904             INNERMUL8; _c += 8; tmpm += 8;
2905             INNERMUL; ++_c;
2906             INNERMUL; ++_c;
2907             INNERMUL; ++_c;
2908             INNERMUL; ++_c;
2909             INNERMUL; ++_c;
2910             INNERMUL; ++_c;
2911             INNERMUL; ++_c;
2912 #else
2913             INNERMUL; ++_c;
2914             INNERMUL; ++_c;
2915             INNERMUL; ++_c;
2916             INNERMUL; ++_c;
2917             INNERMUL; ++_c;
2918             INNERMUL; ++_c;
2919             INNERMUL; ++_c;
2920             INNERMUL; ++_c;
2921             INNERMUL; ++_c;
2922             INNERMUL; ++_c;
2923             INNERMUL; ++_c;
2924             INNERMUL; ++_c;
2925             INNERMUL; ++_c;
2926             INNERMUL; ++_c;
2927             INNERMUL; ++_c;
2928 #endif
2929             LOOP_END;
2930             while (cy) {
2931                PROPCARRY;
2932                ++_c;
2933             }
2934             x = 3; cy   = 0;
2935             LOOP_START;
2936             _c   = c + 3;
2937             tmpm = m->dp;
2938 #ifdef INNERMUL8
2939             INNERMUL8; _c += 8; tmpm += 8;
2940             INNERMUL; ++_c;
2941             INNERMUL; ++_c;
2942             INNERMUL; ++_c;
2943             INNERMUL; ++_c;
2944             INNERMUL; ++_c;
2945             INNERMUL; ++_c;
2946             INNERMUL; ++_c;
2947 #else
2948             INNERMUL; ++_c;
2949             INNERMUL; ++_c;
2950             INNERMUL; ++_c;
2951             INNERMUL; ++_c;
2952             INNERMUL; ++_c;
2953             INNERMUL; ++_c;
2954             INNERMUL; ++_c;
2955             INNERMUL; ++_c;
2956             INNERMUL; ++_c;
2957             INNERMUL; ++_c;
2958             INNERMUL; ++_c;
2959             INNERMUL; ++_c;
2960             INNERMUL; ++_c;
2961             INNERMUL; ++_c;
2962             INNERMUL; ++_c;
2963 #endif
2964             LOOP_END;
2965             while (cy) {
2966                PROPCARRY;
2967                ++_c;
2968             }
2969             x = 4; cy   = 0;
2970             LOOP_START;
2971             _c   = c + 4;
2972             tmpm = m->dp;
2973 #ifdef INNERMUL8
2974             INNERMUL8; _c += 8; tmpm += 8;
2975             INNERMUL; ++_c;
2976             INNERMUL; ++_c;
2977             INNERMUL; ++_c;
2978             INNERMUL; ++_c;
2979             INNERMUL; ++_c;
2980             INNERMUL; ++_c;
2981             INNERMUL; ++_c;
2982 #else
2983             INNERMUL; ++_c;
2984             INNERMUL; ++_c;
2985             INNERMUL; ++_c;
2986             INNERMUL; ++_c;
2987             INNERMUL; ++_c;
2988             INNERMUL; ++_c;
2989             INNERMUL; ++_c;
2990             INNERMUL; ++_c;
2991             INNERMUL; ++_c;
2992             INNERMUL; ++_c;
2993             INNERMUL; ++_c;
2994             INNERMUL; ++_c;
2995             INNERMUL; ++_c;
2996             INNERMUL; ++_c;
2997             INNERMUL; ++_c;
2998 #endif
2999             LOOP_END;
3000             while (cy) {
3001                PROPCARRY;
3002                ++_c;
3003             }
3004             x = 5; cy   = 0;
3005             LOOP_START;
3006             _c   = c + 5;
3007             tmpm = m->dp;
3008 #ifdef INNERMUL8
3009             INNERMUL8; _c += 8; tmpm += 8;
3010             INNERMUL; ++_c;
3011             INNERMUL; ++_c;
3012             INNERMUL; ++_c;
3013             INNERMUL; ++_c;
3014             INNERMUL; ++_c;
3015             INNERMUL; ++_c;
3016             INNERMUL; ++_c;
3017 #else
3018             INNERMUL; ++_c;
3019             INNERMUL; ++_c;
3020             INNERMUL; ++_c;
3021             INNERMUL; ++_c;
3022             INNERMUL; ++_c;
3023             INNERMUL; ++_c;
3024             INNERMUL; ++_c;
3025             INNERMUL; ++_c;
3026             INNERMUL; ++_c;
3027             INNERMUL; ++_c;
3028             INNERMUL; ++_c;
3029             INNERMUL; ++_c;
3030             INNERMUL; ++_c;
3031             INNERMUL; ++_c;
3032             INNERMUL; ++_c;
3033 #endif
3034             LOOP_END;
3035             while (cy) {
3036                PROPCARRY;
3037                ++_c;
3038             }
3039             x = 6; cy   = 0;
3040             LOOP_START;
3041             _c   = c + 6;
3042             tmpm = m->dp;
3043 #ifdef INNERMUL8
3044             INNERMUL8; _c += 8; tmpm += 8;
3045             INNERMUL; ++_c;
3046             INNERMUL; ++_c;
3047             INNERMUL; ++_c;
3048             INNERMUL; ++_c;
3049             INNERMUL; ++_c;
3050             INNERMUL; ++_c;
3051             INNERMUL; ++_c;
3052 #else
3053             INNERMUL; ++_c;
3054             INNERMUL; ++_c;
3055             INNERMUL; ++_c;
3056             INNERMUL; ++_c;
3057             INNERMUL; ++_c;
3058             INNERMUL; ++_c;
3059             INNERMUL; ++_c;
3060             INNERMUL; ++_c;
3061             INNERMUL; ++_c;
3062             INNERMUL; ++_c;
3063             INNERMUL; ++_c;
3064             INNERMUL; ++_c;
3065             INNERMUL; ++_c;
3066             INNERMUL; ++_c;
3067             INNERMUL; ++_c;
3068 #endif
3069             LOOP_END;
3070             while (cy) {
3071                PROPCARRY;
3072                ++_c;
3073             }
3074             x = 7; cy   = 0;
3075             LOOP_START;
3076             _c   = c + 7;
3077             tmpm = m->dp;
3078 #ifdef INNERMUL8
3079             INNERMUL8; _c += 8; tmpm += 8;
3080             INNERMUL; ++_c;
3081             INNERMUL; ++_c;
3082             INNERMUL; ++_c;
3083             INNERMUL; ++_c;
3084             INNERMUL; ++_c;
3085             INNERMUL; ++_c;
3086             INNERMUL; ++_c;
3087 #else
3088             INNERMUL; ++_c;
3089             INNERMUL; ++_c;
3090             INNERMUL; ++_c;
3091             INNERMUL; ++_c;
3092             INNERMUL; ++_c;
3093             INNERMUL; ++_c;
3094             INNERMUL; ++_c;
3095             INNERMUL; ++_c;
3096             INNERMUL; ++_c;
3097             INNERMUL; ++_c;
3098             INNERMUL; ++_c;
3099             INNERMUL; ++_c;
3100             INNERMUL; ++_c;
3101             INNERMUL; ++_c;
3102             INNERMUL; ++_c;
3103 #endif
3104             LOOP_END;
3105             while (cy) {
3106                PROPCARRY;
3107                ++_c;
3108             }
3109             x = 8; cy   = 0;
3110             LOOP_START;
3111             _c   = c + 8;
3112             tmpm = m->dp;
3113 #ifdef INNERMUL8
3114             INNERMUL8; _c += 8; tmpm += 8;
3115             INNERMUL; ++_c;
3116             INNERMUL; ++_c;
3117             INNERMUL; ++_c;
3118             INNERMUL; ++_c;
3119             INNERMUL; ++_c;
3120             INNERMUL; ++_c;
3121             INNERMUL; ++_c;
3122 #else
3123             INNERMUL; ++_c;
3124             INNERMUL; ++_c;
3125             INNERMUL; ++_c;
3126             INNERMUL; ++_c;
3127             INNERMUL; ++_c;
3128             INNERMUL; ++_c;
3129             INNERMUL; ++_c;
3130             INNERMUL; ++_c;
3131             INNERMUL; ++_c;
3132             INNERMUL; ++_c;
3133             INNERMUL; ++_c;
3134             INNERMUL; ++_c;
3135             INNERMUL; ++_c;
3136             INNERMUL; ++_c;
3137             INNERMUL; ++_c;
3138 #endif
3139             LOOP_END;
3140             while (cy) {
3141                PROPCARRY;
3142                ++_c;
3143             }
3144             x = 9; cy   = 0;
3145             LOOP_START;
3146             _c   = c + 9;
3147             tmpm = m->dp;
3148 #ifdef INNERMUL8
3149             INNERMUL8; _c += 8; tmpm += 8;
3150             INNERMUL; ++_c;
3151             INNERMUL; ++_c;
3152             INNERMUL; ++_c;
3153             INNERMUL; ++_c;
3154             INNERMUL; ++_c;
3155             INNERMUL; ++_c;
3156             INNERMUL; ++_c;
3157 #else
3158             INNERMUL; ++_c;
3159             INNERMUL; ++_c;
3160             INNERMUL; ++_c;
3161             INNERMUL; ++_c;
3162             INNERMUL; ++_c;
3163             INNERMUL; ++_c;
3164             INNERMUL; ++_c;
3165             INNERMUL; ++_c;
3166             INNERMUL; ++_c;
3167             INNERMUL; ++_c;
3168             INNERMUL; ++_c;
3169             INNERMUL; ++_c;
3170             INNERMUL; ++_c;
3171             INNERMUL; ++_c;
3172             INNERMUL; ++_c;
3173 #endif
3174             LOOP_END;
3175             while (cy) {
3176                PROPCARRY;
3177                ++_c;
3178             }
3179             x = 10; cy   = 0;
3180             LOOP_START;
3181             _c   = c + 10;
3182             tmpm = m->dp;
3183 #ifdef INNERMUL8
3184             INNERMUL8; _c += 8; tmpm += 8;
3185             INNERMUL; ++_c;
3186             INNERMUL; ++_c;
3187             INNERMUL; ++_c;
3188             INNERMUL; ++_c;
3189             INNERMUL; ++_c;
3190             INNERMUL; ++_c;
3191             INNERMUL; ++_c;
3192 #else
3193             INNERMUL; ++_c;
3194             INNERMUL; ++_c;
3195             INNERMUL; ++_c;
3196             INNERMUL; ++_c;
3197             INNERMUL; ++_c;
3198             INNERMUL; ++_c;
3199             INNERMUL; ++_c;
3200             INNERMUL; ++_c;
3201             INNERMUL; ++_c;
3202             INNERMUL; ++_c;
3203             INNERMUL; ++_c;
3204             INNERMUL; ++_c;
3205             INNERMUL; ++_c;
3206             INNERMUL; ++_c;
3207             INNERMUL; ++_c;
3208 #endif
3209             LOOP_END;
3210             while (cy) {
3211                PROPCARRY;
3212                ++_c;
3213             }
3214             x = 11; cy   = 0;
3215             LOOP_START;
3216             _c   = c + 11;
3217             tmpm = m->dp;
3218 #ifdef INNERMUL8
3219             INNERMUL8; _c += 8; tmpm += 8;
3220             INNERMUL; ++_c;
3221             INNERMUL; ++_c;
3222             INNERMUL; ++_c;
3223             INNERMUL; ++_c;
3224             INNERMUL; ++_c;
3225             INNERMUL; ++_c;
3226             INNERMUL; ++_c;
3227 #else
3228             INNERMUL; ++_c;
3229             INNERMUL; ++_c;
3230             INNERMUL; ++_c;
3231             INNERMUL; ++_c;
3232             INNERMUL; ++_c;
3233             INNERMUL; ++_c;
3234             INNERMUL; ++_c;
3235             INNERMUL; ++_c;
3236             INNERMUL; ++_c;
3237             INNERMUL; ++_c;
3238             INNERMUL; ++_c;
3239             INNERMUL; ++_c;
3240             INNERMUL; ++_c;
3241             INNERMUL; ++_c;
3242             INNERMUL; ++_c;
3243 #endif
3244             LOOP_END;
3245             while (cy) {
3246                PROPCARRY;
3247                ++_c;
3248             }
3249             x = 12; cy   = 0;
3250             LOOP_START;
3251             _c   = c + 12;
3252             tmpm = m->dp;
3253 #ifdef INNERMUL8
3254             INNERMUL8; _c += 8; tmpm += 8;
3255             INNERMUL; ++_c;
3256             INNERMUL; ++_c;
3257             INNERMUL; ++_c;
3258             INNERMUL; ++_c;
3259             INNERMUL; ++_c;
3260             INNERMUL; ++_c;
3261             INNERMUL; ++_c;
3262 #else
3263             INNERMUL; ++_c;
3264             INNERMUL; ++_c;
3265             INNERMUL; ++_c;
3266             INNERMUL; ++_c;
3267             INNERMUL; ++_c;
3268             INNERMUL; ++_c;
3269             INNERMUL; ++_c;
3270             INNERMUL; ++_c;
3271             INNERMUL; ++_c;
3272             INNERMUL; ++_c;
3273             INNERMUL; ++_c;
3274             INNERMUL; ++_c;
3275             INNERMUL; ++_c;
3276             INNERMUL; ++_c;
3277             INNERMUL; ++_c;
3278 #endif
3279             LOOP_END;
3280             while (cy) {
3281                PROPCARRY;
3282                ++_c;
3283             }
3284             x = 13; cy   = 0;
3285             LOOP_START;
3286             _c   = c + 13;
3287             tmpm = m->dp;
3288 #ifdef INNERMUL8
3289             INNERMUL8; _c += 8; tmpm += 8;
3290             INNERMUL; ++_c;
3291             INNERMUL; ++_c;
3292             INNERMUL; ++_c;
3293             INNERMUL; ++_c;
3294             INNERMUL; ++_c;
3295             INNERMUL; ++_c;
3296             INNERMUL; ++_c;
3297 #else
3298             INNERMUL; ++_c;
3299             INNERMUL; ++_c;
3300             INNERMUL; ++_c;
3301             INNERMUL; ++_c;
3302             INNERMUL; ++_c;
3303             INNERMUL; ++_c;
3304             INNERMUL; ++_c;
3305             INNERMUL; ++_c;
3306             INNERMUL; ++_c;
3307             INNERMUL; ++_c;
3308             INNERMUL; ++_c;
3309             INNERMUL; ++_c;
3310             INNERMUL; ++_c;
3311             INNERMUL; ++_c;
3312             INNERMUL; ++_c;
3313 #endif
3314             LOOP_END;
3315             while (cy) {
3316                PROPCARRY;
3317                ++_c;
3318             }
3319             x = 14; cy   = 0;
3320             LOOP_START;
3321             _c   = c + 14;
3322             tmpm = m->dp;
3323 #ifdef INNERMUL8
3324             INNERMUL8; _c += 8; tmpm += 8;
3325             INNERMUL; ++_c;
3326             INNERMUL; ++_c;
3327             INNERMUL; ++_c;
3328             INNERMUL; ++_c;
3329             INNERMUL; ++_c;
3330             INNERMUL; ++_c;
3331             INNERMUL; ++_c;
3332 #else
3333             INNERMUL; ++_c;
3334             INNERMUL; ++_c;
3335             INNERMUL; ++_c;
3336             INNERMUL; ++_c;
3337             INNERMUL; ++_c;
3338             INNERMUL; ++_c;
3339             INNERMUL; ++_c;
3340             INNERMUL; ++_c;
3341             INNERMUL; ++_c;
3342             INNERMUL; ++_c;
3343             INNERMUL; ++_c;
3344             INNERMUL; ++_c;
3345             INNERMUL; ++_c;
3346             INNERMUL; ++_c;
3347             INNERMUL; ++_c;
3348 #endif
3349             LOOP_END;
3350             while (cy) {
3351                PROPCARRY;
3352                ++_c;
3353             }
3354          break;
3355       case 16:
3356             x = 0; cy   = 0;
3357             LOOP_START;
3358             _c   = c + 0;
3359             tmpm = m->dp;
3360 #ifdef INNERMUL8
3361             INNERMUL8; _c += 8; tmpm += 8;
3362             INNERMUL8; _c += 8; tmpm += 8;
3363 #else
3364             INNERMUL; ++_c;
3365             INNERMUL; ++_c;
3366             INNERMUL; ++_c;
3367             INNERMUL; ++_c;
3368             INNERMUL; ++_c;
3369             INNERMUL; ++_c;
3370             INNERMUL; ++_c;
3371             INNERMUL; ++_c;
3372             INNERMUL; ++_c;
3373             INNERMUL; ++_c;
3374             INNERMUL; ++_c;
3375             INNERMUL; ++_c;
3376             INNERMUL; ++_c;
3377             INNERMUL; ++_c;
3378             INNERMUL; ++_c;
3379             INNERMUL; ++_c;
3380 #endif
3381             LOOP_END;
3382             while (cy) {
3383                PROPCARRY;
3384                ++_c;
3385             }
3386             x = 1; cy   = 0;
3387             LOOP_START;
3388             _c   = c + 1;
3389             tmpm = m->dp;
3390 #ifdef INNERMUL8
3391             INNERMUL8; _c += 8; tmpm += 8;
3392             INNERMUL8; _c += 8; tmpm += 8;
3393 #else
3394             INNERMUL; ++_c;
3395             INNERMUL; ++_c;
3396             INNERMUL; ++_c;
3397             INNERMUL; ++_c;
3398             INNERMUL; ++_c;
3399             INNERMUL; ++_c;
3400             INNERMUL; ++_c;
3401             INNERMUL; ++_c;
3402             INNERMUL; ++_c;
3403             INNERMUL; ++_c;
3404             INNERMUL; ++_c;
3405             INNERMUL; ++_c;
3406             INNERMUL; ++_c;
3407             INNERMUL; ++_c;
3408             INNERMUL; ++_c;
3409             INNERMUL; ++_c;
3410 #endif
3411             LOOP_END;
3412             while (cy) {
3413                PROPCARRY;
3414                ++_c;
3415             }
3416             x = 2; cy   = 0;
3417             LOOP_START;
3418             _c   = c + 2;
3419             tmpm = m->dp;
3420 #ifdef INNERMUL8
3421             INNERMUL8; _c += 8; tmpm += 8;
3422             INNERMUL8; _c += 8; tmpm += 8;
3423 #else
3424             INNERMUL; ++_c;
3425             INNERMUL; ++_c;
3426             INNERMUL; ++_c;
3427             INNERMUL; ++_c;
3428             INNERMUL; ++_c;
3429             INNERMUL; ++_c;
3430             INNERMUL; ++_c;
3431             INNERMUL; ++_c;
3432             INNERMUL; ++_c;
3433             INNERMUL; ++_c;
3434             INNERMUL; ++_c;
3435             INNERMUL; ++_c;
3436             INNERMUL; ++_c;
3437             INNERMUL; ++_c;
3438             INNERMUL; ++_c;
3439             INNERMUL; ++_c;
3440 #endif
3441             LOOP_END;
3442             while (cy) {
3443                PROPCARRY;
3444                ++_c;
3445             }
3446             x = 3; cy   = 0;
3447             LOOP_START;
3448             _c   = c + 3;
3449             tmpm = m->dp;
3450 #ifdef INNERMUL8
3451             INNERMUL8; _c += 8; tmpm += 8;
3452             INNERMUL8; _c += 8; tmpm += 8;
3453 #else
3454             INNERMUL; ++_c;
3455             INNERMUL; ++_c;
3456             INNERMUL; ++_c;
3457             INNERMUL; ++_c;
3458             INNERMUL; ++_c;
3459             INNERMUL; ++_c;
3460             INNERMUL; ++_c;
3461             INNERMUL; ++_c;
3462             INNERMUL; ++_c;
3463             INNERMUL; ++_c;
3464             INNERMUL; ++_c;
3465             INNERMUL; ++_c;
3466             INNERMUL; ++_c;
3467             INNERMUL; ++_c;
3468             INNERMUL; ++_c;
3469             INNERMUL; ++_c;
3470 #endif
3471             LOOP_END;
3472             while (cy) {
3473                PROPCARRY;
3474                ++_c;
3475             }
3476             x = 4; cy   = 0;
3477             LOOP_START;
3478             _c   = c + 4;
3479             tmpm = m->dp;
3480 #ifdef INNERMUL8
3481             INNERMUL8; _c += 8; tmpm += 8;
3482             INNERMUL8; _c += 8; tmpm += 8;
3483 #else
3484             INNERMUL; ++_c;
3485             INNERMUL; ++_c;
3486             INNERMUL; ++_c;
3487             INNERMUL; ++_c;
3488             INNERMUL; ++_c;
3489             INNERMUL; ++_c;
3490             INNERMUL; ++_c;
3491             INNERMUL; ++_c;
3492             INNERMUL; ++_c;
3493             INNERMUL; ++_c;
3494             INNERMUL; ++_c;
3495             INNERMUL; ++_c;
3496             INNERMUL; ++_c;
3497             INNERMUL; ++_c;
3498             INNERMUL; ++_c;
3499             INNERMUL; ++_c;
3500 #endif
3501             LOOP_END;
3502             while (cy) {
3503                PROPCARRY;
3504                ++_c;
3505             }
3506             x = 5; cy   = 0;
3507             LOOP_START;
3508             _c   = c + 5;
3509             tmpm = m->dp;
3510 #ifdef INNERMUL8
3511             INNERMUL8; _c += 8; tmpm += 8;
3512             INNERMUL8; _c += 8; tmpm += 8;
3513 #else
3514             INNERMUL; ++_c;
3515             INNERMUL; ++_c;
3516             INNERMUL; ++_c;
3517             INNERMUL; ++_c;
3518             INNERMUL; ++_c;
3519             INNERMUL; ++_c;
3520             INNERMUL; ++_c;
3521             INNERMUL; ++_c;
3522             INNERMUL; ++_c;
3523             INNERMUL; ++_c;
3524             INNERMUL; ++_c;
3525             INNERMUL; ++_c;
3526             INNERMUL; ++_c;
3527             INNERMUL; ++_c;
3528             INNERMUL; ++_c;
3529             INNERMUL; ++_c;
3530 #endif
3531             LOOP_END;
3532             while (cy) {
3533                PROPCARRY;
3534                ++_c;
3535             }
3536             x = 6; cy   = 0;
3537             LOOP_START;
3538             _c   = c + 6;
3539             tmpm = m->dp;
3540 #ifdef INNERMUL8
3541             INNERMUL8; _c += 8; tmpm += 8;
3542             INNERMUL8; _c += 8; tmpm += 8;
3543 #else
3544             INNERMUL; ++_c;
3545             INNERMUL; ++_c;
3546             INNERMUL; ++_c;
3547             INNERMUL; ++_c;
3548             INNERMUL; ++_c;
3549             INNERMUL; ++_c;
3550             INNERMUL; ++_c;
3551             INNERMUL; ++_c;
3552             INNERMUL; ++_c;
3553             INNERMUL; ++_c;
3554             INNERMUL; ++_c;
3555             INNERMUL; ++_c;
3556             INNERMUL; ++_c;
3557             INNERMUL; ++_c;
3558             INNERMUL; ++_c;
3559             INNERMUL; ++_c;
3560 #endif
3561             LOOP_END;
3562             while (cy) {
3563                PROPCARRY;
3564                ++_c;
3565             }
3566             x = 7; cy   = 0;
3567             LOOP_START;
3568             _c   = c + 7;
3569             tmpm = m->dp;
3570 #ifdef INNERMUL8
3571             INNERMUL8; _c += 8; tmpm += 8;
3572             INNERMUL8; _c += 8; tmpm += 8;
3573 #else
3574             INNERMUL; ++_c;
3575             INNERMUL; ++_c;
3576             INNERMUL; ++_c;
3577             INNERMUL; ++_c;
3578             INNERMUL; ++_c;
3579             INNERMUL; ++_c;
3580             INNERMUL; ++_c;
3581             INNERMUL; ++_c;
3582             INNERMUL; ++_c;
3583             INNERMUL; ++_c;
3584             INNERMUL; ++_c;
3585             INNERMUL; ++_c;
3586             INNERMUL; ++_c;
3587             INNERMUL; ++_c;
3588             INNERMUL; ++_c;
3589             INNERMUL; ++_c;
3590 #endif
3591             LOOP_END;
3592             while (cy) {
3593                PROPCARRY;
3594                ++_c;
3595             }
3596             x = 8; cy   = 0;
3597             LOOP_START;
3598             _c   = c + 8;
3599             tmpm = m->dp;
3600 #ifdef INNERMUL8
3601             INNERMUL8; _c += 8; tmpm += 8;
3602             INNERMUL8; _c += 8; tmpm += 8;
3603 #else
3604             INNERMUL; ++_c;
3605             INNERMUL; ++_c;
3606             INNERMUL; ++_c;
3607             INNERMUL; ++_c;
3608             INNERMUL; ++_c;
3609             INNERMUL; ++_c;
3610             INNERMUL; ++_c;
3611             INNERMUL; ++_c;
3612             INNERMUL; ++_c;
3613             INNERMUL; ++_c;
3614             INNERMUL; ++_c;
3615             INNERMUL; ++_c;
3616             INNERMUL; ++_c;
3617             INNERMUL; ++_c;
3618             INNERMUL; ++_c;
3619             INNERMUL; ++_c;
3620 #endif
3621             LOOP_END;
3622             while (cy) {
3623                PROPCARRY;
3624                ++_c;
3625             }
3626             x = 9; cy   = 0;
3627             LOOP_START;
3628             _c   = c + 9;
3629             tmpm = m->dp;
3630 #ifdef INNERMUL8
3631             INNERMUL8; _c += 8; tmpm += 8;
3632             INNERMUL8; _c += 8; tmpm += 8;
3633 #else
3634             INNERMUL; ++_c;
3635             INNERMUL; ++_c;
3636             INNERMUL; ++_c;
3637             INNERMUL; ++_c;
3638             INNERMUL; ++_c;
3639             INNERMUL; ++_c;
3640             INNERMUL; ++_c;
3641             INNERMUL; ++_c;
3642             INNERMUL; ++_c;
3643             INNERMUL; ++_c;
3644             INNERMUL; ++_c;
3645             INNERMUL; ++_c;
3646             INNERMUL; ++_c;
3647             INNERMUL; ++_c;
3648             INNERMUL; ++_c;
3649             INNERMUL; ++_c;
3650 #endif
3651             LOOP_END;
3652             while (cy) {
3653                PROPCARRY;
3654                ++_c;
3655             }
3656             x = 10; cy   = 0;
3657             LOOP_START;
3658             _c   = c + 10;
3659             tmpm = m->dp;
3660 #ifdef INNERMUL8
3661             INNERMUL8; _c += 8; tmpm += 8;
3662             INNERMUL8; _c += 8; tmpm += 8;
3663 #else
3664             INNERMUL; ++_c;
3665             INNERMUL; ++_c;
3666             INNERMUL; ++_c;
3667             INNERMUL; ++_c;
3668             INNERMUL; ++_c;
3669             INNERMUL; ++_c;
3670             INNERMUL; ++_c;
3671             INNERMUL; ++_c;
3672             INNERMUL; ++_c;
3673             INNERMUL; ++_c;
3674             INNERMUL; ++_c;
3675             INNERMUL; ++_c;
3676             INNERMUL; ++_c;
3677             INNERMUL; ++_c;
3678             INNERMUL; ++_c;
3679             INNERMUL; ++_c;
3680 #endif
3681             LOOP_END;
3682             while (cy) {
3683                PROPCARRY;
3684                ++_c;
3685             }
3686             x = 11; cy   = 0;
3687             LOOP_START;
3688             _c   = c + 11;
3689             tmpm = m->dp;
3690 #ifdef INNERMUL8
3691             INNERMUL8; _c += 8; tmpm += 8;
3692             INNERMUL8; _c += 8; tmpm += 8;
3693 #else
3694             INNERMUL; ++_c;
3695             INNERMUL; ++_c;
3696             INNERMUL; ++_c;
3697             INNERMUL; ++_c;
3698             INNERMUL; ++_c;
3699             INNERMUL; ++_c;
3700             INNERMUL; ++_c;
3701             INNERMUL; ++_c;
3702             INNERMUL; ++_c;
3703             INNERMUL; ++_c;
3704             INNERMUL; ++_c;
3705             INNERMUL; ++_c;
3706             INNERMUL; ++_c;
3707             INNERMUL; ++_c;
3708             INNERMUL; ++_c;
3709             INNERMUL; ++_c;
3710 #endif
3711             LOOP_END;
3712             while (cy) {
3713                PROPCARRY;
3714                ++_c;
3715             }
3716             x = 12; cy   = 0;
3717             LOOP_START;
3718             _c   = c + 12;
3719             tmpm = m->dp;
3720 #ifdef INNERMUL8
3721             INNERMUL8; _c += 8; tmpm += 8;
3722             INNERMUL8; _c += 8; tmpm += 8;
3723 #else
3724             INNERMUL; ++_c;
3725             INNERMUL; ++_c;
3726             INNERMUL; ++_c;
3727             INNERMUL; ++_c;
3728             INNERMUL; ++_c;
3729             INNERMUL; ++_c;
3730             INNERMUL; ++_c;
3731             INNERMUL; ++_c;
3732             INNERMUL; ++_c;
3733             INNERMUL; ++_c;
3734             INNERMUL; ++_c;
3735             INNERMUL; ++_c;
3736             INNERMUL; ++_c;
3737             INNERMUL; ++_c;
3738             INNERMUL; ++_c;
3739             INNERMUL; ++_c;
3740 #endif
3741             LOOP_END;
3742             while (cy) {
3743                PROPCARRY;
3744                ++_c;
3745             }
3746             x = 13; cy   = 0;
3747             LOOP_START;
3748             _c   = c + 13;
3749             tmpm = m->dp;
3750 #ifdef INNERMUL8
3751             INNERMUL8; _c += 8; tmpm += 8;
3752             INNERMUL8; _c += 8; tmpm += 8;
3753 #else
3754             INNERMUL; ++_c;
3755             INNERMUL; ++_c;
3756             INNERMUL; ++_c;
3757             INNERMUL; ++_c;
3758             INNERMUL; ++_c;
3759             INNERMUL; ++_c;
3760             INNERMUL; ++_c;
3761             INNERMUL; ++_c;
3762             INNERMUL; ++_c;
3763             INNERMUL; ++_c;
3764             INNERMUL; ++_c;
3765             INNERMUL; ++_c;
3766             INNERMUL; ++_c;
3767             INNERMUL; ++_c;
3768             INNERMUL; ++_c;
3769             INNERMUL; ++_c;
3770 #endif
3771             LOOP_END;
3772             while (cy) {
3773                PROPCARRY;
3774                ++_c;
3775             }
3776             x = 14; cy   = 0;
3777             LOOP_START;
3778             _c   = c + 14;
3779             tmpm = m->dp;
3780 #ifdef INNERMUL8
3781             INNERMUL8; _c += 8; tmpm += 8;
3782             INNERMUL8; _c += 8; tmpm += 8;
3783 #else
3784             INNERMUL; ++_c;
3785             INNERMUL; ++_c;
3786             INNERMUL; ++_c;
3787             INNERMUL; ++_c;
3788             INNERMUL; ++_c;
3789             INNERMUL; ++_c;
3790             INNERMUL; ++_c;
3791             INNERMUL; ++_c;
3792             INNERMUL; ++_c;
3793             INNERMUL; ++_c;
3794             INNERMUL; ++_c;
3795             INNERMUL; ++_c;
3796             INNERMUL; ++_c;
3797             INNERMUL; ++_c;
3798             INNERMUL; ++_c;
3799             INNERMUL; ++_c;
3800 #endif
3801             LOOP_END;
3802             while (cy) {
3803                PROPCARRY;
3804                ++_c;
3805             }
3806             x = 15; cy   = 0;
3807             LOOP_START;
3808             _c   = c + 15;
3809             tmpm = m->dp;
3810 #ifdef INNERMUL8
3811             INNERMUL8; _c += 8; tmpm += 8;
3812             INNERMUL8; _c += 8; tmpm += 8;
3813 #else
3814             INNERMUL; ++_c;
3815             INNERMUL; ++_c;
3816             INNERMUL; ++_c;
3817             INNERMUL; ++_c;
3818             INNERMUL; ++_c;
3819             INNERMUL; ++_c;
3820             INNERMUL; ++_c;
3821             INNERMUL; ++_c;
3822             INNERMUL; ++_c;
3823             INNERMUL; ++_c;
3824             INNERMUL; ++_c;
3825             INNERMUL; ++_c;
3826             INNERMUL; ++_c;
3827             INNERMUL; ++_c;
3828             INNERMUL; ++_c;
3829             INNERMUL; ++_c;
3830 #endif
3831             LOOP_END;
3832             while (cy) {
3833                PROPCARRY;
3834                ++_c;
3835             }
3836          break;
3837   }
3838   /* now copy out */
3839   _c   = c + pa;
3840   tmpm = a->dp;
3841   for (x = 0; x < pa+1; x++) {
3842      *tmpm++ = *_c++;
3843   }
3844
3845   for (; x < oldused; x++)   {
3846      *tmpm++ = 0;
3847   }
3848
3849   MONT_FINI;
3850
3851   a->used = pa+1;
3852   fp_clamp(a);
3853
3854   /* if A >= m then A = A - m */
3855   if (fp_cmp_mag (a, m) != FP_LT) {
3856     s_fp_sub (a, m, a);
3857   }
3858 }
3859
3860 #endif