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