xref: /btstack/3rd-party/micro-ecc/asm_avr.inc (revision 0561b2d8d5dba972c7daa57d5e677f7a1327edfd)
1#define DEC_20 19
2#define DEC_24 23
3#define DEC_28 27
4#define DEC_32 31
5
6#define DEC(N) uECC_CONCAT(DEC_, N)
7
8#define REPEAT_1(stuff) stuff
9#define REPEAT_2(stuff) REPEAT_1(stuff) stuff
10#define REPEAT_3(stuff) REPEAT_2(stuff) stuff
11#define REPEAT_4(stuff) REPEAT_3(stuff) stuff
12#define REPEAT_5(stuff) REPEAT_4(stuff) stuff
13#define REPEAT_6(stuff) REPEAT_5(stuff) stuff
14#define REPEAT_7(stuff) REPEAT_6(stuff) stuff
15#define REPEAT_8(stuff) REPEAT_7(stuff) stuff
16#define REPEAT_9(stuff) REPEAT_8(stuff) stuff
17#define REPEAT_10(stuff) REPEAT_9(stuff) stuff
18#define REPEAT_11(stuff) REPEAT_10(stuff) stuff
19#define REPEAT_12(stuff) REPEAT_11(stuff) stuff
20#define REPEAT_13(stuff) REPEAT_12(stuff) stuff
21#define REPEAT_14(stuff) REPEAT_13(stuff) stuff
22#define REPEAT_15(stuff) REPEAT_14(stuff) stuff
23#define REPEAT_16(stuff) REPEAT_15(stuff) stuff
24#define REPEAT_17(stuff) REPEAT_16(stuff) stuff
25#define REPEAT_18(stuff) REPEAT_17(stuff) stuff
26#define REPEAT_19(stuff) REPEAT_18(stuff) stuff
27#define REPEAT_20(stuff) REPEAT_19(stuff) stuff
28#define REPEAT_21(stuff) REPEAT_20(stuff) stuff
29#define REPEAT_22(stuff) REPEAT_21(stuff) stuff
30#define REPEAT_23(stuff) REPEAT_22(stuff) stuff
31#define REPEAT_24(stuff) REPEAT_23(stuff) stuff
32#define REPEAT_25(stuff) REPEAT_24(stuff) stuff
33#define REPEAT_26(stuff) REPEAT_25(stuff) stuff
34#define REPEAT_27(stuff) REPEAT_26(stuff) stuff
35#define REPEAT_28(stuff) REPEAT_27(stuff) stuff
36#define REPEAT_29(stuff) REPEAT_28(stuff) stuff
37#define REPEAT_30(stuff) REPEAT_29(stuff) stuff
38#define REPEAT_31(stuff) REPEAT_30(stuff) stuff
39#define REPEAT_32(stuff) REPEAT_31(stuff) stuff
40
41#define REPEAT(N, stuff) uECC_CONCAT(REPEAT_, N)(stuff)
42
43#define STR2(thing) #thing
44#define STR(thing) STR2(thing)
45
46#if (uECC_ASM == uECC_asm_fast)
47
48static void vli_clear(uint8_t *vli) {
49    __asm__ volatile (
50        REPEAT(uECC_BYTES,
51            "st %a[ptr]+, r1 \n\t")
52        : [ptr] "+e" (vli)
53        :
54        : "r0", "cc", "memory"
55    );
56}
57#define asm_clear 1
58
59static void vli_set(uint8_t *dest, const uint8_t *src) {
60    __asm__ volatile (
61        REPEAT(uECC_BYTES,
62            "ld r0, %a[sptr]+ \n\t"
63            "st %a[dptr]+, r0 \n\t")
64        : [dptr] "+e" (dest), [sptr] "+e" (src)
65        :
66        : "r0", "cc", "memory"
67    );
68}
69#define asm_set 1
70
71static void vli_rshift1(uint8_t *vli) {
72    __asm__ volatile (
73        "adiw r30, " STR(uECC_BYTES) " \n\t"
74        "ld r0, -z \n\t"  /* Load byte. */
75        "lsr r0 \n\t" /* Shift. */
76        "st z, r0 \n\t"  /* Store the first result byte. */
77
78        /* Now we just do the remaining bytes with the carry bit (using ROR) */
79        REPEAT(DEC(uECC_BYTES),
80            "ld r0, -z \n\t"
81            "ror r0 \n\t"
82            "st z, r0 \n\t")
83        : "+z" (vli)
84        :
85        : "r0", "cc", "memory"
86    );
87}
88#define asm_rshift1 1
89
90/* Computes result = left + right, returning carry. Can modify in place. */
91static uint8_t vli_add(uint8_t *result, const uint8_t *left, const uint8_t *right) {
92    uint8_t carry = 0;
93    uint8_t left_byte;
94    uint8_t right_byte;
95
96    __asm__ volatile (
97        "ld %[left], x+ \n\t"  /* Load left byte. */
98        "ld %[right], y+ \n\t" /* Load right byte. */
99        "add %[left], %[right] \n\t" /* Add the first byte. */
100        "st z+, %[left] \n\t"  /* Store the first result byte. */
101
102        /* Now we just do the remaining bytes with the carry bit (using ADC) */
103        REPEAT(DEC(uECC_BYTES),
104            "ld %[left], x+ \n\t"
105            "ld %[right], y+ \n\t"
106            "adc %[left], %[right] \n\t"
107            "st z+, %[left] \n\t")
108
109        "adc %[carry], %[carry] \n\t" /* Store carry bit. */
110        "sbiw r28, " STR(uECC_BYTES) " \n\t" /* Restore Y */
111
112        : "+z" (result), "+x" (left),
113          [carry] "+r" (carry), [left] "=&r" (left_byte), [right] "=&r" (right_byte)
114        : "y" (right)
115        : "cc", "memory"
116    );
117    return carry;
118}
119#define asm_add 1
120
121/* Computes result = left - right, returning borrow. Can modify in place. */
122static uint8_t vli_sub(uint8_t *result, const uint8_t *left, const uint8_t *right) {
123    uint8_t borrow = 0;
124    uint8_t left_byte;
125    uint8_t right_byte;
126
127    __asm__ volatile (
128        "ld %[left], x+ \n\t"  /* Load left byte. */
129        "ld %[right], y+ \n\t" /* Load right byte. */
130        "sub %[left], %[right] \n\t" /* Subtract the first byte. */
131        "st z+, %[left] \n\t"  /* Store the first result byte. */
132
133        /* Now we just do the remaining bytes with the carry bit (using SBC) */
134        REPEAT(DEC(uECC_BYTES),
135            "ld %[left], x+ \n\t"
136            "ld %[right], y+ \n\t"
137            "sbc %[left], %[right] \n\t"
138            "st z+, %[left] \n\t")
139
140        "adc %[borrow], %[borrow] \n\t" /* Store carry bit in borrow. */
141        "sbiw r28, " STR(uECC_BYTES) " \n\t" /* Restore Y */
142
143        : "+z" (result), "+x" (left),
144            [borrow] "+r" (borrow), [left] "=&r" (left_byte), [right] "=&r" (right_byte)
145        : "y" (right)
146        : "cc", "memory"
147    );
148    return borrow;
149}
150#define asm_sub 1
151
152#if (uECC_BYTES == 20)
153__attribute((noinline))
154static void vli_mult(uint8_t *result, const uint8_t *left, const uint8_t *right) {
155    __asm__ volatile (
156        "adiw r30, 10 \n\t"
157        "adiw r28, 10 \n\t"
158        "ld r2, x+ \n\t"
159        "ld r3, x+ \n\t"
160        "ld r4, x+ \n\t"
161        "ld r5, x+ \n\t"
162        "ld r6, x+ \n\t"
163        "ld r7, x+ \n\t"
164        "ld r8, x+ \n\t"
165        "ld r9, x+ \n\t"
166        "ld r10, x+ \n\t"
167        "ld r11, x+ \n\t"
168        "ld r12, y+ \n\t"
169        "ld r13, y+ \n\t"
170        "ld r14, y+ \n\t"
171        "ld r15, y+ \n\t"
172        "ld r16, y+ \n\t"
173        "ld r17, y+ \n\t"
174        "ld r18, y+ \n\t"
175        "ld r19, y+ \n\t"
176        "ld r20, y+ \n\t"
177        "ld r21, y+ \n\t"
178        "ldi r25, 0 \n\t"
179
180        "ldi r23, 0 \n\t"
181        "mul r2, r12 \n\t"
182        "st z+, r0 \n\t"
183        "mov r22, r1 \n\t"
184
185        "ldi r24, 0 \n\t"
186        "mul r2, r13 \n\t"
187        "add r22, r0 \n\t"
188        "adc r23, r1 \n\t"
189        "mul r3, r12 \n\t"
190        "add r22, r0 \n\t"
191        "adc r23, r1 \n\t"
192        "adc r24, r25 \n\t"
193        "st z+, r22 \n\t"
194
195        "ldi r22, 0 \n\t"
196        "mul r2, r14 \n\t"
197        "add r23, r0 \n\t"
198        "adc r24, r1 \n\t"
199        "adc r22, r25 \n\t"
200        "mul r3, r13 \n\t"
201        "add r23, r0 \n\t"
202        "adc r24, r1 \n\t"
203        "adc r22, r25 \n\t"
204        "mul r4, r12 \n\t"
205        "add r23, r0 \n\t"
206        "adc r24, r1 \n\t"
207        "adc r22, r25 \n\t"
208        "st z+, r23 \n\t"
209
210        "ldi r23, 0 \n\t"
211        "mul r2, r15 \n\t"
212        "add r24, r0 \n\t"
213        "adc r22, r1 \n\t"
214        "adc r23, r25 \n\t"
215        "mul r3, r14 \n\t"
216        "add r24, r0 \n\t"
217        "adc r22, r1 \n\t"
218        "adc r23, r25 \n\t"
219        "mul r4, r13 \n\t"
220        "add r24, r0 \n\t"
221        "adc r22, r1 \n\t"
222        "adc r23, r25 \n\t"
223        "mul r5, r12 \n\t"
224        "add r24, r0 \n\t"
225        "adc r22, r1 \n\t"
226        "adc r23, r25 \n\t"
227        "st z+, r24 \n\t"
228
229        "ldi r24, 0 \n\t"
230        "mul r2, r16 \n\t"
231        "add r22, r0 \n\t"
232        "adc r23, r1 \n\t"
233        "adc r24, r25 \n\t"
234        "mul r3, r15 \n\t"
235        "add r22, r0 \n\t"
236        "adc r23, r1 \n\t"
237        "adc r24, r25 \n\t"
238        "mul r4, r14 \n\t"
239        "add r22, r0 \n\t"
240        "adc r23, r1 \n\t"
241        "adc r24, r25 \n\t"
242        "mul r5, r13 \n\t"
243        "add r22, r0 \n\t"
244        "adc r23, r1 \n\t"
245        "adc r24, r25 \n\t"
246        "mul r6, r12 \n\t"
247        "add r22, r0 \n\t"
248        "adc r23, r1 \n\t"
249        "adc r24, r25 \n\t"
250        "st z+, r22 \n\t"
251
252        "ldi r22, 0 \n\t"
253        "mul r2, r17 \n\t"
254        "add r23, r0 \n\t"
255        "adc r24, r1 \n\t"
256        "adc r22, r25 \n\t"
257        "mul r3, r16 \n\t"
258        "add r23, r0 \n\t"
259        "adc r24, r1 \n\t"
260        "adc r22, r25 \n\t"
261        "mul r4, r15 \n\t"
262        "add r23, r0 \n\t"
263        "adc r24, r1 \n\t"
264        "adc r22, r25 \n\t"
265        "mul r5, r14 \n\t"
266        "add r23, r0 \n\t"
267        "adc r24, r1 \n\t"
268        "adc r22, r25 \n\t"
269        "mul r6, r13 \n\t"
270        "add r23, r0 \n\t"
271        "adc r24, r1 \n\t"
272        "adc r22, r25 \n\t"
273        "mul r7, r12 \n\t"
274        "add r23, r0 \n\t"
275        "adc r24, r1 \n\t"
276        "adc r22, r25 \n\t"
277        "st z+, r23 \n\t"
278
279        "ldi r23, 0 \n\t"
280        "mul r2, r18 \n\t"
281        "add r24, r0 \n\t"
282        "adc r22, r1 \n\t"
283        "adc r23, r25 \n\t"
284        "mul r3, r17 \n\t"
285        "add r24, r0 \n\t"
286        "adc r22, r1 \n\t"
287        "adc r23, r25 \n\t"
288        "mul r4, r16 \n\t"
289        "add r24, r0 \n\t"
290        "adc r22, r1 \n\t"
291        "adc r23, r25 \n\t"
292        "mul r5, r15 \n\t"
293        "add r24, r0 \n\t"
294        "adc r22, r1 \n\t"
295        "adc r23, r25 \n\t"
296        "mul r6, r14 \n\t"
297        "add r24, r0 \n\t"
298        "adc r22, r1 \n\t"
299        "adc r23, r25 \n\t"
300        "mul r7, r13 \n\t"
301        "add r24, r0 \n\t"
302        "adc r22, r1 \n\t"
303        "adc r23, r25 \n\t"
304        "mul r8, r12 \n\t"
305        "add r24, r0 \n\t"
306        "adc r22, r1 \n\t"
307        "adc r23, r25 \n\t"
308        "st z+, r24 \n\t"
309
310        "ldi r24, 0 \n\t"
311        "mul r2, r19 \n\t"
312        "add r22, r0 \n\t"
313        "adc r23, r1 \n\t"
314        "adc r24, r25 \n\t"
315        "mul r3, r18 \n\t"
316        "add r22, r0 \n\t"
317        "adc r23, r1 \n\t"
318        "adc r24, r25 \n\t"
319        "mul r4, r17 \n\t"
320        "add r22, r0 \n\t"
321        "adc r23, r1 \n\t"
322        "adc r24, r25 \n\t"
323        "mul r5, r16 \n\t"
324        "add r22, r0 \n\t"
325        "adc r23, r1 \n\t"
326        "adc r24, r25 \n\t"
327        "mul r6, r15 \n\t"
328        "add r22, r0 \n\t"
329        "adc r23, r1 \n\t"
330        "adc r24, r25 \n\t"
331        "mul r7, r14 \n\t"
332        "add r22, r0 \n\t"
333        "adc r23, r1 \n\t"
334        "adc r24, r25 \n\t"
335        "mul r8, r13 \n\t"
336        "add r22, r0 \n\t"
337        "adc r23, r1 \n\t"
338        "adc r24, r25 \n\t"
339        "mul r9, r12 \n\t"
340        "add r22, r0 \n\t"
341        "adc r23, r1 \n\t"
342        "adc r24, r25 \n\t"
343        "st z+, r22 \n\t"
344
345        "ldi r22, 0 \n\t"
346        "mul r2, r20 \n\t"
347        "add r23, r0 \n\t"
348        "adc r24, r1 \n\t"
349        "adc r22, r25 \n\t"
350        "mul r3, r19 \n\t"
351        "add r23, r0 \n\t"
352        "adc r24, r1 \n\t"
353        "adc r22, r25 \n\t"
354        "mul r4, r18 \n\t"
355        "add r23, r0 \n\t"
356        "adc r24, r1 \n\t"
357        "adc r22, r25 \n\t"
358        "mul r5, r17 \n\t"
359        "add r23, r0 \n\t"
360        "adc r24, r1 \n\t"
361        "adc r22, r25 \n\t"
362        "mul r6, r16 \n\t"
363        "add r23, r0 \n\t"
364        "adc r24, r1 \n\t"
365        "adc r22, r25 \n\t"
366        "mul r7, r15 \n\t"
367        "add r23, r0 \n\t"
368        "adc r24, r1 \n\t"
369        "adc r22, r25 \n\t"
370        "mul r8, r14 \n\t"
371        "add r23, r0 \n\t"
372        "adc r24, r1 \n\t"
373        "adc r22, r25 \n\t"
374        "mul r9, r13 \n\t"
375        "add r23, r0 \n\t"
376        "adc r24, r1 \n\t"
377        "adc r22, r25 \n\t"
378        "mul r10, r12 \n\t"
379        "add r23, r0 \n\t"
380        "adc r24, r1 \n\t"
381        "adc r22, r25 \n\t"
382        "st z+, r23 \n\t"
383
384        "ldi r23, 0 \n\t"
385        "mul r2, r21 \n\t"
386        "add r24, r0 \n\t"
387        "adc r22, r1 \n\t"
388        "adc r23, r25 \n\t"
389        "mul r3, r20 \n\t"
390        "add r24, r0 \n\t"
391        "adc r22, r1 \n\t"
392        "adc r23, r25 \n\t"
393        "mul r4, r19 \n\t"
394        "add r24, r0 \n\t"
395        "adc r22, r1 \n\t"
396        "adc r23, r25 \n\t"
397        "mul r5, r18 \n\t"
398        "add r24, r0 \n\t"
399        "adc r22, r1 \n\t"
400        "adc r23, r25 \n\t"
401        "mul r6, r17 \n\t"
402        "add r24, r0 \n\t"
403        "adc r22, r1 \n\t"
404        "adc r23, r25 \n\t"
405        "mul r7, r16 \n\t"
406        "add r24, r0 \n\t"
407        "adc r22, r1 \n\t"
408        "adc r23, r25 \n\t"
409        "mul r8, r15 \n\t"
410        "add r24, r0 \n\t"
411        "adc r22, r1 \n\t"
412        "adc r23, r25 \n\t"
413        "mul r9, r14 \n\t"
414        "add r24, r0 \n\t"
415        "adc r22, r1 \n\t"
416        "adc r23, r25 \n\t"
417        "mul r10, r13 \n\t"
418        "add r24, r0 \n\t"
419        "adc r22, r1 \n\t"
420        "adc r23, r25 \n\t"
421        "mul r11, r12 \n\t"
422        "add r24, r0 \n\t"
423        "adc r22, r1 \n\t"
424        "adc r23, r25 \n\t"
425        "st z+, r24 \n\t"
426
427        "ldi r24, 0 \n\t"
428        "mul r3, r21 \n\t"
429        "add r22, r0 \n\t"
430        "adc r23, r1 \n\t"
431        "adc r24, r25 \n\t"
432        "mul r4, r20 \n\t"
433        "add r22, r0 \n\t"
434        "adc r23, r1 \n\t"
435        "adc r24, r25 \n\t"
436        "mul r5, r19 \n\t"
437        "add r22, r0 \n\t"
438        "adc r23, r1 \n\t"
439        "adc r24, r25 \n\t"
440        "mul r6, r18 \n\t"
441        "add r22, r0 \n\t"
442        "adc r23, r1 \n\t"
443        "adc r24, r25 \n\t"
444        "mul r7, r17 \n\t"
445        "add r22, r0 \n\t"
446        "adc r23, r1 \n\t"
447        "adc r24, r25 \n\t"
448        "mul r8, r16 \n\t"
449        "add r22, r0 \n\t"
450        "adc r23, r1 \n\t"
451        "adc r24, r25 \n\t"
452        "mul r9, r15 \n\t"
453        "add r22, r0 \n\t"
454        "adc r23, r1 \n\t"
455        "adc r24, r25 \n\t"
456        "mul r10, r14 \n\t"
457        "add r22, r0 \n\t"
458        "adc r23, r1 \n\t"
459        "adc r24, r25 \n\t"
460        "mul r11, r13 \n\t"
461        "add r22, r0 \n\t"
462        "adc r23, r1 \n\t"
463        "adc r24, r25 \n\t"
464        "st z+, r22 \n\t"
465
466        "ldi r22, 0 \n\t"
467        "mul r4, r21 \n\t"
468        "add r23, r0 \n\t"
469        "adc r24, r1 \n\t"
470        "adc r22, r25 \n\t"
471        "mul r5, r20 \n\t"
472        "add r23, r0 \n\t"
473        "adc r24, r1 \n\t"
474        "adc r22, r25 \n\t"
475        "mul r6, r19 \n\t"
476        "add r23, r0 \n\t"
477        "adc r24, r1 \n\t"
478        "adc r22, r25 \n\t"
479        "mul r7, r18 \n\t"
480        "add r23, r0 \n\t"
481        "adc r24, r1 \n\t"
482        "adc r22, r25 \n\t"
483        "mul r8, r17 \n\t"
484        "add r23, r0 \n\t"
485        "adc r24, r1 \n\t"
486        "adc r22, r25 \n\t"
487        "mul r9, r16 \n\t"
488        "add r23, r0 \n\t"
489        "adc r24, r1 \n\t"
490        "adc r22, r25 \n\t"
491        "mul r10, r15 \n\t"
492        "add r23, r0 \n\t"
493        "adc r24, r1 \n\t"
494        "adc r22, r25 \n\t"
495        "mul r11, r14 \n\t"
496        "add r23, r0 \n\t"
497        "adc r24, r1 \n\t"
498        "adc r22, r25 \n\t"
499        "st z+, r23 \n\t"
500
501        "ldi r23, 0 \n\t"
502        "mul r5, r21 \n\t"
503        "add r24, r0 \n\t"
504        "adc r22, r1 \n\t"
505        "adc r23, r25 \n\t"
506        "mul r6, r20 \n\t"
507        "add r24, r0 \n\t"
508        "adc r22, r1 \n\t"
509        "adc r23, r25 \n\t"
510        "mul r7, r19 \n\t"
511        "add r24, r0 \n\t"
512        "adc r22, r1 \n\t"
513        "adc r23, r25 \n\t"
514        "mul r8, r18 \n\t"
515        "add r24, r0 \n\t"
516        "adc r22, r1 \n\t"
517        "adc r23, r25 \n\t"
518        "mul r9, r17 \n\t"
519        "add r24, r0 \n\t"
520        "adc r22, r1 \n\t"
521        "adc r23, r25 \n\t"
522        "mul r10, r16 \n\t"
523        "add r24, r0 \n\t"
524        "adc r22, r1 \n\t"
525        "adc r23, r25 \n\t"
526        "mul r11, r15 \n\t"
527        "add r24, r0 \n\t"
528        "adc r22, r1 \n\t"
529        "adc r23, r25 \n\t"
530        "st z+, r24 \n\t"
531
532        "ldi r24, 0 \n\t"
533        "mul r6, r21 \n\t"
534        "add r22, r0 \n\t"
535        "adc r23, r1 \n\t"
536        "adc r24, r25 \n\t"
537        "mul r7, r20 \n\t"
538        "add r22, r0 \n\t"
539        "adc r23, r1 \n\t"
540        "adc r24, r25 \n\t"
541        "mul r8, r19 \n\t"
542        "add r22, r0 \n\t"
543        "adc r23, r1 \n\t"
544        "adc r24, r25 \n\t"
545        "mul r9, r18 \n\t"
546        "add r22, r0 \n\t"
547        "adc r23, r1 \n\t"
548        "adc r24, r25 \n\t"
549        "mul r10, r17 \n\t"
550        "add r22, r0 \n\t"
551        "adc r23, r1 \n\t"
552        "adc r24, r25 \n\t"
553        "mul r11, r16 \n\t"
554        "add r22, r0 \n\t"
555        "adc r23, r1 \n\t"
556        "adc r24, r25 \n\t"
557        "st z+, r22 \n\t"
558
559        "ldi r22, 0 \n\t"
560        "mul r7, r21 \n\t"
561        "add r23, r0 \n\t"
562        "adc r24, r1 \n\t"
563        "adc r22, r25 \n\t"
564        "mul r8, r20 \n\t"
565        "add r23, r0 \n\t"
566        "adc r24, r1 \n\t"
567        "adc r22, r25 \n\t"
568        "mul r9, r19 \n\t"
569        "add r23, r0 \n\t"
570        "adc r24, r1 \n\t"
571        "adc r22, r25 \n\t"
572        "mul r10, r18 \n\t"
573        "add r23, r0 \n\t"
574        "adc r24, r1 \n\t"
575        "adc r22, r25 \n\t"
576        "mul r11, r17 \n\t"
577        "add r23, r0 \n\t"
578        "adc r24, r1 \n\t"
579        "adc r22, r25 \n\t"
580        "st z+, r23 \n\t"
581
582        "ldi r23, 0 \n\t"
583        "mul r8, r21 \n\t"
584        "add r24, r0 \n\t"
585        "adc r22, r1 \n\t"
586        "adc r23, r25 \n\t"
587        "mul r9, r20 \n\t"
588        "add r24, r0 \n\t"
589        "adc r22, r1 \n\t"
590        "adc r23, r25 \n\t"
591        "mul r10, r19 \n\t"
592        "add r24, r0 \n\t"
593        "adc r22, r1 \n\t"
594        "adc r23, r25 \n\t"
595        "mul r11, r18 \n\t"
596        "add r24, r0 \n\t"
597        "adc r22, r1 \n\t"
598        "adc r23, r25 \n\t"
599        "st z+, r24 \n\t"
600
601        "ldi r24, 0 \n\t"
602        "mul r9, r21 \n\t"
603        "add r22, r0 \n\t"
604        "adc r23, r1 \n\t"
605        "adc r24, r25 \n\t"
606        "mul r10, r20 \n\t"
607        "add r22, r0 \n\t"
608        "adc r23, r1 \n\t"
609        "adc r24, r25 \n\t"
610        "mul r11, r19 \n\t"
611        "add r22, r0 \n\t"
612        "adc r23, r1 \n\t"
613        "adc r24, r25 \n\t"
614        "st z+, r22 \n\t"
615
616        "ldi r22, 0 \n\t"
617        "mul r10, r21 \n\t"
618        "add r23, r0 \n\t"
619        "adc r24, r1 \n\t"
620        "adc r22, r25 \n\t"
621        "mul r11, r20 \n\t"
622        "add r23, r0 \n\t"
623        "adc r24, r1 \n\t"
624        "adc r22, r25 \n\t"
625        "st z+, r23 \n\t"
626
627        "mul r11, r21 \n\t"
628        "add r24, r0 \n\t"
629        "adc r22, r1 \n\t"
630        "st z+, r24 \n\t"
631        "st z+, r22 \n\t"
632
633        "sbiw r30, 30 \n\t"
634        "sbiw r28, 20 \n\t"
635        "ld r12, y+ \n\t"
636        "ld r13, y+ \n\t"
637        "ld r14, y+ \n\t"
638        "ld r15, y+ \n\t"
639        "ld r16, y+ \n\t"
640        "ld r17, y+ \n\t"
641        "ld r18, y+ \n\t"
642        "ld r19, y+ \n\t"
643        "ld r20, y+ \n\t"
644        "ld r21, y+ \n\t"
645
646        "ldi r23, 0 \n\t"
647        "mul r2, r12 \n\t"
648        "st z+, r0 \n\t"
649        "mov r22, r1 \n\t"
650
651        "ldi r24, 0 \n\t"
652        "mul r2, r13 \n\t"
653        "add r22, r0 \n\t"
654        "adc r23, r1 \n\t"
655        "mul r3, r12 \n\t"
656        "add r22, r0 \n\t"
657        "adc r23, r1 \n\t"
658        "adc r24, r25 \n\t"
659        "st z+, r22 \n\t"
660
661        "ldi r22, 0 \n\t"
662        "mul r2, r14 \n\t"
663        "add r23, r0 \n\t"
664        "adc r24, r1 \n\t"
665        "adc r22, r25 \n\t"
666        "mul r3, r13 \n\t"
667        "add r23, r0 \n\t"
668        "adc r24, r1 \n\t"
669        "adc r22, r25 \n\t"
670        "mul r4, r12 \n\t"
671        "add r23, r0 \n\t"
672        "adc r24, r1 \n\t"
673        "adc r22, r25 \n\t"
674        "st z+, r23 \n\t"
675
676        "ldi r23, 0 \n\t"
677        "mul r2, r15 \n\t"
678        "add r24, r0 \n\t"
679        "adc r22, r1 \n\t"
680        "adc r23, r25 \n\t"
681        "mul r3, r14 \n\t"
682        "add r24, r0 \n\t"
683        "adc r22, r1 \n\t"
684        "adc r23, r25 \n\t"
685        "mul r4, r13 \n\t"
686        "add r24, r0 \n\t"
687        "adc r22, r1 \n\t"
688        "adc r23, r25 \n\t"
689        "mul r5, r12 \n\t"
690        "add r24, r0 \n\t"
691        "adc r22, r1 \n\t"
692        "adc r23, r25 \n\t"
693        "st z+, r24 \n\t"
694
695        "ldi r24, 0 \n\t"
696        "mul r2, r16 \n\t"
697        "add r22, r0 \n\t"
698        "adc r23, r1 \n\t"
699        "adc r24, r25 \n\t"
700        "mul r3, r15 \n\t"
701        "add r22, r0 \n\t"
702        "adc r23, r1 \n\t"
703        "adc r24, r25 \n\t"
704        "mul r4, r14 \n\t"
705        "add r22, r0 \n\t"
706        "adc r23, r1 \n\t"
707        "adc r24, r25 \n\t"
708        "mul r5, r13 \n\t"
709        "add r22, r0 \n\t"
710        "adc r23, r1 \n\t"
711        "adc r24, r25 \n\t"
712        "mul r6, r12 \n\t"
713        "add r22, r0 \n\t"
714        "adc r23, r1 \n\t"
715        "adc r24, r25 \n\t"
716        "st z+, r22 \n\t"
717
718        "ldi r22, 0 \n\t"
719        "mul r2, r17 \n\t"
720        "add r23, r0 \n\t"
721        "adc r24, r1 \n\t"
722        "adc r22, r25 \n\t"
723        "mul r3, r16 \n\t"
724        "add r23, r0 \n\t"
725        "adc r24, r1 \n\t"
726        "adc r22, r25 \n\t"
727        "mul r4, r15 \n\t"
728        "add r23, r0 \n\t"
729        "adc r24, r1 \n\t"
730        "adc r22, r25 \n\t"
731        "mul r5, r14 \n\t"
732        "add r23, r0 \n\t"
733        "adc r24, r1 \n\t"
734        "adc r22, r25 \n\t"
735        "mul r6, r13 \n\t"
736        "add r23, r0 \n\t"
737        "adc r24, r1 \n\t"
738        "adc r22, r25 \n\t"
739        "mul r7, r12 \n\t"
740        "add r23, r0 \n\t"
741        "adc r24, r1 \n\t"
742        "adc r22, r25 \n\t"
743        "st z+, r23 \n\t"
744
745        "ldi r23, 0 \n\t"
746        "mul r2, r18 \n\t"
747        "add r24, r0 \n\t"
748        "adc r22, r1 \n\t"
749        "adc r23, r25 \n\t"
750        "mul r3, r17 \n\t"
751        "add r24, r0 \n\t"
752        "adc r22, r1 \n\t"
753        "adc r23, r25 \n\t"
754        "mul r4, r16 \n\t"
755        "add r24, r0 \n\t"
756        "adc r22, r1 \n\t"
757        "adc r23, r25 \n\t"
758        "mul r5, r15 \n\t"
759        "add r24, r0 \n\t"
760        "adc r22, r1 \n\t"
761        "adc r23, r25 \n\t"
762        "mul r6, r14 \n\t"
763        "add r24, r0 \n\t"
764        "adc r22, r1 \n\t"
765        "adc r23, r25 \n\t"
766        "mul r7, r13 \n\t"
767        "add r24, r0 \n\t"
768        "adc r22, r1 \n\t"
769        "adc r23, r25 \n\t"
770        "mul r8, r12 \n\t"
771        "add r24, r0 \n\t"
772        "adc r22, r1 \n\t"
773        "adc r23, r25 \n\t"
774        "st z+, r24 \n\t"
775
776        "ldi r24, 0 \n\t"
777        "mul r2, r19 \n\t"
778        "add r22, r0 \n\t"
779        "adc r23, r1 \n\t"
780        "adc r24, r25 \n\t"
781        "mul r3, r18 \n\t"
782        "add r22, r0 \n\t"
783        "adc r23, r1 \n\t"
784        "adc r24, r25 \n\t"
785        "mul r4, r17 \n\t"
786        "add r22, r0 \n\t"
787        "adc r23, r1 \n\t"
788        "adc r24, r25 \n\t"
789        "mul r5, r16 \n\t"
790        "add r22, r0 \n\t"
791        "adc r23, r1 \n\t"
792        "adc r24, r25 \n\t"
793        "mul r6, r15 \n\t"
794        "add r22, r0 \n\t"
795        "adc r23, r1 \n\t"
796        "adc r24, r25 \n\t"
797        "mul r7, r14 \n\t"
798        "add r22, r0 \n\t"
799        "adc r23, r1 \n\t"
800        "adc r24, r25 \n\t"
801        "mul r8, r13 \n\t"
802        "add r22, r0 \n\t"
803        "adc r23, r1 \n\t"
804        "adc r24, r25 \n\t"
805        "mul r9, r12 \n\t"
806        "add r22, r0 \n\t"
807        "adc r23, r1 \n\t"
808        "adc r24, r25 \n\t"
809        "st z+, r22 \n\t"
810
811        "ldi r22, 0 \n\t"
812        "mul r2, r20 \n\t"
813        "add r23, r0 \n\t"
814        "adc r24, r1 \n\t"
815        "adc r22, r25 \n\t"
816        "mul r3, r19 \n\t"
817        "add r23, r0 \n\t"
818        "adc r24, r1 \n\t"
819        "adc r22, r25 \n\t"
820        "mul r4, r18 \n\t"
821        "add r23, r0 \n\t"
822        "adc r24, r1 \n\t"
823        "adc r22, r25 \n\t"
824        "mul r5, r17 \n\t"
825        "add r23, r0 \n\t"
826        "adc r24, r1 \n\t"
827        "adc r22, r25 \n\t"
828        "mul r6, r16 \n\t"
829        "add r23, r0 \n\t"
830        "adc r24, r1 \n\t"
831        "adc r22, r25 \n\t"
832        "mul r7, r15 \n\t"
833        "add r23, r0 \n\t"
834        "adc r24, r1 \n\t"
835        "adc r22, r25 \n\t"
836        "mul r8, r14 \n\t"
837        "add r23, r0 \n\t"
838        "adc r24, r1 \n\t"
839        "adc r22, r25 \n\t"
840        "mul r9, r13 \n\t"
841        "add r23, r0 \n\t"
842        "adc r24, r1 \n\t"
843        "adc r22, r25 \n\t"
844        "mul r10, r12 \n\t"
845        "add r23, r0 \n\t"
846        "adc r24, r1 \n\t"
847        "adc r22, r25 \n\t"
848        "st z+, r23 \n\t"
849
850        "ldi r23, 0 \n\t"
851        "mul r2, r21 \n\t"
852        "add r24, r0 \n\t"
853        "adc r22, r1 \n\t"
854        "adc r23, r25 \n\t"
855        "mul r3, r20 \n\t"
856        "add r24, r0 \n\t"
857        "adc r22, r1 \n\t"
858        "adc r23, r25 \n\t"
859        "mul r4, r19 \n\t"
860        "add r24, r0 \n\t"
861        "adc r22, r1 \n\t"
862        "adc r23, r25 \n\t"
863        "mul r5, r18 \n\t"
864        "add r24, r0 \n\t"
865        "adc r22, r1 \n\t"
866        "adc r23, r25 \n\t"
867        "mul r6, r17 \n\t"
868        "add r24, r0 \n\t"
869        "adc r22, r1 \n\t"
870        "adc r23, r25 \n\t"
871        "mul r7, r16 \n\t"
872        "add r24, r0 \n\t"
873        "adc r22, r1 \n\t"
874        "adc r23, r25 \n\t"
875        "mul r8, r15 \n\t"
876        "add r24, r0 \n\t"
877        "adc r22, r1 \n\t"
878        "adc r23, r25 \n\t"
879        "mul r9, r14 \n\t"
880        "add r24, r0 \n\t"
881        "adc r22, r1 \n\t"
882        "adc r23, r25 \n\t"
883        "mul r10, r13 \n\t"
884        "add r24, r0 \n\t"
885        "adc r22, r1 \n\t"
886        "adc r23, r25 \n\t"
887        "mul r11, r12 \n\t"
888        "add r24, r0 \n\t"
889        "adc r22, r1 \n\t"
890        "adc r23, r25 \n\t"
891        "st z+, r24 \n\t"
892
893        "ld r2, x+ \n\t"
894        "ldi r24, 0 \n\t"
895        "mul r3, r21 \n\t"
896        "add r22, r0 \n\t"
897        "adc r23, r1 \n\t"
898        "adc r24, r25 \n\t"
899        "mul r4, r20 \n\t"
900        "add r22, r0 \n\t"
901        "adc r23, r1 \n\t"
902        "adc r24, r25 \n\t"
903        "mul r5, r19 \n\t"
904        "add r22, r0 \n\t"
905        "adc r23, r1 \n\t"
906        "adc r24, r25 \n\t"
907        "mul r6, r18 \n\t"
908        "add r22, r0 \n\t"
909        "adc r23, r1 \n\t"
910        "adc r24, r25 \n\t"
911        "mul r7, r17 \n\t"
912        "add r22, r0 \n\t"
913        "adc r23, r1 \n\t"
914        "adc r24, r25 \n\t"
915        "mul r8, r16 \n\t"
916        "add r22, r0 \n\t"
917        "adc r23, r1 \n\t"
918        "adc r24, r25 \n\t"
919        "mul r9, r15 \n\t"
920        "add r22, r0 \n\t"
921        "adc r23, r1 \n\t"
922        "adc r24, r25 \n\t"
923        "mul r10, r14 \n\t"
924        "add r22, r0 \n\t"
925        "adc r23, r1 \n\t"
926        "adc r24, r25 \n\t"
927        "mul r11, r13 \n\t"
928        "add r22, r0 \n\t"
929        "adc r23, r1 \n\t"
930        "adc r24, r25 \n\t"
931        "mul r2, r12 \n\t"
932        "add r22, r0 \n\t"
933        "adc r23, r1 \n\t"
934        "adc r24, r25 \n\t"
935        "ld r0, z \n\t"
936        "add r22, r0 \n\t"
937        "adc r23, r25 \n\t"
938        "adc r24, r25 \n\t"
939        "st z+, r22 \n\t"
940
941        "ld r3, x+ \n\t"
942        "ldi r22, 0 \n\t"
943        "mul r4, r21 \n\t"
944        "add r23, r0 \n\t"
945        "adc r24, r1 \n\t"
946        "adc r22, r25 \n\t"
947        "mul r5, r20 \n\t"
948        "add r23, r0 \n\t"
949        "adc r24, r1 \n\t"
950        "adc r22, r25 \n\t"
951        "mul r6, r19 \n\t"
952        "add r23, r0 \n\t"
953        "adc r24, r1 \n\t"
954        "adc r22, r25 \n\t"
955        "mul r7, r18 \n\t"
956        "add r23, r0 \n\t"
957        "adc r24, r1 \n\t"
958        "adc r22, r25 \n\t"
959        "mul r8, r17 \n\t"
960        "add r23, r0 \n\t"
961        "adc r24, r1 \n\t"
962        "adc r22, r25 \n\t"
963        "mul r9, r16 \n\t"
964        "add r23, r0 \n\t"
965        "adc r24, r1 \n\t"
966        "adc r22, r25 \n\t"
967        "mul r10, r15 \n\t"
968        "add r23, r0 \n\t"
969        "adc r24, r1 \n\t"
970        "adc r22, r25 \n\t"
971        "mul r11, r14 \n\t"
972        "add r23, r0 \n\t"
973        "adc r24, r1 \n\t"
974        "adc r22, r25 \n\t"
975        "mul r2, r13 \n\t"
976        "add r23, r0 \n\t"
977        "adc r24, r1 \n\t"
978        "adc r22, r25 \n\t"
979        "mul r3, r12 \n\t"
980        "add r23, r0 \n\t"
981        "adc r24, r1 \n\t"
982        "adc r22, r25 \n\t"
983        "ld r0, z \n\t"
984        "add r23, r0 \n\t"
985        "adc r24, r25 \n\t"
986        "adc r22, r25 \n\t"
987        "st z+, r23 \n\t"
988
989        "ld r4, x+ \n\t"
990        "ldi r23, 0 \n\t"
991        "mul r5, r21 \n\t"
992        "add r24, r0 \n\t"
993        "adc r22, r1 \n\t"
994        "adc r23, r25 \n\t"
995        "mul r6, r20 \n\t"
996        "add r24, r0 \n\t"
997        "adc r22, r1 \n\t"
998        "adc r23, r25 \n\t"
999        "mul r7, r19 \n\t"
1000        "add r24, r0 \n\t"
1001        "adc r22, r1 \n\t"
1002        "adc r23, r25 \n\t"
1003        "mul r8, r18 \n\t"
1004        "add r24, r0 \n\t"
1005        "adc r22, r1 \n\t"
1006        "adc r23, r25 \n\t"
1007        "mul r9, r17 \n\t"
1008        "add r24, r0 \n\t"
1009        "adc r22, r1 \n\t"
1010        "adc r23, r25 \n\t"
1011        "mul r10, r16 \n\t"
1012        "add r24, r0 \n\t"
1013        "adc r22, r1 \n\t"
1014        "adc r23, r25 \n\t"
1015        "mul r11, r15 \n\t"
1016        "add r24, r0 \n\t"
1017        "adc r22, r1 \n\t"
1018        "adc r23, r25 \n\t"
1019        "mul r2, r14 \n\t"
1020        "add r24, r0 \n\t"
1021        "adc r22, r1 \n\t"
1022        "adc r23, r25 \n\t"
1023        "mul r3, r13 \n\t"
1024        "add r24, r0 \n\t"
1025        "adc r22, r1 \n\t"
1026        "adc r23, r25 \n\t"
1027        "mul r4, r12 \n\t"
1028        "add r24, r0 \n\t"
1029        "adc r22, r1 \n\t"
1030        "adc r23, r25 \n\t"
1031        "ld r0, z \n\t"
1032        "add r24, r0 \n\t"
1033        "adc r22, r25 \n\t"
1034        "adc r23, r25 \n\t"
1035        "st z+, r24 \n\t"
1036
1037        "ld r5, x+ \n\t"
1038        "ldi r24, 0 \n\t"
1039        "mul r6, r21 \n\t"
1040        "add r22, r0 \n\t"
1041        "adc r23, r1 \n\t"
1042        "adc r24, r25 \n\t"
1043        "mul r7, r20 \n\t"
1044        "add r22, r0 \n\t"
1045        "adc r23, r1 \n\t"
1046        "adc r24, r25 \n\t"
1047        "mul r8, r19 \n\t"
1048        "add r22, r0 \n\t"
1049        "adc r23, r1 \n\t"
1050        "adc r24, r25 \n\t"
1051        "mul r9, r18 \n\t"
1052        "add r22, r0 \n\t"
1053        "adc r23, r1 \n\t"
1054        "adc r24, r25 \n\t"
1055        "mul r10, r17 \n\t"
1056        "add r22, r0 \n\t"
1057        "adc r23, r1 \n\t"
1058        "adc r24, r25 \n\t"
1059        "mul r11, r16 \n\t"
1060        "add r22, r0 \n\t"
1061        "adc r23, r1 \n\t"
1062        "adc r24, r25 \n\t"
1063        "mul r2, r15 \n\t"
1064        "add r22, r0 \n\t"
1065        "adc r23, r1 \n\t"
1066        "adc r24, r25 \n\t"
1067        "mul r3, r14 \n\t"
1068        "add r22, r0 \n\t"
1069        "adc r23, r1 \n\t"
1070        "adc r24, r25 \n\t"
1071        "mul r4, r13 \n\t"
1072        "add r22, r0 \n\t"
1073        "adc r23, r1 \n\t"
1074        "adc r24, r25 \n\t"
1075        "mul r5, r12 \n\t"
1076        "add r22, r0 \n\t"
1077        "adc r23, r1 \n\t"
1078        "adc r24, r25 \n\t"
1079        "ld r0, z \n\t"
1080        "add r22, r0 \n\t"
1081        "adc r23, r25 \n\t"
1082        "adc r24, r25 \n\t"
1083        "st z+, r22 \n\t"
1084
1085        "ld r6, x+ \n\t"
1086        "ldi r22, 0 \n\t"
1087        "mul r7, r21 \n\t"
1088        "add r23, r0 \n\t"
1089        "adc r24, r1 \n\t"
1090        "adc r22, r25 \n\t"
1091        "mul r8, r20 \n\t"
1092        "add r23, r0 \n\t"
1093        "adc r24, r1 \n\t"
1094        "adc r22, r25 \n\t"
1095        "mul r9, r19 \n\t"
1096        "add r23, r0 \n\t"
1097        "adc r24, r1 \n\t"
1098        "adc r22, r25 \n\t"
1099        "mul r10, r18 \n\t"
1100        "add r23, r0 \n\t"
1101        "adc r24, r1 \n\t"
1102        "adc r22, r25 \n\t"
1103        "mul r11, r17 \n\t"
1104        "add r23, r0 \n\t"
1105        "adc r24, r1 \n\t"
1106        "adc r22, r25 \n\t"
1107        "mul r2, r16 \n\t"
1108        "add r23, r0 \n\t"
1109        "adc r24, r1 \n\t"
1110        "adc r22, r25 \n\t"
1111        "mul r3, r15 \n\t"
1112        "add r23, r0 \n\t"
1113        "adc r24, r1 \n\t"
1114        "adc r22, r25 \n\t"
1115        "mul r4, r14 \n\t"
1116        "add r23, r0 \n\t"
1117        "adc r24, r1 \n\t"
1118        "adc r22, r25 \n\t"
1119        "mul r5, r13 \n\t"
1120        "add r23, r0 \n\t"
1121        "adc r24, r1 \n\t"
1122        "adc r22, r25 \n\t"
1123        "mul r6, r12 \n\t"
1124        "add r23, r0 \n\t"
1125        "adc r24, r1 \n\t"
1126        "adc r22, r25 \n\t"
1127        "ld r0, z \n\t"
1128        "add r23, r0 \n\t"
1129        "adc r24, r25 \n\t"
1130        "adc r22, r25 \n\t"
1131        "st z+, r23 \n\t"
1132
1133        "ld r7, x+ \n\t"
1134        "ldi r23, 0 \n\t"
1135        "mul r8, r21 \n\t"
1136        "add r24, r0 \n\t"
1137        "adc r22, r1 \n\t"
1138        "adc r23, r25 \n\t"
1139        "mul r9, r20 \n\t"
1140        "add r24, r0 \n\t"
1141        "adc r22, r1 \n\t"
1142        "adc r23, r25 \n\t"
1143        "mul r10, r19 \n\t"
1144        "add r24, r0 \n\t"
1145        "adc r22, r1 \n\t"
1146        "adc r23, r25 \n\t"
1147        "mul r11, r18 \n\t"
1148        "add r24, r0 \n\t"
1149        "adc r22, r1 \n\t"
1150        "adc r23, r25 \n\t"
1151        "mul r2, r17 \n\t"
1152        "add r24, r0 \n\t"
1153        "adc r22, r1 \n\t"
1154        "adc r23, r25 \n\t"
1155        "mul r3, r16 \n\t"
1156        "add r24, r0 \n\t"
1157        "adc r22, r1 \n\t"
1158        "adc r23, r25 \n\t"
1159        "mul r4, r15 \n\t"
1160        "add r24, r0 \n\t"
1161        "adc r22, r1 \n\t"
1162        "adc r23, r25 \n\t"
1163        "mul r5, r14 \n\t"
1164        "add r24, r0 \n\t"
1165        "adc r22, r1 \n\t"
1166        "adc r23, r25 \n\t"
1167        "mul r6, r13 \n\t"
1168        "add r24, r0 \n\t"
1169        "adc r22, r1 \n\t"
1170        "adc r23, r25 \n\t"
1171        "mul r7, r12 \n\t"
1172        "add r24, r0 \n\t"
1173        "adc r22, r1 \n\t"
1174        "adc r23, r25 \n\t"
1175        "ld r0, z \n\t"
1176        "add r24, r0 \n\t"
1177        "adc r22, r25 \n\t"
1178        "adc r23, r25 \n\t"
1179        "st z+, r24 \n\t"
1180
1181        "ld r8, x+ \n\t"
1182        "ldi r24, 0 \n\t"
1183        "mul r9, r21 \n\t"
1184        "add r22, r0 \n\t"
1185        "adc r23, r1 \n\t"
1186        "adc r24, r25 \n\t"
1187        "mul r10, r20 \n\t"
1188        "add r22, r0 \n\t"
1189        "adc r23, r1 \n\t"
1190        "adc r24, r25 \n\t"
1191        "mul r11, r19 \n\t"
1192        "add r22, r0 \n\t"
1193        "adc r23, r1 \n\t"
1194        "adc r24, r25 \n\t"
1195        "mul r2, r18 \n\t"
1196        "add r22, r0 \n\t"
1197        "adc r23, r1 \n\t"
1198        "adc r24, r25 \n\t"
1199        "mul r3, r17 \n\t"
1200        "add r22, r0 \n\t"
1201        "adc r23, r1 \n\t"
1202        "adc r24, r25 \n\t"
1203        "mul r4, r16 \n\t"
1204        "add r22, r0 \n\t"
1205        "adc r23, r1 \n\t"
1206        "adc r24, r25 \n\t"
1207        "mul r5, r15 \n\t"
1208        "add r22, r0 \n\t"
1209        "adc r23, r1 \n\t"
1210        "adc r24, r25 \n\t"
1211        "mul r6, r14 \n\t"
1212        "add r22, r0 \n\t"
1213        "adc r23, r1 \n\t"
1214        "adc r24, r25 \n\t"
1215        "mul r7, r13 \n\t"
1216        "add r22, r0 \n\t"
1217        "adc r23, r1 \n\t"
1218        "adc r24, r25 \n\t"
1219        "mul r8, r12 \n\t"
1220        "add r22, r0 \n\t"
1221        "adc r23, r1 \n\t"
1222        "adc r24, r25 \n\t"
1223        "ld r0, z \n\t"
1224        "add r22, r0 \n\t"
1225        "adc r23, r25 \n\t"
1226        "adc r24, r25 \n\t"
1227        "st z+, r22 \n\t"
1228
1229        "ld r9, x+ \n\t"
1230        "ldi r22, 0 \n\t"
1231        "mul r10, r21 \n\t"
1232        "add r23, r0 \n\t"
1233        "adc r24, r1 \n\t"
1234        "adc r22, r25 \n\t"
1235        "mul r11, r20 \n\t"
1236        "add r23, r0 \n\t"
1237        "adc r24, r1 \n\t"
1238        "adc r22, r25 \n\t"
1239        "mul r2, r19 \n\t"
1240        "add r23, r0 \n\t"
1241        "adc r24, r1 \n\t"
1242        "adc r22, r25 \n\t"
1243        "mul r3, r18 \n\t"
1244        "add r23, r0 \n\t"
1245        "adc r24, r1 \n\t"
1246        "adc r22, r25 \n\t"
1247        "mul r4, r17 \n\t"
1248        "add r23, r0 \n\t"
1249        "adc r24, r1 \n\t"
1250        "adc r22, r25 \n\t"
1251        "mul r5, r16 \n\t"
1252        "add r23, r0 \n\t"
1253        "adc r24, r1 \n\t"
1254        "adc r22, r25 \n\t"
1255        "mul r6, r15 \n\t"
1256        "add r23, r0 \n\t"
1257        "adc r24, r1 \n\t"
1258        "adc r22, r25 \n\t"
1259        "mul r7, r14 \n\t"
1260        "add r23, r0 \n\t"
1261        "adc r24, r1 \n\t"
1262        "adc r22, r25 \n\t"
1263        "mul r8, r13 \n\t"
1264        "add r23, r0 \n\t"
1265        "adc r24, r1 \n\t"
1266        "adc r22, r25 \n\t"
1267        "mul r9, r12 \n\t"
1268        "add r23, r0 \n\t"
1269        "adc r24, r1 \n\t"
1270        "adc r22, r25 \n\t"
1271        "ld r0, z \n\t"
1272        "add r23, r0 \n\t"
1273        "adc r24, r25 \n\t"
1274        "adc r22, r25 \n\t"
1275        "st z+, r23 \n\t"
1276
1277        "ld r10, x+ \n\t"
1278        "ldi r23, 0 \n\t"
1279        "mul r11, r21 \n\t"
1280        "add r24, r0 \n\t"
1281        "adc r22, r1 \n\t"
1282        "adc r23, r25 \n\t"
1283        "mul r2, r20 \n\t"
1284        "add r24, r0 \n\t"
1285        "adc r22, r1 \n\t"
1286        "adc r23, r25 \n\t"
1287        "mul r3, r19 \n\t"
1288        "add r24, r0 \n\t"
1289        "adc r22, r1 \n\t"
1290        "adc r23, r25 \n\t"
1291        "mul r4, r18 \n\t"
1292        "add r24, r0 \n\t"
1293        "adc r22, r1 \n\t"
1294        "adc r23, r25 \n\t"
1295        "mul r5, r17 \n\t"
1296        "add r24, r0 \n\t"
1297        "adc r22, r1 \n\t"
1298        "adc r23, r25 \n\t"
1299        "mul r6, r16 \n\t"
1300        "add r24, r0 \n\t"
1301        "adc r22, r1 \n\t"
1302        "adc r23, r25 \n\t"
1303        "mul r7, r15 \n\t"
1304        "add r24, r0 \n\t"
1305        "adc r22, r1 \n\t"
1306        "adc r23, r25 \n\t"
1307        "mul r8, r14 \n\t"
1308        "add r24, r0 \n\t"
1309        "adc r22, r1 \n\t"
1310        "adc r23, r25 \n\t"
1311        "mul r9, r13 \n\t"
1312        "add r24, r0 \n\t"
1313        "adc r22, r1 \n\t"
1314        "adc r23, r25 \n\t"
1315        "mul r10, r12 \n\t"
1316        "add r24, r0 \n\t"
1317        "adc r22, r1 \n\t"
1318        "adc r23, r25 \n\t"
1319        "ld r0, z \n\t"
1320        "add r24, r0 \n\t"
1321        "adc r22, r25 \n\t"
1322        "adc r23, r25 \n\t"
1323        "st z+, r24 \n\t"
1324
1325        "ld r11, x+ \n\t"
1326        "ldi r24, 0 \n\t"
1327        "mul r2, r21 \n\t"
1328        "add r22, r0 \n\t"
1329        "adc r23, r1 \n\t"
1330        "adc r24, r25 \n\t"
1331        "mul r3, r20 \n\t"
1332        "add r22, r0 \n\t"
1333        "adc r23, r1 \n\t"
1334        "adc r24, r25 \n\t"
1335        "mul r4, r19 \n\t"
1336        "add r22, r0 \n\t"
1337        "adc r23, r1 \n\t"
1338        "adc r24, r25 \n\t"
1339        "mul r5, r18 \n\t"
1340        "add r22, r0 \n\t"
1341        "adc r23, r1 \n\t"
1342        "adc r24, r25 \n\t"
1343        "mul r6, r17 \n\t"
1344        "add r22, r0 \n\t"
1345        "adc r23, r1 \n\t"
1346        "adc r24, r25 \n\t"
1347        "mul r7, r16 \n\t"
1348        "add r22, r0 \n\t"
1349        "adc r23, r1 \n\t"
1350        "adc r24, r25 \n\t"
1351        "mul r8, r15 \n\t"
1352        "add r22, r0 \n\t"
1353        "adc r23, r1 \n\t"
1354        "adc r24, r25 \n\t"
1355        "mul r9, r14 \n\t"
1356        "add r22, r0 \n\t"
1357        "adc r23, r1 \n\t"
1358        "adc r24, r25 \n\t"
1359        "mul r10, r13 \n\t"
1360        "add r22, r0 \n\t"
1361        "adc r23, r1 \n\t"
1362        "adc r24, r25 \n\t"
1363        "mul r11, r12 \n\t"
1364        "add r22, r0 \n\t"
1365        "adc r23, r1 \n\t"
1366        "adc r24, r25 \n\t"
1367        "ld r0, z \n\t"
1368        "add r22, r0 \n\t"
1369        "adc r23, r25 \n\t"
1370        "adc r24, r25 \n\t"
1371        "st z+, r22 \n\t"
1372
1373        "ld r12, y+ \n\t"
1374        "ldi r22, 0 \n\t"
1375        "mul r2, r12 \n\t"
1376        "add r23, r0 \n\t"
1377        "adc r24, r1 \n\t"
1378        "adc r22, r25 \n\t"
1379        "mul r3, r21 \n\t"
1380        "add r23, r0 \n\t"
1381        "adc r24, r1 \n\t"
1382        "adc r22, r25 \n\t"
1383        "mul r4, r20 \n\t"
1384        "add r23, r0 \n\t"
1385        "adc r24, r1 \n\t"
1386        "adc r22, r25 \n\t"
1387        "mul r5, r19 \n\t"
1388        "add r23, r0 \n\t"
1389        "adc r24, r1 \n\t"
1390        "adc r22, r25 \n\t"
1391        "mul r6, r18 \n\t"
1392        "add r23, r0 \n\t"
1393        "adc r24, r1 \n\t"
1394        "adc r22, r25 \n\t"
1395        "mul r7, r17 \n\t"
1396        "add r23, r0 \n\t"
1397        "adc r24, r1 \n\t"
1398        "adc r22, r25 \n\t"
1399        "mul r8, r16 \n\t"
1400        "add r23, r0 \n\t"
1401        "adc r24, r1 \n\t"
1402        "adc r22, r25 \n\t"
1403        "mul r9, r15 \n\t"
1404        "add r23, r0 \n\t"
1405        "adc r24, r1 \n\t"
1406        "adc r22, r25 \n\t"
1407        "mul r10, r14 \n\t"
1408        "add r23, r0 \n\t"
1409        "adc r24, r1 \n\t"
1410        "adc r22, r25 \n\t"
1411        "mul r11, r13 \n\t"
1412        "add r23, r0 \n\t"
1413        "adc r24, r1 \n\t"
1414        "adc r22, r25 \n\t"
1415        "ld r0, z \n\t"
1416        "add r23, r0 \n\t"
1417        "adc r24, r25 \n\t"
1418        "adc r22, r25 \n\t"
1419        "st z+, r23 \n\t"
1420
1421        "ld r13, y+ \n\t"
1422        "ldi r23, 0 \n\t"
1423        "mul r2, r13 \n\t"
1424        "add r24, r0 \n\t"
1425        "adc r22, r1 \n\t"
1426        "adc r23, r25 \n\t"
1427        "mul r3, r12 \n\t"
1428        "add r24, r0 \n\t"
1429        "adc r22, r1 \n\t"
1430        "adc r23, r25 \n\t"
1431        "mul r4, r21 \n\t"
1432        "add r24, r0 \n\t"
1433        "adc r22, r1 \n\t"
1434        "adc r23, r25 \n\t"
1435        "mul r5, r20 \n\t"
1436        "add r24, r0 \n\t"
1437        "adc r22, r1 \n\t"
1438        "adc r23, r25 \n\t"
1439        "mul r6, r19 \n\t"
1440        "add r24, r0 \n\t"
1441        "adc r22, r1 \n\t"
1442        "adc r23, r25 \n\t"
1443        "mul r7, r18 \n\t"
1444        "add r24, r0 \n\t"
1445        "adc r22, r1 \n\t"
1446        "adc r23, r25 \n\t"
1447        "mul r8, r17 \n\t"
1448        "add r24, r0 \n\t"
1449        "adc r22, r1 \n\t"
1450        "adc r23, r25 \n\t"
1451        "mul r9, r16 \n\t"
1452        "add r24, r0 \n\t"
1453        "adc r22, r1 \n\t"
1454        "adc r23, r25 \n\t"
1455        "mul r10, r15 \n\t"
1456        "add r24, r0 \n\t"
1457        "adc r22, r1 \n\t"
1458        "adc r23, r25 \n\t"
1459        "mul r11, r14 \n\t"
1460        "add r24, r0 \n\t"
1461        "adc r22, r1 \n\t"
1462        "adc r23, r25 \n\t"
1463        "ld r0, z \n\t"
1464        "add r24, r0 \n\t"
1465        "adc r22, r25 \n\t"
1466        "adc r23, r25 \n\t"
1467        "st z+, r24 \n\t"
1468
1469        "ld r14, y+ \n\t"
1470        "ldi r24, 0 \n\t"
1471        "mul r2, r14 \n\t"
1472        "add r22, r0 \n\t"
1473        "adc r23, r1 \n\t"
1474        "adc r24, r25 \n\t"
1475        "mul r3, r13 \n\t"
1476        "add r22, r0 \n\t"
1477        "adc r23, r1 \n\t"
1478        "adc r24, r25 \n\t"
1479        "mul r4, r12 \n\t"
1480        "add r22, r0 \n\t"
1481        "adc r23, r1 \n\t"
1482        "adc r24, r25 \n\t"
1483        "mul r5, r21 \n\t"
1484        "add r22, r0 \n\t"
1485        "adc r23, r1 \n\t"
1486        "adc r24, r25 \n\t"
1487        "mul r6, r20 \n\t"
1488        "add r22, r0 \n\t"
1489        "adc r23, r1 \n\t"
1490        "adc r24, r25 \n\t"
1491        "mul r7, r19 \n\t"
1492        "add r22, r0 \n\t"
1493        "adc r23, r1 \n\t"
1494        "adc r24, r25 \n\t"
1495        "mul r8, r18 \n\t"
1496        "add r22, r0 \n\t"
1497        "adc r23, r1 \n\t"
1498        "adc r24, r25 \n\t"
1499        "mul r9, r17 \n\t"
1500        "add r22, r0 \n\t"
1501        "adc r23, r1 \n\t"
1502        "adc r24, r25 \n\t"
1503        "mul r10, r16 \n\t"
1504        "add r22, r0 \n\t"
1505        "adc r23, r1 \n\t"
1506        "adc r24, r25 \n\t"
1507        "mul r11, r15 \n\t"
1508        "add r22, r0 \n\t"
1509        "adc r23, r1 \n\t"
1510        "adc r24, r25 \n\t"
1511        "ld r0, z \n\t"
1512        "add r22, r0 \n\t"
1513        "adc r23, r25 \n\t"
1514        "adc r24, r25 \n\t"
1515        "st z+, r22 \n\t"
1516
1517        "ld r15, y+ \n\t"
1518        "ldi r22, 0 \n\t"
1519        "mul r2, r15 \n\t"
1520        "add r23, r0 \n\t"
1521        "adc r24, r1 \n\t"
1522        "adc r22, r25 \n\t"
1523        "mul r3, r14 \n\t"
1524        "add r23, r0 \n\t"
1525        "adc r24, r1 \n\t"
1526        "adc r22, r25 \n\t"
1527        "mul r4, r13 \n\t"
1528        "add r23, r0 \n\t"
1529        "adc r24, r1 \n\t"
1530        "adc r22, r25 \n\t"
1531        "mul r5, r12 \n\t"
1532        "add r23, r0 \n\t"
1533        "adc r24, r1 \n\t"
1534        "adc r22, r25 \n\t"
1535        "mul r6, r21 \n\t"
1536        "add r23, r0 \n\t"
1537        "adc r24, r1 \n\t"
1538        "adc r22, r25 \n\t"
1539        "mul r7, r20 \n\t"
1540        "add r23, r0 \n\t"
1541        "adc r24, r1 \n\t"
1542        "adc r22, r25 \n\t"
1543        "mul r8, r19 \n\t"
1544        "add r23, r0 \n\t"
1545        "adc r24, r1 \n\t"
1546        "adc r22, r25 \n\t"
1547        "mul r9, r18 \n\t"
1548        "add r23, r0 \n\t"
1549        "adc r24, r1 \n\t"
1550        "adc r22, r25 \n\t"
1551        "mul r10, r17 \n\t"
1552        "add r23, r0 \n\t"
1553        "adc r24, r1 \n\t"
1554        "adc r22, r25 \n\t"
1555        "mul r11, r16 \n\t"
1556        "add r23, r0 \n\t"
1557        "adc r24, r1 \n\t"
1558        "adc r22, r25 \n\t"
1559        "ld r0, z \n\t"
1560        "add r23, r0 \n\t"
1561        "adc r24, r25 \n\t"
1562        "adc r22, r25 \n\t"
1563        "st z+, r23 \n\t"
1564
1565        "ld r16, y+ \n\t"
1566        "ldi r23, 0 \n\t"
1567        "mul r2, r16 \n\t"
1568        "add r24, r0 \n\t"
1569        "adc r22, r1 \n\t"
1570        "adc r23, r25 \n\t"
1571        "mul r3, r15 \n\t"
1572        "add r24, r0 \n\t"
1573        "adc r22, r1 \n\t"
1574        "adc r23, r25 \n\t"
1575        "mul r4, r14 \n\t"
1576        "add r24, r0 \n\t"
1577        "adc r22, r1 \n\t"
1578        "adc r23, r25 \n\t"
1579        "mul r5, r13 \n\t"
1580        "add r24, r0 \n\t"
1581        "adc r22, r1 \n\t"
1582        "adc r23, r25 \n\t"
1583        "mul r6, r12 \n\t"
1584        "add r24, r0 \n\t"
1585        "adc r22, r1 \n\t"
1586        "adc r23, r25 \n\t"
1587        "mul r7, r21 \n\t"
1588        "add r24, r0 \n\t"
1589        "adc r22, r1 \n\t"
1590        "adc r23, r25 \n\t"
1591        "mul r8, r20 \n\t"
1592        "add r24, r0 \n\t"
1593        "adc r22, r1 \n\t"
1594        "adc r23, r25 \n\t"
1595        "mul r9, r19 \n\t"
1596        "add r24, r0 \n\t"
1597        "adc r22, r1 \n\t"
1598        "adc r23, r25 \n\t"
1599        "mul r10, r18 \n\t"
1600        "add r24, r0 \n\t"
1601        "adc r22, r1 \n\t"
1602        "adc r23, r25 \n\t"
1603        "mul r11, r17 \n\t"
1604        "add r24, r0 \n\t"
1605        "adc r22, r1 \n\t"
1606        "adc r23, r25 \n\t"
1607        "ld r0, z \n\t"
1608        "add r24, r0 \n\t"
1609        "adc r22, r25 \n\t"
1610        "adc r23, r25 \n\t"
1611        "st z+, r24 \n\t"
1612
1613        "ld r17, y+ \n\t"
1614        "ldi r24, 0 \n\t"
1615        "mul r2, r17 \n\t"
1616        "add r22, r0 \n\t"
1617        "adc r23, r1 \n\t"
1618        "adc r24, r25 \n\t"
1619        "mul r3, r16 \n\t"
1620        "add r22, r0 \n\t"
1621        "adc r23, r1 \n\t"
1622        "adc r24, r25 \n\t"
1623        "mul r4, r15 \n\t"
1624        "add r22, r0 \n\t"
1625        "adc r23, r1 \n\t"
1626        "adc r24, r25 \n\t"
1627        "mul r5, r14 \n\t"
1628        "add r22, r0 \n\t"
1629        "adc r23, r1 \n\t"
1630        "adc r24, r25 \n\t"
1631        "mul r6, r13 \n\t"
1632        "add r22, r0 \n\t"
1633        "adc r23, r1 \n\t"
1634        "adc r24, r25 \n\t"
1635        "mul r7, r12 \n\t"
1636        "add r22, r0 \n\t"
1637        "adc r23, r1 \n\t"
1638        "adc r24, r25 \n\t"
1639        "mul r8, r21 \n\t"
1640        "add r22, r0 \n\t"
1641        "adc r23, r1 \n\t"
1642        "adc r24, r25 \n\t"
1643        "mul r9, r20 \n\t"
1644        "add r22, r0 \n\t"
1645        "adc r23, r1 \n\t"
1646        "adc r24, r25 \n\t"
1647        "mul r10, r19 \n\t"
1648        "add r22, r0 \n\t"
1649        "adc r23, r1 \n\t"
1650        "adc r24, r25 \n\t"
1651        "mul r11, r18 \n\t"
1652        "add r22, r0 \n\t"
1653        "adc r23, r1 \n\t"
1654        "adc r24, r25 \n\t"
1655        "ld r0, z \n\t"
1656        "add r22, r0 \n\t"
1657        "adc r23, r25 \n\t"
1658        "adc r24, r25 \n\t"
1659        "st z+, r22 \n\t"
1660
1661        "ld r18, y+ \n\t"
1662        "ldi r22, 0 \n\t"
1663        "mul r2, r18 \n\t"
1664        "add r23, r0 \n\t"
1665        "adc r24, r1 \n\t"
1666        "adc r22, r25 \n\t"
1667        "mul r3, r17 \n\t"
1668        "add r23, r0 \n\t"
1669        "adc r24, r1 \n\t"
1670        "adc r22, r25 \n\t"
1671        "mul r4, r16 \n\t"
1672        "add r23, r0 \n\t"
1673        "adc r24, r1 \n\t"
1674        "adc r22, r25 \n\t"
1675        "mul r5, r15 \n\t"
1676        "add r23, r0 \n\t"
1677        "adc r24, r1 \n\t"
1678        "adc r22, r25 \n\t"
1679        "mul r6, r14 \n\t"
1680        "add r23, r0 \n\t"
1681        "adc r24, r1 \n\t"
1682        "adc r22, r25 \n\t"
1683        "mul r7, r13 \n\t"
1684        "add r23, r0 \n\t"
1685        "adc r24, r1 \n\t"
1686        "adc r22, r25 \n\t"
1687        "mul r8, r12 \n\t"
1688        "add r23, r0 \n\t"
1689        "adc r24, r1 \n\t"
1690        "adc r22, r25 \n\t"
1691        "mul r9, r21 \n\t"
1692        "add r23, r0 \n\t"
1693        "adc r24, r1 \n\t"
1694        "adc r22, r25 \n\t"
1695        "mul r10, r20 \n\t"
1696        "add r23, r0 \n\t"
1697        "adc r24, r1 \n\t"
1698        "adc r22, r25 \n\t"
1699        "mul r11, r19 \n\t"
1700        "add r23, r0 \n\t"
1701        "adc r24, r1 \n\t"
1702        "adc r22, r25 \n\t"
1703        "ld r0, z \n\t"
1704        "add r23, r0 \n\t"
1705        "adc r24, r25 \n\t"
1706        "adc r22, r25 \n\t"
1707        "st z+, r23 \n\t"
1708
1709        "ld r19, y+ \n\t"
1710        "ldi r23, 0 \n\t"
1711        "mul r2, r19 \n\t"
1712        "add r24, r0 \n\t"
1713        "adc r22, r1 \n\t"
1714        "adc r23, r25 \n\t"
1715        "mul r3, r18 \n\t"
1716        "add r24, r0 \n\t"
1717        "adc r22, r1 \n\t"
1718        "adc r23, r25 \n\t"
1719        "mul r4, r17 \n\t"
1720        "add r24, r0 \n\t"
1721        "adc r22, r1 \n\t"
1722        "adc r23, r25 \n\t"
1723        "mul r5, r16 \n\t"
1724        "add r24, r0 \n\t"
1725        "adc r22, r1 \n\t"
1726        "adc r23, r25 \n\t"
1727        "mul r6, r15 \n\t"
1728        "add r24, r0 \n\t"
1729        "adc r22, r1 \n\t"
1730        "adc r23, r25 \n\t"
1731        "mul r7, r14 \n\t"
1732        "add r24, r0 \n\t"
1733        "adc r22, r1 \n\t"
1734        "adc r23, r25 \n\t"
1735        "mul r8, r13 \n\t"
1736        "add r24, r0 \n\t"
1737        "adc r22, r1 \n\t"
1738        "adc r23, r25 \n\t"
1739        "mul r9, r12 \n\t"
1740        "add r24, r0 \n\t"
1741        "adc r22, r1 \n\t"
1742        "adc r23, r25 \n\t"
1743        "mul r10, r21 \n\t"
1744        "add r24, r0 \n\t"
1745        "adc r22, r1 \n\t"
1746        "adc r23, r25 \n\t"
1747        "mul r11, r20 \n\t"
1748        "add r24, r0 \n\t"
1749        "adc r22, r1 \n\t"
1750        "adc r23, r25 \n\t"
1751        "ld r0, z \n\t"
1752        "add r24, r0 \n\t"
1753        "adc r22, r25 \n\t"
1754        "adc r23, r25 \n\t"
1755        "st z+, r24 \n\t"
1756
1757        "ld r20, y+ \n\t"
1758        "ldi r24, 0 \n\t"
1759        "mul r2, r20 \n\t"
1760        "add r22, r0 \n\t"
1761        "adc r23, r1 \n\t"
1762        "adc r24, r25 \n\t"
1763        "mul r3, r19 \n\t"
1764        "add r22, r0 \n\t"
1765        "adc r23, r1 \n\t"
1766        "adc r24, r25 \n\t"
1767        "mul r4, r18 \n\t"
1768        "add r22, r0 \n\t"
1769        "adc r23, r1 \n\t"
1770        "adc r24, r25 \n\t"
1771        "mul r5, r17 \n\t"
1772        "add r22, r0 \n\t"
1773        "adc r23, r1 \n\t"
1774        "adc r24, r25 \n\t"
1775        "mul r6, r16 \n\t"
1776        "add r22, r0 \n\t"
1777        "adc r23, r1 \n\t"
1778        "adc r24, r25 \n\t"
1779        "mul r7, r15 \n\t"
1780        "add r22, r0 \n\t"
1781        "adc r23, r1 \n\t"
1782        "adc r24, r25 \n\t"
1783        "mul r8, r14 \n\t"
1784        "add r22, r0 \n\t"
1785        "adc r23, r1 \n\t"
1786        "adc r24, r25 \n\t"
1787        "mul r9, r13 \n\t"
1788        "add r22, r0 \n\t"
1789        "adc r23, r1 \n\t"
1790        "adc r24, r25 \n\t"
1791        "mul r10, r12 \n\t"
1792        "add r22, r0 \n\t"
1793        "adc r23, r1 \n\t"
1794        "adc r24, r25 \n\t"
1795        "mul r11, r21 \n\t"
1796        "add r22, r0 \n\t"
1797        "adc r23, r1 \n\t"
1798        "adc r24, r25 \n\t"
1799        "ld r0, z \n\t"
1800        "add r22, r0 \n\t"
1801        "adc r23, r25 \n\t"
1802        "adc r24, r25 \n\t"
1803        "st z+, r22 \n\t"
1804
1805        "ld r21, y+ \n\t"
1806        "ldi r22, 0 \n\t"
1807        "mul r2, r21 \n\t"
1808        "add r23, r0 \n\t"
1809        "adc r24, r1 \n\t"
1810        "adc r22, r25 \n\t"
1811        "mul r3, r20 \n\t"
1812        "add r23, r0 \n\t"
1813        "adc r24, r1 \n\t"
1814        "adc r22, r25 \n\t"
1815        "mul r4, r19 \n\t"
1816        "add r23, r0 \n\t"
1817        "adc r24, r1 \n\t"
1818        "adc r22, r25 \n\t"
1819        "mul r5, r18 \n\t"
1820        "add r23, r0 \n\t"
1821        "adc r24, r1 \n\t"
1822        "adc r22, r25 \n\t"
1823        "mul r6, r17 \n\t"
1824        "add r23, r0 \n\t"
1825        "adc r24, r1 \n\t"
1826        "adc r22, r25 \n\t"
1827        "mul r7, r16 \n\t"
1828        "add r23, r0 \n\t"
1829        "adc r24, r1 \n\t"
1830        "adc r22, r25 \n\t"
1831        "mul r8, r15 \n\t"
1832        "add r23, r0 \n\t"
1833        "adc r24, r1 \n\t"
1834        "adc r22, r25 \n\t"
1835        "mul r9, r14 \n\t"
1836        "add r23, r0 \n\t"
1837        "adc r24, r1 \n\t"
1838        "adc r22, r25 \n\t"
1839        "mul r10, r13 \n\t"
1840        "add r23, r0 \n\t"
1841        "adc r24, r1 \n\t"
1842        "adc r22, r25 \n\t"
1843        "mul r11, r12 \n\t"
1844        "add r23, r0 \n\t"
1845        "adc r24, r1 \n\t"
1846        "adc r22, r25 \n\t"
1847        "ld r0, z \n\t"
1848        "add r23, r0 \n\t"
1849        "adc r24, r25 \n\t"
1850        "adc r22, r25 \n\t"
1851        "st z+, r23 \n\t"
1852
1853        "ldi r23, 0 \n\t"
1854        "mul r3, r21 \n\t"
1855        "add r24, r0 \n\t"
1856        "adc r22, r1 \n\t"
1857        "adc r23, r25 \n\t"
1858        "mul r4, r20 \n\t"
1859        "add r24, r0 \n\t"
1860        "adc r22, r1 \n\t"
1861        "adc r23, r25 \n\t"
1862        "mul r5, r19 \n\t"
1863        "add r24, r0 \n\t"
1864        "adc r22, r1 \n\t"
1865        "adc r23, r25 \n\t"
1866        "mul r6, r18 \n\t"
1867        "add r24, r0 \n\t"
1868        "adc r22, r1 \n\t"
1869        "adc r23, r25 \n\t"
1870        "mul r7, r17 \n\t"
1871        "add r24, r0 \n\t"
1872        "adc r22, r1 \n\t"
1873        "adc r23, r25 \n\t"
1874        "mul r8, r16 \n\t"
1875        "add r24, r0 \n\t"
1876        "adc r22, r1 \n\t"
1877        "adc r23, r25 \n\t"
1878        "mul r9, r15 \n\t"
1879        "add r24, r0 \n\t"
1880        "adc r22, r1 \n\t"
1881        "adc r23, r25 \n\t"
1882        "mul r10, r14 \n\t"
1883        "add r24, r0 \n\t"
1884        "adc r22, r1 \n\t"
1885        "adc r23, r25 \n\t"
1886        "mul r11, r13 \n\t"
1887        "add r24, r0 \n\t"
1888        "adc r22, r1 \n\t"
1889        "adc r23, r25 \n\t"
1890        "st z+, r24 \n\t"
1891
1892        "ldi r24, 0 \n\t"
1893        "mul r4, r21 \n\t"
1894        "add r22, r0 \n\t"
1895        "adc r23, r1 \n\t"
1896        "adc r24, r25 \n\t"
1897        "mul r5, r20 \n\t"
1898        "add r22, r0 \n\t"
1899        "adc r23, r1 \n\t"
1900        "adc r24, r25 \n\t"
1901        "mul r6, r19 \n\t"
1902        "add r22, r0 \n\t"
1903        "adc r23, r1 \n\t"
1904        "adc r24, r25 \n\t"
1905        "mul r7, r18 \n\t"
1906        "add r22, r0 \n\t"
1907        "adc r23, r1 \n\t"
1908        "adc r24, r25 \n\t"
1909        "mul r8, r17 \n\t"
1910        "add r22, r0 \n\t"
1911        "adc r23, r1 \n\t"
1912        "adc r24, r25 \n\t"
1913        "mul r9, r16 \n\t"
1914        "add r22, r0 \n\t"
1915        "adc r23, r1 \n\t"
1916        "adc r24, r25 \n\t"
1917        "mul r10, r15 \n\t"
1918        "add r22, r0 \n\t"
1919        "adc r23, r1 \n\t"
1920        "adc r24, r25 \n\t"
1921        "mul r11, r14 \n\t"
1922        "add r22, r0 \n\t"
1923        "adc r23, r1 \n\t"
1924        "adc r24, r25 \n\t"
1925        "st z+, r22 \n\t"
1926
1927        "ldi r22, 0 \n\t"
1928        "mul r5, r21 \n\t"
1929        "add r23, r0 \n\t"
1930        "adc r24, r1 \n\t"
1931        "adc r22, r25 \n\t"
1932        "mul r6, r20 \n\t"
1933        "add r23, r0 \n\t"
1934        "adc r24, r1 \n\t"
1935        "adc r22, r25 \n\t"
1936        "mul r7, r19 \n\t"
1937        "add r23, r0 \n\t"
1938        "adc r24, r1 \n\t"
1939        "adc r22, r25 \n\t"
1940        "mul r8, r18 \n\t"
1941        "add r23, r0 \n\t"
1942        "adc r24, r1 \n\t"
1943        "adc r22, r25 \n\t"
1944        "mul r9, r17 \n\t"
1945        "add r23, r0 \n\t"
1946        "adc r24, r1 \n\t"
1947        "adc r22, r25 \n\t"
1948        "mul r10, r16 \n\t"
1949        "add r23, r0 \n\t"
1950        "adc r24, r1 \n\t"
1951        "adc r22, r25 \n\t"
1952        "mul r11, r15 \n\t"
1953        "add r23, r0 \n\t"
1954        "adc r24, r1 \n\t"
1955        "adc r22, r25 \n\t"
1956        "st z+, r23 \n\t"
1957
1958        "ldi r23, 0 \n\t"
1959        "mul r6, r21 \n\t"
1960        "add r24, r0 \n\t"
1961        "adc r22, r1 \n\t"
1962        "adc r23, r25 \n\t"
1963        "mul r7, r20 \n\t"
1964        "add r24, r0 \n\t"
1965        "adc r22, r1 \n\t"
1966        "adc r23, r25 \n\t"
1967        "mul r8, r19 \n\t"
1968        "add r24, r0 \n\t"
1969        "adc r22, r1 \n\t"
1970        "adc r23, r25 \n\t"
1971        "mul r9, r18 \n\t"
1972        "add r24, r0 \n\t"
1973        "adc r22, r1 \n\t"
1974        "adc r23, r25 \n\t"
1975        "mul r10, r17 \n\t"
1976        "add r24, r0 \n\t"
1977        "adc r22, r1 \n\t"
1978        "adc r23, r25 \n\t"
1979        "mul r11, r16 \n\t"
1980        "add r24, r0 \n\t"
1981        "adc r22, r1 \n\t"
1982        "adc r23, r25 \n\t"
1983        "st z+, r24 \n\t"
1984
1985        "ldi r24, 0 \n\t"
1986        "mul r7, r21 \n\t"
1987        "add r22, r0 \n\t"
1988        "adc r23, r1 \n\t"
1989        "adc r24, r25 \n\t"
1990        "mul r8, r20 \n\t"
1991        "add r22, r0 \n\t"
1992        "adc r23, r1 \n\t"
1993        "adc r24, r25 \n\t"
1994        "mul r9, r19 \n\t"
1995        "add r22, r0 \n\t"
1996        "adc r23, r1 \n\t"
1997        "adc r24, r25 \n\t"
1998        "mul r10, r18 \n\t"
1999        "add r22, r0 \n\t"
2000        "adc r23, r1 \n\t"
2001        "adc r24, r25 \n\t"
2002        "mul r11, r17 \n\t"
2003        "add r22, r0 \n\t"
2004        "adc r23, r1 \n\t"
2005        "adc r24, r25 \n\t"
2006        "st z+, r22 \n\t"
2007
2008        "ldi r22, 0 \n\t"
2009        "mul r8, r21 \n\t"
2010        "add r23, r0 \n\t"
2011        "adc r24, r1 \n\t"
2012        "adc r22, r25 \n\t"
2013        "mul r9, r20 \n\t"
2014        "add r23, r0 \n\t"
2015        "adc r24, r1 \n\t"
2016        "adc r22, r25 \n\t"
2017        "mul r10, r19 \n\t"
2018        "add r23, r0 \n\t"
2019        "adc r24, r1 \n\t"
2020        "adc r22, r25 \n\t"
2021        "mul r11, r18 \n\t"
2022        "add r23, r0 \n\t"
2023        "adc r24, r1 \n\t"
2024        "adc r22, r25 \n\t"
2025        "st z+, r23 \n\t"
2026
2027        "ldi r23, 0 \n\t"
2028        "mul r9, r21 \n\t"
2029        "add r24, r0 \n\t"
2030        "adc r22, r1 \n\t"
2031        "adc r23, r25 \n\t"
2032        "mul r10, r20 \n\t"
2033        "add r24, r0 \n\t"
2034        "adc r22, r1 \n\t"
2035        "adc r23, r25 \n\t"
2036        "mul r11, r19 \n\t"
2037        "add r24, r0 \n\t"
2038        "adc r22, r1 \n\t"
2039        "adc r23, r25 \n\t"
2040        "st z+, r24 \n\t"
2041
2042        "ldi r24, 0 \n\t"
2043        "mul r10, r21 \n\t"
2044        "add r22, r0 \n\t"
2045        "adc r23, r1 \n\t"
2046        "adc r24, r25 \n\t"
2047        "mul r11, r20 \n\t"
2048        "add r22, r0 \n\t"
2049        "adc r23, r1 \n\t"
2050        "adc r24, r25 \n\t"
2051        "st z+, r22 \n\t"
2052
2053        "mul r11, r21 \n\t"
2054        "add r23, r0 \n\t"
2055        "adc r24, r1 \n\t"
2056        "st z+, r23 \n\t"
2057        "st z+, r24 \n\t"
2058        "eor r1, r1 \n\t"
2059        : "+x" (left), "+y" (right), "+z" (result)
2060        :
2061        : "r0", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10",
2062          "r11", "r12", "r13", "r14", "r15", "r16", "r17", "r18", "r19", "r20",
2063          "r21", "r22", "r23", "r24", "r25", "cc", "memory"
2064    );
2065}
2066#define asm_mult 1
2067#elif (uECC_BYTES == 24)
2068__attribute((noinline))
2069static void vli_mult(uint8_t *result, const uint8_t *left, const uint8_t *right) {
2070    __asm__ volatile (
2071        "adiw r30, 20 \n\t"
2072        "adiw r28, 20 \n\t"
2073        "ld r2, x+ \n\t"
2074        "ld r3, x+ \n\t"
2075        "ld r4, x+ \n\t"
2076        "ld r5, x+ \n\t"
2077        "ld r12, y+ \n\t"
2078        "ld r13, y+ \n\t"
2079        "ld r14, y+ \n\t"
2080        "ld r15, y+ \n\t"
2081        "ldi r25, 0 \n\t"
2082
2083        "ldi r23, 0 \n\t"
2084        "mul r2, r12 \n\t"
2085        "st z+, r0 \n\t"
2086        "mov r22, r1 \n\t"
2087
2088        "ldi r24, 0 \n\t"
2089        "mul r2, r13 \n\t"
2090        "add r22, r0 \n\t"
2091        "adc r23, r1 \n\t"
2092        "mul r3, r12 \n\t"
2093        "add r22, r0 \n\t"
2094        "adc r23, r1 \n\t"
2095        "adc r24, r25 \n\t"
2096        "st z+, r22 \n\t"
2097
2098        "ldi r22, 0 \n\t"
2099        "mul r2, r14 \n\t"
2100        "add r23, r0 \n\t"
2101        "adc r24, r1 \n\t"
2102        "adc r22, r25 \n\t"
2103        "mul r3, r13 \n\t"
2104        "add r23, r0 \n\t"
2105        "adc r24, r1 \n\t"
2106        "adc r22, r25 \n\t"
2107        "mul r4, r12 \n\t"
2108        "add r23, r0 \n\t"
2109        "adc r24, r1 \n\t"
2110        "adc r22, r25 \n\t"
2111        "st z+, r23 \n\t"
2112
2113        "ldi r23, 0 \n\t"
2114        "mul r2, r15 \n\t"
2115        "add r24, r0 \n\t"
2116        "adc r22, r1 \n\t"
2117        "adc r23, r25 \n\t"
2118        "mul r3, r14 \n\t"
2119        "add r24, r0 \n\t"
2120        "adc r22, r1 \n\t"
2121        "adc r23, r25 \n\t"
2122        "mul r4, r13 \n\t"
2123        "add r24, r0 \n\t"
2124        "adc r22, r1 \n\t"
2125        "adc r23, r25 \n\t"
2126        "mul r5, r12 \n\t"
2127        "add r24, r0 \n\t"
2128        "adc r22, r1 \n\t"
2129        "adc r23, r25 \n\t"
2130        "st z+, r24 \n\t"
2131
2132        "ldi r24, 0 \n\t"
2133        "mul r3, r15 \n\t"
2134        "add r22, r0 \n\t"
2135        "adc r23, r1 \n\t"
2136        "adc r24, r25 \n\t"
2137        "mul r4, r14 \n\t"
2138        "add r22, r0 \n\t"
2139        "adc r23, r1 \n\t"
2140        "adc r24, r25 \n\t"
2141        "mul r5, r13 \n\t"
2142        "add r22, r0 \n\t"
2143        "adc r23, r1 \n\t"
2144        "adc r24, r25 \n\t"
2145        "st z+, r22 \n\t"
2146
2147        "ldi r22, 0 \n\t"
2148        "mul r4, r15 \n\t"
2149        "add r23, r0 \n\t"
2150        "adc r24, r1 \n\t"
2151        "adc r22, r25 \n\t"
2152        "mul r5, r14 \n\t"
2153        "add r23, r0 \n\t"
2154        "adc r24, r1 \n\t"
2155        "adc r22, r25 \n\t"
2156        "st z+, r23 \n\t"
2157
2158        "mul r5, r15 \n\t"
2159        "add r24, r0 \n\t"
2160        "adc r22, r1 \n\t"
2161        "st z+, r24 \n\t"
2162        "st z+, r22 \n\t"
2163
2164        "sbiw r30, 18 \n\t"
2165        "sbiw r28, 14 \n\t"
2166        "ld r12, y+ \n\t"
2167        "ld r13, y+ \n\t"
2168        "ld r14, y+ \n\t"
2169        "ld r15, y+ \n\t"
2170        "ld r16, y+ \n\t"
2171        "ld r17, y+ \n\t"
2172        "ld r18, y+ \n\t"
2173        "ld r19, y+ \n\t"
2174        "ld r20, y+ \n\t"
2175        "ld r21, y+ \n\t"
2176        "ld r6, x+ \n\t"
2177        "ld r7, x+ \n\t"
2178        "ld r8, x+ \n\t"
2179        "ld r9, x+ \n\t"
2180        "ld r10, x+ \n\t"
2181        "ld r11, x+ \n\t"
2182
2183        "ldi r23, 0 \n\t"
2184        "mul r2, r12 \n\t"
2185        "st z+, r0 \n\t"
2186        "mov r22, r1 \n\t"
2187
2188        "ldi r24, 0 \n\t"
2189        "mul r2, r13 \n\t"
2190        "add r22, r0 \n\t"
2191        "adc r23, r1 \n\t"
2192        "mul r3, r12 \n\t"
2193        "add r22, r0 \n\t"
2194        "adc r23, r1 \n\t"
2195        "adc r24, r25 \n\t"
2196        "st z+, r22 \n\t"
2197
2198        "ldi r22, 0 \n\t"
2199        "mul r2, r14 \n\t"
2200        "add r23, r0 \n\t"
2201        "adc r24, r1 \n\t"
2202        "adc r22, r25 \n\t"
2203        "mul r3, r13 \n\t"
2204        "add r23, r0 \n\t"
2205        "adc r24, r1 \n\t"
2206        "adc r22, r25 \n\t"
2207        "mul r4, r12 \n\t"
2208        "add r23, r0 \n\t"
2209        "adc r24, r1 \n\t"
2210        "adc r22, r25 \n\t"
2211        "st z+, r23 \n\t"
2212
2213        "ldi r23, 0 \n\t"
2214        "mul r2, r15 \n\t"
2215        "add r24, r0 \n\t"
2216        "adc r22, r1 \n\t"
2217        "adc r23, r25 \n\t"
2218        "mul r3, r14 \n\t"
2219        "add r24, r0 \n\t"
2220        "adc r22, r1 \n\t"
2221        "adc r23, r25 \n\t"
2222        "mul r4, r13 \n\t"
2223        "add r24, r0 \n\t"
2224        "adc r22, r1 \n\t"
2225        "adc r23, r25 \n\t"
2226        "mul r5, r12 \n\t"
2227        "add r24, r0 \n\t"
2228        "adc r22, r1 \n\t"
2229        "adc r23, r25 \n\t"
2230        "st z+, r24 \n\t"
2231
2232        "ldi r24, 0 \n\t"
2233        "mul r2, r16 \n\t"
2234        "add r22, r0 \n\t"
2235        "adc r23, r1 \n\t"
2236        "adc r24, r25 \n\t"
2237        "mul r3, r15 \n\t"
2238        "add r22, r0 \n\t"
2239        "adc r23, r1 \n\t"
2240        "adc r24, r25 \n\t"
2241        "mul r4, r14 \n\t"
2242        "add r22, r0 \n\t"
2243        "adc r23, r1 \n\t"
2244        "adc r24, r25 \n\t"
2245        "mul r5, r13 \n\t"
2246        "add r22, r0 \n\t"
2247        "adc r23, r1 \n\t"
2248        "adc r24, r25 \n\t"
2249        "mul r6, r12 \n\t"
2250        "add r22, r0 \n\t"
2251        "adc r23, r1 \n\t"
2252        "adc r24, r25 \n\t"
2253        "st z+, r22 \n\t"
2254
2255        "ldi r22, 0 \n\t"
2256        "mul r2, r17 \n\t"
2257        "add r23, r0 \n\t"
2258        "adc r24, r1 \n\t"
2259        "adc r22, r25 \n\t"
2260        "mul r3, r16 \n\t"
2261        "add r23, r0 \n\t"
2262        "adc r24, r1 \n\t"
2263        "adc r22, r25 \n\t"
2264        "mul r4, r15 \n\t"
2265        "add r23, r0 \n\t"
2266        "adc r24, r1 \n\t"
2267        "adc r22, r25 \n\t"
2268        "mul r5, r14 \n\t"
2269        "add r23, r0 \n\t"
2270        "adc r24, r1 \n\t"
2271        "adc r22, r25 \n\t"
2272        "mul r6, r13 \n\t"
2273        "add r23, r0 \n\t"
2274        "adc r24, r1 \n\t"
2275        "adc r22, r25 \n\t"
2276        "mul r7, r12 \n\t"
2277        "add r23, r0 \n\t"
2278        "adc r24, r1 \n\t"
2279        "adc r22, r25 \n\t"
2280        "st z+, r23 \n\t"
2281
2282        "ldi r23, 0 \n\t"
2283        "mul r2, r18 \n\t"
2284        "add r24, r0 \n\t"
2285        "adc r22, r1 \n\t"
2286        "adc r23, r25 \n\t"
2287        "mul r3, r17 \n\t"
2288        "add r24, r0 \n\t"
2289        "adc r22, r1 \n\t"
2290        "adc r23, r25 \n\t"
2291        "mul r4, r16 \n\t"
2292        "add r24, r0 \n\t"
2293        "adc r22, r1 \n\t"
2294        "adc r23, r25 \n\t"
2295        "mul r5, r15 \n\t"
2296        "add r24, r0 \n\t"
2297        "adc r22, r1 \n\t"
2298        "adc r23, r25 \n\t"
2299        "mul r6, r14 \n\t"
2300        "add r24, r0 \n\t"
2301        "adc r22, r1 \n\t"
2302        "adc r23, r25 \n\t"
2303        "mul r7, r13 \n\t"
2304        "add r24, r0 \n\t"
2305        "adc r22, r1 \n\t"
2306        "adc r23, r25 \n\t"
2307        "mul r8, r12 \n\t"
2308        "add r24, r0 \n\t"
2309        "adc r22, r1 \n\t"
2310        "adc r23, r25 \n\t"
2311        "st z+, r24 \n\t"
2312
2313        "ldi r24, 0 \n\t"
2314        "mul r2, r19 \n\t"
2315        "add r22, r0 \n\t"
2316        "adc r23, r1 \n\t"
2317        "adc r24, r25 \n\t"
2318        "mul r3, r18 \n\t"
2319        "add r22, r0 \n\t"
2320        "adc r23, r1 \n\t"
2321        "adc r24, r25 \n\t"
2322        "mul r4, r17 \n\t"
2323        "add r22, r0 \n\t"
2324        "adc r23, r1 \n\t"
2325        "adc r24, r25 \n\t"
2326        "mul r5, r16 \n\t"
2327        "add r22, r0 \n\t"
2328        "adc r23, r1 \n\t"
2329        "adc r24, r25 \n\t"
2330        "mul r6, r15 \n\t"
2331        "add r22, r0 \n\t"
2332        "adc r23, r1 \n\t"
2333        "adc r24, r25 \n\t"
2334        "mul r7, r14 \n\t"
2335        "add r22, r0 \n\t"
2336        "adc r23, r1 \n\t"
2337        "adc r24, r25 \n\t"
2338        "mul r8, r13 \n\t"
2339        "add r22, r0 \n\t"
2340        "adc r23, r1 \n\t"
2341        "adc r24, r25 \n\t"
2342        "mul r9, r12 \n\t"
2343        "add r22, r0 \n\t"
2344        "adc r23, r1 \n\t"
2345        "adc r24, r25 \n\t"
2346        "st z+, r22 \n\t"
2347
2348        "ldi r22, 0 \n\t"
2349        "mul r2, r20 \n\t"
2350        "add r23, r0 \n\t"
2351        "adc r24, r1 \n\t"
2352        "adc r22, r25 \n\t"
2353        "mul r3, r19 \n\t"
2354        "add r23, r0 \n\t"
2355        "adc r24, r1 \n\t"
2356        "adc r22, r25 \n\t"
2357        "mul r4, r18 \n\t"
2358        "add r23, r0 \n\t"
2359        "adc r24, r1 \n\t"
2360        "adc r22, r25 \n\t"
2361        "mul r5, r17 \n\t"
2362        "add r23, r0 \n\t"
2363        "adc r24, r1 \n\t"
2364        "adc r22, r25 \n\t"
2365        "mul r6, r16 \n\t"
2366        "add r23, r0 \n\t"
2367        "adc r24, r1 \n\t"
2368        "adc r22, r25 \n\t"
2369        "mul r7, r15 \n\t"
2370        "add r23, r0 \n\t"
2371        "adc r24, r1 \n\t"
2372        "adc r22, r25 \n\t"
2373        "mul r8, r14 \n\t"
2374        "add r23, r0 \n\t"
2375        "adc r24, r1 \n\t"
2376        "adc r22, r25 \n\t"
2377        "mul r9, r13 \n\t"
2378        "add r23, r0 \n\t"
2379        "adc r24, r1 \n\t"
2380        "adc r22, r25 \n\t"
2381        "mul r10, r12 \n\t"
2382        "add r23, r0 \n\t"
2383        "adc r24, r1 \n\t"
2384        "adc r22, r25 \n\t"
2385        "st z+, r23 \n\t"
2386
2387        "ldi r23, 0 \n\t"
2388        "mul r2, r21 \n\t"
2389        "add r24, r0 \n\t"
2390        "adc r22, r1 \n\t"
2391        "adc r23, r25 \n\t"
2392        "mul r3, r20 \n\t"
2393        "add r24, r0 \n\t"
2394        "adc r22, r1 \n\t"
2395        "adc r23, r25 \n\t"
2396        "mul r4, r19 \n\t"
2397        "add r24, r0 \n\t"
2398        "adc r22, r1 \n\t"
2399        "adc r23, r25 \n\t"
2400        "mul r5, r18 \n\t"
2401        "add r24, r0 \n\t"
2402        "adc r22, r1 \n\t"
2403        "adc r23, r25 \n\t"
2404        "mul r6, r17 \n\t"
2405        "add r24, r0 \n\t"
2406        "adc r22, r1 \n\t"
2407        "adc r23, r25 \n\t"
2408        "mul r7, r16 \n\t"
2409        "add r24, r0 \n\t"
2410        "adc r22, r1 \n\t"
2411        "adc r23, r25 \n\t"
2412        "mul r8, r15 \n\t"
2413        "add r24, r0 \n\t"
2414        "adc r22, r1 \n\t"
2415        "adc r23, r25 \n\t"
2416        "mul r9, r14 \n\t"
2417        "add r24, r0 \n\t"
2418        "adc r22, r1 \n\t"
2419        "adc r23, r25 \n\t"
2420        "mul r10, r13 \n\t"
2421        "add r24, r0 \n\t"
2422        "adc r22, r1 \n\t"
2423        "adc r23, r25 \n\t"
2424        "mul r11, r12 \n\t"
2425        "add r24, r0 \n\t"
2426        "adc r22, r1 \n\t"
2427        "adc r23, r25 \n\t"
2428        "st z+, r24 \n\t"
2429
2430        "ld r2, x+ \n\t"
2431        "ldi r24, 0 \n\t"
2432        "mul r3, r21 \n\t"
2433        "add r22, r0 \n\t"
2434        "adc r23, r1 \n\t"
2435        "adc r24, r25 \n\t"
2436        "mul r4, r20 \n\t"
2437        "add r22, r0 \n\t"
2438        "adc r23, r1 \n\t"
2439        "adc r24, r25 \n\t"
2440        "mul r5, r19 \n\t"
2441        "add r22, r0 \n\t"
2442        "adc r23, r1 \n\t"
2443        "adc r24, r25 \n\t"
2444        "mul r6, r18 \n\t"
2445        "add r22, r0 \n\t"
2446        "adc r23, r1 \n\t"
2447        "adc r24, r25 \n\t"
2448        "mul r7, r17 \n\t"
2449        "add r22, r0 \n\t"
2450        "adc r23, r1 \n\t"
2451        "adc r24, r25 \n\t"
2452        "mul r8, r16 \n\t"
2453        "add r22, r0 \n\t"
2454        "adc r23, r1 \n\t"
2455        "adc r24, r25 \n\t"
2456        "mul r9, r15 \n\t"
2457        "add r22, r0 \n\t"
2458        "adc r23, r1 \n\t"
2459        "adc r24, r25 \n\t"
2460        "mul r10, r14 \n\t"
2461        "add r22, r0 \n\t"
2462        "adc r23, r1 \n\t"
2463        "adc r24, r25 \n\t"
2464        "mul r11, r13 \n\t"
2465        "add r22, r0 \n\t"
2466        "adc r23, r1 \n\t"
2467        "adc r24, r25 \n\t"
2468        "mul r2, r12 \n\t"
2469        "add r22, r0 \n\t"
2470        "adc r23, r1 \n\t"
2471        "adc r24, r25 \n\t"
2472        "ld r0, z \n\t"
2473        "add r22, r0 \n\t"
2474        "adc r23, r25 \n\t"
2475        "adc r24, r25 \n\t"
2476        "st z+, r22 \n\t"
2477
2478        "ld r3, x+ \n\t"
2479        "ldi r22, 0 \n\t"
2480        "mul r4, r21 \n\t"
2481        "add r23, r0 \n\t"
2482        "adc r24, r1 \n\t"
2483        "adc r22, r25 \n\t"
2484        "mul r5, r20 \n\t"
2485        "add r23, r0 \n\t"
2486        "adc r24, r1 \n\t"
2487        "adc r22, r25 \n\t"
2488        "mul r6, r19 \n\t"
2489        "add r23, r0 \n\t"
2490        "adc r24, r1 \n\t"
2491        "adc r22, r25 \n\t"
2492        "mul r7, r18 \n\t"
2493        "add r23, r0 \n\t"
2494        "adc r24, r1 \n\t"
2495        "adc r22, r25 \n\t"
2496        "mul r8, r17 \n\t"
2497        "add r23, r0 \n\t"
2498        "adc r24, r1 \n\t"
2499        "adc r22, r25 \n\t"
2500        "mul r9, r16 \n\t"
2501        "add r23, r0 \n\t"
2502        "adc r24, r1 \n\t"
2503        "adc r22, r25 \n\t"
2504        "mul r10, r15 \n\t"
2505        "add r23, r0 \n\t"
2506        "adc r24, r1 \n\t"
2507        "adc r22, r25 \n\t"
2508        "mul r11, r14 \n\t"
2509        "add r23, r0 \n\t"
2510        "adc r24, r1 \n\t"
2511        "adc r22, r25 \n\t"
2512        "mul r2, r13 \n\t"
2513        "add r23, r0 \n\t"
2514        "adc r24, r1 \n\t"
2515        "adc r22, r25 \n\t"
2516        "mul r3, r12 \n\t"
2517        "add r23, r0 \n\t"
2518        "adc r24, r1 \n\t"
2519        "adc r22, r25 \n\t"
2520        "ld r0, z \n\t"
2521        "add r23, r0 \n\t"
2522        "adc r24, r25 \n\t"
2523        "adc r22, r25 \n\t"
2524        "st z+, r23 \n\t"
2525
2526        "ld r4, x+ \n\t"
2527        "ldi r23, 0 \n\t"
2528        "mul r5, r21 \n\t"
2529        "add r24, r0 \n\t"
2530        "adc r22, r1 \n\t"
2531        "adc r23, r25 \n\t"
2532        "mul r6, r20 \n\t"
2533        "add r24, r0 \n\t"
2534        "adc r22, r1 \n\t"
2535        "adc r23, r25 \n\t"
2536        "mul r7, r19 \n\t"
2537        "add r24, r0 \n\t"
2538        "adc r22, r1 \n\t"
2539        "adc r23, r25 \n\t"
2540        "mul r8, r18 \n\t"
2541        "add r24, r0 \n\t"
2542        "adc r22, r1 \n\t"
2543        "adc r23, r25 \n\t"
2544        "mul r9, r17 \n\t"
2545        "add r24, r0 \n\t"
2546        "adc r22, r1 \n\t"
2547        "adc r23, r25 \n\t"
2548        "mul r10, r16 \n\t"
2549        "add r24, r0 \n\t"
2550        "adc r22, r1 \n\t"
2551        "adc r23, r25 \n\t"
2552        "mul r11, r15 \n\t"
2553        "add r24, r0 \n\t"
2554        "adc r22, r1 \n\t"
2555        "adc r23, r25 \n\t"
2556        "mul r2, r14 \n\t"
2557        "add r24, r0 \n\t"
2558        "adc r22, r1 \n\t"
2559        "adc r23, r25 \n\t"
2560        "mul r3, r13 \n\t"
2561        "add r24, r0 \n\t"
2562        "adc r22, r1 \n\t"
2563        "adc r23, r25 \n\t"
2564        "mul r4, r12 \n\t"
2565        "add r24, r0 \n\t"
2566        "adc r22, r1 \n\t"
2567        "adc r23, r25 \n\t"
2568        "ld r0, z \n\t"
2569        "add r24, r0 \n\t"
2570        "adc r22, r25 \n\t"
2571        "adc r23, r25 \n\t"
2572        "st z+, r24 \n\t"
2573
2574        "ld r5, x+ \n\t"
2575        "ldi r24, 0 \n\t"
2576        "mul r6, r21 \n\t"
2577        "add r22, r0 \n\t"
2578        "adc r23, r1 \n\t"
2579        "adc r24, r25 \n\t"
2580        "mul r7, r20 \n\t"
2581        "add r22, r0 \n\t"
2582        "adc r23, r1 \n\t"
2583        "adc r24, r25 \n\t"
2584        "mul r8, r19 \n\t"
2585        "add r22, r0 \n\t"
2586        "adc r23, r1 \n\t"
2587        "adc r24, r25 \n\t"
2588        "mul r9, r18 \n\t"
2589        "add r22, r0 \n\t"
2590        "adc r23, r1 \n\t"
2591        "adc r24, r25 \n\t"
2592        "mul r10, r17 \n\t"
2593        "add r22, r0 \n\t"
2594        "adc r23, r1 \n\t"
2595        "adc r24, r25 \n\t"
2596        "mul r11, r16 \n\t"
2597        "add r22, r0 \n\t"
2598        "adc r23, r1 \n\t"
2599        "adc r24, r25 \n\t"
2600        "mul r2, r15 \n\t"
2601        "add r22, r0 \n\t"
2602        "adc r23, r1 \n\t"
2603        "adc r24, r25 \n\t"
2604        "mul r3, r14 \n\t"
2605        "add r22, r0 \n\t"
2606        "adc r23, r1 \n\t"
2607        "adc r24, r25 \n\t"
2608        "mul r4, r13 \n\t"
2609        "add r22, r0 \n\t"
2610        "adc r23, r1 \n\t"
2611        "adc r24, r25 \n\t"
2612        "mul r5, r12 \n\t"
2613        "add r22, r0 \n\t"
2614        "adc r23, r1 \n\t"
2615        "adc r24, r25 \n\t"
2616        "ld r0, z \n\t"
2617        "add r22, r0 \n\t"
2618        "adc r23, r25 \n\t"
2619        "adc r24, r25 \n\t"
2620        "st z+, r22 \n\t"
2621
2622        "ld r12, y+ \n\t"
2623        "ldi r22, 0 \n\t"
2624        "mul r6, r12 \n\t"
2625        "add r23, r0 \n\t"
2626        "adc r24, r1 \n\t"
2627        "adc r22, r25 \n\t"
2628        "mul r7, r21 \n\t"
2629        "add r23, r0 \n\t"
2630        "adc r24, r1 \n\t"
2631        "adc r22, r25 \n\t"
2632        "mul r8, r20 \n\t"
2633        "add r23, r0 \n\t"
2634        "adc r24, r1 \n\t"
2635        "adc r22, r25 \n\t"
2636        "mul r9, r19 \n\t"
2637        "add r23, r0 \n\t"
2638        "adc r24, r1 \n\t"
2639        "adc r22, r25 \n\t"
2640        "mul r10, r18 \n\t"
2641        "add r23, r0 \n\t"
2642        "adc r24, r1 \n\t"
2643        "adc r22, r25 \n\t"
2644        "mul r11, r17 \n\t"
2645        "add r23, r0 \n\t"
2646        "adc r24, r1 \n\t"
2647        "adc r22, r25 \n\t"
2648        "mul r2, r16 \n\t"
2649        "add r23, r0 \n\t"
2650        "adc r24, r1 \n\t"
2651        "adc r22, r25 \n\t"
2652        "mul r3, r15 \n\t"
2653        "add r23, r0 \n\t"
2654        "adc r24, r1 \n\t"
2655        "adc r22, r25 \n\t"
2656        "mul r4, r14 \n\t"
2657        "add r23, r0 \n\t"
2658        "adc r24, r1 \n\t"
2659        "adc r22, r25 \n\t"
2660        "mul r5, r13 \n\t"
2661        "add r23, r0 \n\t"
2662        "adc r24, r1 \n\t"
2663        "adc r22, r25 \n\t"
2664        "ld r0, z \n\t"
2665        "add r23, r0 \n\t"
2666        "adc r24, r25 \n\t"
2667        "adc r22, r25 \n\t"
2668        "st z+, r23 \n\t"
2669
2670        "ld r13, y+ \n\t"
2671        "ldi r23, 0 \n\t"
2672        "mul r6, r13 \n\t"
2673        "add r24, r0 \n\t"
2674        "adc r22, r1 \n\t"
2675        "adc r23, r25 \n\t"
2676        "mul r7, r12 \n\t"
2677        "add r24, r0 \n\t"
2678        "adc r22, r1 \n\t"
2679        "adc r23, r25 \n\t"
2680        "mul r8, r21 \n\t"
2681        "add r24, r0 \n\t"
2682        "adc r22, r1 \n\t"
2683        "adc r23, r25 \n\t"
2684        "mul r9, r20 \n\t"
2685        "add r24, r0 \n\t"
2686        "adc r22, r1 \n\t"
2687        "adc r23, r25 \n\t"
2688        "mul r10, r19 \n\t"
2689        "add r24, r0 \n\t"
2690        "adc r22, r1 \n\t"
2691        "adc r23, r25 \n\t"
2692        "mul r11, r18 \n\t"
2693        "add r24, r0 \n\t"
2694        "adc r22, r1 \n\t"
2695        "adc r23, r25 \n\t"
2696        "mul r2, r17 \n\t"
2697        "add r24, r0 \n\t"
2698        "adc r22, r1 \n\t"
2699        "adc r23, r25 \n\t"
2700        "mul r3, r16 \n\t"
2701        "add r24, r0 \n\t"
2702        "adc r22, r1 \n\t"
2703        "adc r23, r25 \n\t"
2704        "mul r4, r15 \n\t"
2705        "add r24, r0 \n\t"
2706        "adc r22, r1 \n\t"
2707        "adc r23, r25 \n\t"
2708        "mul r5, r14 \n\t"
2709        "add r24, r0 \n\t"
2710        "adc r22, r1 \n\t"
2711        "adc r23, r25 \n\t"
2712        "ld r0, z \n\t"
2713        "add r24, r0 \n\t"
2714        "adc r22, r25 \n\t"
2715        "adc r23, r25 \n\t"
2716        "st z+, r24 \n\t"
2717
2718        "ld r14, y+ \n\t"
2719        "ldi r24, 0 \n\t"
2720        "mul r6, r14 \n\t"
2721        "add r22, r0 \n\t"
2722        "adc r23, r1 \n\t"
2723        "adc r24, r25 \n\t"
2724        "mul r7, r13 \n\t"
2725        "add r22, r0 \n\t"
2726        "adc r23, r1 \n\t"
2727        "adc r24, r25 \n\t"
2728        "mul r8, r12 \n\t"
2729        "add r22, r0 \n\t"
2730        "adc r23, r1 \n\t"
2731        "adc r24, r25 \n\t"
2732        "mul r9, r21 \n\t"
2733        "add r22, r0 \n\t"
2734        "adc r23, r1 \n\t"
2735        "adc r24, r25 \n\t"
2736        "mul r10, r20 \n\t"
2737        "add r22, r0 \n\t"
2738        "adc r23, r1 \n\t"
2739        "adc r24, r25 \n\t"
2740        "mul r11, r19 \n\t"
2741        "add r22, r0 \n\t"
2742        "adc r23, r1 \n\t"
2743        "adc r24, r25 \n\t"
2744        "mul r2, r18 \n\t"
2745        "add r22, r0 \n\t"
2746        "adc r23, r1 \n\t"
2747        "adc r24, r25 \n\t"
2748        "mul r3, r17 \n\t"
2749        "add r22, r0 \n\t"
2750        "adc r23, r1 \n\t"
2751        "adc r24, r25 \n\t"
2752        "mul r4, r16 \n\t"
2753        "add r22, r0 \n\t"
2754        "adc r23, r1 \n\t"
2755        "adc r24, r25 \n\t"
2756        "mul r5, r15 \n\t"
2757        "add r22, r0 \n\t"
2758        "adc r23, r1 \n\t"
2759        "adc r24, r25 \n\t"
2760        "ld r0, z \n\t"
2761        "add r22, r0 \n\t"
2762        "adc r23, r25 \n\t"
2763        "adc r24, r25 \n\t"
2764        "st z+, r22 \n\t"
2765
2766        "ld r15, y+ \n\t"
2767        "ldi r22, 0 \n\t"
2768        "mul r6, r15 \n\t"
2769        "add r23, r0 \n\t"
2770        "adc r24, r1 \n\t"
2771        "adc r22, r25 \n\t"
2772        "mul r7, r14 \n\t"
2773        "add r23, r0 \n\t"
2774        "adc r24, r1 \n\t"
2775        "adc r22, r25 \n\t"
2776        "mul r8, r13 \n\t"
2777        "add r23, r0 \n\t"
2778        "adc r24, r1 \n\t"
2779        "adc r22, r25 \n\t"
2780        "mul r9, r12 \n\t"
2781        "add r23, r0 \n\t"
2782        "adc r24, r1 \n\t"
2783        "adc r22, r25 \n\t"
2784        "mul r10, r21 \n\t"
2785        "add r23, r0 \n\t"
2786        "adc r24, r1 \n\t"
2787        "adc r22, r25 \n\t"
2788        "mul r11, r20 \n\t"
2789        "add r23, r0 \n\t"
2790        "adc r24, r1 \n\t"
2791        "adc r22, r25 \n\t"
2792        "mul r2, r19 \n\t"
2793        "add r23, r0 \n\t"
2794        "adc r24, r1 \n\t"
2795        "adc r22, r25 \n\t"
2796        "mul r3, r18 \n\t"
2797        "add r23, r0 \n\t"
2798        "adc r24, r1 \n\t"
2799        "adc r22, r25 \n\t"
2800        "mul r4, r17 \n\t"
2801        "add r23, r0 \n\t"
2802        "adc r24, r1 \n\t"
2803        "adc r22, r25 \n\t"
2804        "mul r5, r16 \n\t"
2805        "add r23, r0 \n\t"
2806        "adc r24, r1 \n\t"
2807        "adc r22, r25 \n\t"
2808        "ld r0, z \n\t"
2809        "add r23, r0 \n\t"
2810        "adc r24, r25 \n\t"
2811        "adc r22, r25 \n\t"
2812        "st z+, r23 \n\t"
2813
2814        "ldi r23, 0 \n\t"
2815        "mul r7, r15 \n\t"
2816        "add r24, r0 \n\t"
2817        "adc r22, r1 \n\t"
2818        "adc r23, r25 \n\t"
2819        "mul r8, r14 \n\t"
2820        "add r24, r0 \n\t"
2821        "adc r22, r1 \n\t"
2822        "adc r23, r25 \n\t"
2823        "mul r9, r13 \n\t"
2824        "add r24, r0 \n\t"
2825        "adc r22, r1 \n\t"
2826        "adc r23, r25 \n\t"
2827        "mul r10, r12 \n\t"
2828        "add r24, r0 \n\t"
2829        "adc r22, r1 \n\t"
2830        "adc r23, r25 \n\t"
2831        "mul r11, r21 \n\t"
2832        "add r24, r0 \n\t"
2833        "adc r22, r1 \n\t"
2834        "adc r23, r25 \n\t"
2835        "mul r2, r20 \n\t"
2836        "add r24, r0 \n\t"
2837        "adc r22, r1 \n\t"
2838        "adc r23, r25 \n\t"
2839        "mul r3, r19 \n\t"
2840        "add r24, r0 \n\t"
2841        "adc r22, r1 \n\t"
2842        "adc r23, r25 \n\t"
2843        "mul r4, r18 \n\t"
2844        "add r24, r0 \n\t"
2845        "adc r22, r1 \n\t"
2846        "adc r23, r25 \n\t"
2847        "mul r5, r17 \n\t"
2848        "add r24, r0 \n\t"
2849        "adc r22, r1 \n\t"
2850        "adc r23, r25 \n\t"
2851        "st z+, r24 \n\t"
2852
2853        "ldi r24, 0 \n\t"
2854        "mul r8, r15 \n\t"
2855        "add r22, r0 \n\t"
2856        "adc r23, r1 \n\t"
2857        "adc r24, r25 \n\t"
2858        "mul r9, r14 \n\t"
2859        "add r22, r0 \n\t"
2860        "adc r23, r1 \n\t"
2861        "adc r24, r25 \n\t"
2862        "mul r10, r13 \n\t"
2863        "add r22, r0 \n\t"
2864        "adc r23, r1 \n\t"
2865        "adc r24, r25 \n\t"
2866        "mul r11, r12 \n\t"
2867        "add r22, r0 \n\t"
2868        "adc r23, r1 \n\t"
2869        "adc r24, r25 \n\t"
2870        "mul r2, r21 \n\t"
2871        "add r22, r0 \n\t"
2872        "adc r23, r1 \n\t"
2873        "adc r24, r25 \n\t"
2874        "mul r3, r20 \n\t"
2875        "add r22, r0 \n\t"
2876        "adc r23, r1 \n\t"
2877        "adc r24, r25 \n\t"
2878        "mul r4, r19 \n\t"
2879        "add r22, r0 \n\t"
2880        "adc r23, r1 \n\t"
2881        "adc r24, r25 \n\t"
2882        "mul r5, r18 \n\t"
2883        "add r22, r0 \n\t"
2884        "adc r23, r1 \n\t"
2885        "adc r24, r25 \n\t"
2886        "st z+, r22 \n\t"
2887
2888        "ldi r22, 0 \n\t"
2889        "mul r9, r15 \n\t"
2890        "add r23, r0 \n\t"
2891        "adc r24, r1 \n\t"
2892        "adc r22, r25 \n\t"
2893        "mul r10, r14 \n\t"
2894        "add r23, r0 \n\t"
2895        "adc r24, r1 \n\t"
2896        "adc r22, r25 \n\t"
2897        "mul r11, r13 \n\t"
2898        "add r23, r0 \n\t"
2899        "adc r24, r1 \n\t"
2900        "adc r22, r25 \n\t"
2901        "mul r2, r12 \n\t"
2902        "add r23, r0 \n\t"
2903        "adc r24, r1 \n\t"
2904        "adc r22, r25 \n\t"
2905        "mul r3, r21 \n\t"
2906        "add r23, r0 \n\t"
2907        "adc r24, r1 \n\t"
2908        "adc r22, r25 \n\t"
2909        "mul r4, r20 \n\t"
2910        "add r23, r0 \n\t"
2911        "adc r24, r1 \n\t"
2912        "adc r22, r25 \n\t"
2913        "mul r5, r19 \n\t"
2914        "add r23, r0 \n\t"
2915        "adc r24, r1 \n\t"
2916        "adc r22, r25 \n\t"
2917        "st z+, r23 \n\t"
2918
2919        "ldi r23, 0 \n\t"
2920        "mul r10, r15 \n\t"
2921        "add r24, r0 \n\t"
2922        "adc r22, r1 \n\t"
2923        "adc r23, r25 \n\t"
2924        "mul r11, r14 \n\t"
2925        "add r24, r0 \n\t"
2926        "adc r22, r1 \n\t"
2927        "adc r23, r25 \n\t"
2928        "mul r2, r13 \n\t"
2929        "add r24, r0 \n\t"
2930        "adc r22, r1 \n\t"
2931        "adc r23, r25 \n\t"
2932        "mul r3, r12 \n\t"
2933        "add r24, r0 \n\t"
2934        "adc r22, r1 \n\t"
2935        "adc r23, r25 \n\t"
2936        "mul r4, r21 \n\t"
2937        "add r24, r0 \n\t"
2938        "adc r22, r1 \n\t"
2939        "adc r23, r25 \n\t"
2940        "mul r5, r20 \n\t"
2941        "add r24, r0 \n\t"
2942        "adc r22, r1 \n\t"
2943        "adc r23, r25 \n\t"
2944        "st z+, r24 \n\t"
2945
2946        "ldi r24, 0 \n\t"
2947        "mul r11, r15 \n\t"
2948        "add r22, r0 \n\t"
2949        "adc r23, r1 \n\t"
2950        "adc r24, r25 \n\t"
2951        "mul r2, r14 \n\t"
2952        "add r22, r0 \n\t"
2953        "adc r23, r1 \n\t"
2954        "adc r24, r25 \n\t"
2955        "mul r3, r13 \n\t"
2956        "add r22, r0 \n\t"
2957        "adc r23, r1 \n\t"
2958        "adc r24, r25 \n\t"
2959        "mul r4, r12 \n\t"
2960        "add r22, r0 \n\t"
2961        "adc r23, r1 \n\t"
2962        "adc r24, r25 \n\t"
2963        "mul r5, r21 \n\t"
2964        "add r22, r0 \n\t"
2965        "adc r23, r1 \n\t"
2966        "adc r24, r25 \n\t"
2967        "st z+, r22 \n\t"
2968
2969        "ldi r22, 0 \n\t"
2970        "mul r2, r15 \n\t"
2971        "add r23, r0 \n\t"
2972        "adc r24, r1 \n\t"
2973        "adc r22, r25 \n\t"
2974        "mul r3, r14 \n\t"
2975        "add r23, r0 \n\t"
2976        "adc r24, r1 \n\t"
2977        "adc r22, r25 \n\t"
2978        "mul r4, r13 \n\t"
2979        "add r23, r0 \n\t"
2980        "adc r24, r1 \n\t"
2981        "adc r22, r25 \n\t"
2982        "mul r5, r12 \n\t"
2983        "add r23, r0 \n\t"
2984        "adc r24, r1 \n\t"
2985        "adc r22, r25 \n\t"
2986        "st z+, r23 \n\t"
2987
2988        "ldi r23, 0 \n\t"
2989        "mul r3, r15 \n\t"
2990        "add r24, r0 \n\t"
2991        "adc r22, r1 \n\t"
2992        "adc r23, r25 \n\t"
2993        "mul r4, r14 \n\t"
2994        "add r24, r0 \n\t"
2995        "adc r22, r1 \n\t"
2996        "adc r23, r25 \n\t"
2997        "mul r5, r13 \n\t"
2998        "add r24, r0 \n\t"
2999        "adc r22, r1 \n\t"
3000        "adc r23, r25 \n\t"
3001        "st z+, r24 \n\t"
3002
3003        "ldi r24, 0 \n\t"
3004        "mul r4, r15 \n\t"
3005        "add r22, r0 \n\t"
3006        "adc r23, r1 \n\t"
3007        "adc r24, r25 \n\t"
3008        "mul r5, r14 \n\t"
3009        "add r22, r0 \n\t"
3010        "adc r23, r1 \n\t"
3011        "adc r24, r25 \n\t"
3012        "st z+, r22 \n\t"
3013
3014        "mul r5, r15 \n\t"
3015        "add r23, r0 \n\t"
3016        "adc r24, r1 \n\t"
3017        "st z+, r23 \n\t"
3018        "st z+, r24 \n\t"
3019
3020        "sbiw r30, 38 \n\t"
3021        "sbiw r28, 24 \n\t"
3022        "sbiw r26, 14 \n\t"
3023        "ld r2, x+ \n\t"
3024        "ld r12, y+ \n\t"
3025        "ld r3, x+ \n\t"
3026        "ld r13, y+ \n\t"
3027        "ld r4, x+ \n\t"
3028        "ld r14, y+ \n\t"
3029        "ld r5, x+ \n\t"
3030        "ld r15, y+ \n\t"
3031        "ld r6, x+ \n\t"
3032        "ld r16, y+ \n\t"
3033        "ld r7, x+ \n\t"
3034        "ld r17, y+ \n\t"
3035        "ld r8, x+ \n\t"
3036        "ld r18, y+ \n\t"
3037        "ld r9, x+ \n\t"
3038        "ld r19, y+ \n\t"
3039        "ld r10, x+ \n\t"
3040        "ld r20, y+ \n\t"
3041        "ld r11, x+ \n\t"
3042        "ld r21, y+ \n\t"
3043
3044        "ldi r23, 0 \n\t"
3045        "mul r2, r12 \n\t"
3046        "st z+, r0 \n\t"
3047        "mov r22, r1 \n\t"
3048
3049        "ldi r24, 0 \n\t"
3050        "mul r2, r13 \n\t"
3051        "add r22, r0 \n\t"
3052        "adc r23, r1 \n\t"
3053        "mul r3, r12 \n\t"
3054        "add r22, r0 \n\t"
3055        "adc r23, r1 \n\t"
3056        "adc r24, r25 \n\t"
3057        "st z+, r22 \n\t"
3058
3059        "ldi r22, 0 \n\t"
3060        "mul r2, r14 \n\t"
3061        "add r23, r0 \n\t"
3062        "adc r24, r1 \n\t"
3063        "adc r22, r25 \n\t"
3064        "mul r3, r13 \n\t"
3065        "add r23, r0 \n\t"
3066        "adc r24, r1 \n\t"
3067        "adc r22, r25 \n\t"
3068        "mul r4, r12 \n\t"
3069        "add r23, r0 \n\t"
3070        "adc r24, r1 \n\t"
3071        "adc r22, r25 \n\t"
3072        "st z+, r23 \n\t"
3073
3074        "ldi r23, 0 \n\t"
3075        "mul r2, r15 \n\t"
3076        "add r24, r0 \n\t"
3077        "adc r22, r1 \n\t"
3078        "adc r23, r25 \n\t"
3079        "mul r3, r14 \n\t"
3080        "add r24, r0 \n\t"
3081        "adc r22, r1 \n\t"
3082        "adc r23, r25 \n\t"
3083        "mul r4, r13 \n\t"
3084        "add r24, r0 \n\t"
3085        "adc r22, r1 \n\t"
3086        "adc r23, r25 \n\t"
3087        "mul r5, r12 \n\t"
3088        "add r24, r0 \n\t"
3089        "adc r22, r1 \n\t"
3090        "adc r23, r25 \n\t"
3091        "st z+, r24 \n\t"
3092
3093        "ldi r24, 0 \n\t"
3094        "mul r2, r16 \n\t"
3095        "add r22, r0 \n\t"
3096        "adc r23, r1 \n\t"
3097        "adc r24, r25 \n\t"
3098        "mul r3, r15 \n\t"
3099        "add r22, r0 \n\t"
3100        "adc r23, r1 \n\t"
3101        "adc r24, r25 \n\t"
3102        "mul r4, r14 \n\t"
3103        "add r22, r0 \n\t"
3104        "adc r23, r1 \n\t"
3105        "adc r24, r25 \n\t"
3106        "mul r5, r13 \n\t"
3107        "add r22, r0 \n\t"
3108        "adc r23, r1 \n\t"
3109        "adc r24, r25 \n\t"
3110        "mul r6, r12 \n\t"
3111        "add r22, r0 \n\t"
3112        "adc r23, r1 \n\t"
3113        "adc r24, r25 \n\t"
3114        "st z+, r22 \n\t"
3115
3116        "ldi r22, 0 \n\t"
3117        "mul r2, r17 \n\t"
3118        "add r23, r0 \n\t"
3119        "adc r24, r1 \n\t"
3120        "adc r22, r25 \n\t"
3121        "mul r3, r16 \n\t"
3122        "add r23, r0 \n\t"
3123        "adc r24, r1 \n\t"
3124        "adc r22, r25 \n\t"
3125        "mul r4, r15 \n\t"
3126        "add r23, r0 \n\t"
3127        "adc r24, r1 \n\t"
3128        "adc r22, r25 \n\t"
3129        "mul r5, r14 \n\t"
3130        "add r23, r0 \n\t"
3131        "adc r24, r1 \n\t"
3132        "adc r22, r25 \n\t"
3133        "mul r6, r13 \n\t"
3134        "add r23, r0 \n\t"
3135        "adc r24, r1 \n\t"
3136        "adc r22, r25 \n\t"
3137        "mul r7, r12 \n\t"
3138        "add r23, r0 \n\t"
3139        "adc r24, r1 \n\t"
3140        "adc r22, r25 \n\t"
3141        "st z+, r23 \n\t"
3142
3143        "ldi r23, 0 \n\t"
3144        "mul r2, r18 \n\t"
3145        "add r24, r0 \n\t"
3146        "adc r22, r1 \n\t"
3147        "adc r23, r25 \n\t"
3148        "mul r3, r17 \n\t"
3149        "add r24, r0 \n\t"
3150        "adc r22, r1 \n\t"
3151        "adc r23, r25 \n\t"
3152        "mul r4, r16 \n\t"
3153        "add r24, r0 \n\t"
3154        "adc r22, r1 \n\t"
3155        "adc r23, r25 \n\t"
3156        "mul r5, r15 \n\t"
3157        "add r24, r0 \n\t"
3158        "adc r22, r1 \n\t"
3159        "adc r23, r25 \n\t"
3160        "mul r6, r14 \n\t"
3161        "add r24, r0 \n\t"
3162        "adc r22, r1 \n\t"
3163        "adc r23, r25 \n\t"
3164        "mul r7, r13 \n\t"
3165        "add r24, r0 \n\t"
3166        "adc r22, r1 \n\t"
3167        "adc r23, r25 \n\t"
3168        "mul r8, r12 \n\t"
3169        "add r24, r0 \n\t"
3170        "adc r22, r1 \n\t"
3171        "adc r23, r25 \n\t"
3172        "st z+, r24 \n\t"
3173
3174        "ldi r24, 0 \n\t"
3175        "mul r2, r19 \n\t"
3176        "add r22, r0 \n\t"
3177        "adc r23, r1 \n\t"
3178        "adc r24, r25 \n\t"
3179        "mul r3, r18 \n\t"
3180        "add r22, r0 \n\t"
3181        "adc r23, r1 \n\t"
3182        "adc r24, r25 \n\t"
3183        "mul r4, r17 \n\t"
3184        "add r22, r0 \n\t"
3185        "adc r23, r1 \n\t"
3186        "adc r24, r25 \n\t"
3187        "mul r5, r16 \n\t"
3188        "add r22, r0 \n\t"
3189        "adc r23, r1 \n\t"
3190        "adc r24, r25 \n\t"
3191        "mul r6, r15 \n\t"
3192        "add r22, r0 \n\t"
3193        "adc r23, r1 \n\t"
3194        "adc r24, r25 \n\t"
3195        "mul r7, r14 \n\t"
3196        "add r22, r0 \n\t"
3197        "adc r23, r1 \n\t"
3198        "adc r24, r25 \n\t"
3199        "mul r8, r13 \n\t"
3200        "add r22, r0 \n\t"
3201        "adc r23, r1 \n\t"
3202        "adc r24, r25 \n\t"
3203        "mul r9, r12 \n\t"
3204        "add r22, r0 \n\t"
3205        "adc r23, r1 \n\t"
3206        "adc r24, r25 \n\t"
3207        "st z+, r22 \n\t"
3208
3209        "ldi r22, 0 \n\t"
3210        "mul r2, r20 \n\t"
3211        "add r23, r0 \n\t"
3212        "adc r24, r1 \n\t"
3213        "adc r22, r25 \n\t"
3214        "mul r3, r19 \n\t"
3215        "add r23, r0 \n\t"
3216        "adc r24, r1 \n\t"
3217        "adc r22, r25 \n\t"
3218        "mul r4, r18 \n\t"
3219        "add r23, r0 \n\t"
3220        "adc r24, r1 \n\t"
3221        "adc r22, r25 \n\t"
3222        "mul r5, r17 \n\t"
3223        "add r23, r0 \n\t"
3224        "adc r24, r1 \n\t"
3225        "adc r22, r25 \n\t"
3226        "mul r6, r16 \n\t"
3227        "add r23, r0 \n\t"
3228        "adc r24, r1 \n\t"
3229        "adc r22, r25 \n\t"
3230        "mul r7, r15 \n\t"
3231        "add r23, r0 \n\t"
3232        "adc r24, r1 \n\t"
3233        "adc r22, r25 \n\t"
3234        "mul r8, r14 \n\t"
3235        "add r23, r0 \n\t"
3236        "adc r24, r1 \n\t"
3237        "adc r22, r25 \n\t"
3238        "mul r9, r13 \n\t"
3239        "add r23, r0 \n\t"
3240        "adc r24, r1 \n\t"
3241        "adc r22, r25 \n\t"
3242        "mul r10, r12 \n\t"
3243        "add r23, r0 \n\t"
3244        "adc r24, r1 \n\t"
3245        "adc r22, r25 \n\t"
3246        "st z+, r23 \n\t"
3247
3248        "ldi r23, 0 \n\t"
3249        "mul r2, r21 \n\t"
3250        "add r24, r0 \n\t"
3251        "adc r22, r1 \n\t"
3252        "adc r23, r25 \n\t"
3253        "mul r3, r20 \n\t"
3254        "add r24, r0 \n\t"
3255        "adc r22, r1 \n\t"
3256        "adc r23, r25 \n\t"
3257        "mul r4, r19 \n\t"
3258        "add r24, r0 \n\t"
3259        "adc r22, r1 \n\t"
3260        "adc r23, r25 \n\t"
3261        "mul r5, r18 \n\t"
3262        "add r24, r0 \n\t"
3263        "adc r22, r1 \n\t"
3264        "adc r23, r25 \n\t"
3265        "mul r6, r17 \n\t"
3266        "add r24, r0 \n\t"
3267        "adc r22, r1 \n\t"
3268        "adc r23, r25 \n\t"
3269        "mul r7, r16 \n\t"
3270        "add r24, r0 \n\t"
3271        "adc r22, r1 \n\t"
3272        "adc r23, r25 \n\t"
3273        "mul r8, r15 \n\t"
3274        "add r24, r0 \n\t"
3275        "adc r22, r1 \n\t"
3276        "adc r23, r25 \n\t"
3277        "mul r9, r14 \n\t"
3278        "add r24, r0 \n\t"
3279        "adc r22, r1 \n\t"
3280        "adc r23, r25 \n\t"
3281        "mul r10, r13 \n\t"
3282        "add r24, r0 \n\t"
3283        "adc r22, r1 \n\t"
3284        "adc r23, r25 \n\t"
3285        "mul r11, r12 \n\t"
3286        "add r24, r0 \n\t"
3287        "adc r22, r1 \n\t"
3288        "adc r23, r25 \n\t"
3289        "st z+, r24 \n\t"
3290
3291        "ld r2, x+ \n\t"
3292        "ldi r24, 0 \n\t"
3293        "mul r3, r21 \n\t"
3294        "add r22, r0 \n\t"
3295        "adc r23, r1 \n\t"
3296        "adc r24, r25 \n\t"
3297        "mul r4, r20 \n\t"
3298        "add r22, r0 \n\t"
3299        "adc r23, r1 \n\t"
3300        "adc r24, r25 \n\t"
3301        "mul r5, r19 \n\t"
3302        "add r22, r0 \n\t"
3303        "adc r23, r1 \n\t"
3304        "adc r24, r25 \n\t"
3305        "mul r6, r18 \n\t"
3306        "add r22, r0 \n\t"
3307        "adc r23, r1 \n\t"
3308        "adc r24, r25 \n\t"
3309        "mul r7, r17 \n\t"
3310        "add r22, r0 \n\t"
3311        "adc r23, r1 \n\t"
3312        "adc r24, r25 \n\t"
3313        "mul r8, r16 \n\t"
3314        "add r22, r0 \n\t"
3315        "adc r23, r1 \n\t"
3316        "adc r24, r25 \n\t"
3317        "mul r9, r15 \n\t"
3318        "add r22, r0 \n\t"
3319        "adc r23, r1 \n\t"
3320        "adc r24, r25 \n\t"
3321        "mul r10, r14 \n\t"
3322        "add r22, r0 \n\t"
3323        "adc r23, r1 \n\t"
3324        "adc r24, r25 \n\t"
3325        "mul r11, r13 \n\t"
3326        "add r22, r0 \n\t"
3327        "adc r23, r1 \n\t"
3328        "adc r24, r25 \n\t"
3329        "mul r2, r12 \n\t"
3330        "add r22, r0 \n\t"
3331        "adc r23, r1 \n\t"
3332        "adc r24, r25 \n\t"
3333        "ld r0, z \n\t"
3334        "add r22, r0 \n\t"
3335        "adc r23, r25 \n\t"
3336        "adc r24, r25 \n\t"
3337        "st z+, r22 \n\t"
3338
3339        "ld r3, x+ \n\t"
3340        "ldi r22, 0 \n\t"
3341        "mul r4, r21 \n\t"
3342        "add r23, r0 \n\t"
3343        "adc r24, r1 \n\t"
3344        "adc r22, r25 \n\t"
3345        "mul r5, r20 \n\t"
3346        "add r23, r0 \n\t"
3347        "adc r24, r1 \n\t"
3348        "adc r22, r25 \n\t"
3349        "mul r6, r19 \n\t"
3350        "add r23, r0 \n\t"
3351        "adc r24, r1 \n\t"
3352        "adc r22, r25 \n\t"
3353        "mul r7, r18 \n\t"
3354        "add r23, r0 \n\t"
3355        "adc r24, r1 \n\t"
3356        "adc r22, r25 \n\t"
3357        "mul r8, r17 \n\t"
3358        "add r23, r0 \n\t"
3359        "adc r24, r1 \n\t"
3360        "adc r22, r25 \n\t"
3361        "mul r9, r16 \n\t"
3362        "add r23, r0 \n\t"
3363        "adc r24, r1 \n\t"
3364        "adc r22, r25 \n\t"
3365        "mul r10, r15 \n\t"
3366        "add r23, r0 \n\t"
3367        "adc r24, r1 \n\t"
3368        "adc r22, r25 \n\t"
3369        "mul r11, r14 \n\t"
3370        "add r23, r0 \n\t"
3371        "adc r24, r1 \n\t"
3372        "adc r22, r25 \n\t"
3373        "mul r2, r13 \n\t"
3374        "add r23, r0 \n\t"
3375        "adc r24, r1 \n\t"
3376        "adc r22, r25 \n\t"
3377        "mul r3, r12 \n\t"
3378        "add r23, r0 \n\t"
3379        "adc r24, r1 \n\t"
3380        "adc r22, r25 \n\t"
3381        "ld r0, z \n\t"
3382        "add r23, r0 \n\t"
3383        "adc r24, r25 \n\t"
3384        "adc r22, r25 \n\t"
3385        "st z+, r23 \n\t"
3386
3387        "ld r4, x+ \n\t"
3388        "ldi r23, 0 \n\t"
3389        "mul r5, r21 \n\t"
3390        "add r24, r0 \n\t"
3391        "adc r22, r1 \n\t"
3392        "adc r23, r25 \n\t"
3393        "mul r6, r20 \n\t"
3394        "add r24, r0 \n\t"
3395        "adc r22, r1 \n\t"
3396        "adc r23, r25 \n\t"
3397        "mul r7, r19 \n\t"
3398        "add r24, r0 \n\t"
3399        "adc r22, r1 \n\t"
3400        "adc r23, r25 \n\t"
3401        "mul r8, r18 \n\t"
3402        "add r24, r0 \n\t"
3403        "adc r22, r1 \n\t"
3404        "adc r23, r25 \n\t"
3405        "mul r9, r17 \n\t"
3406        "add r24, r0 \n\t"
3407        "adc r22, r1 \n\t"
3408        "adc r23, r25 \n\t"
3409        "mul r10, r16 \n\t"
3410        "add r24, r0 \n\t"
3411        "adc r22, r1 \n\t"
3412        "adc r23, r25 \n\t"
3413        "mul r11, r15 \n\t"
3414        "add r24, r0 \n\t"
3415        "adc r22, r1 \n\t"
3416        "adc r23, r25 \n\t"
3417        "mul r2, r14 \n\t"
3418        "add r24, r0 \n\t"
3419        "adc r22, r1 \n\t"
3420        "adc r23, r25 \n\t"
3421        "mul r3, r13 \n\t"
3422        "add r24, r0 \n\t"
3423        "adc r22, r1 \n\t"
3424        "adc r23, r25 \n\t"
3425        "mul r4, r12 \n\t"
3426        "add r24, r0 \n\t"
3427        "adc r22, r1 \n\t"
3428        "adc r23, r25 \n\t"
3429        "ld r0, z \n\t"
3430        "add r24, r0 \n\t"
3431        "adc r22, r25 \n\t"
3432        "adc r23, r25 \n\t"
3433        "st z+, r24 \n\t"
3434
3435        "ld r5, x+ \n\t"
3436        "ldi r24, 0 \n\t"
3437        "mul r6, r21 \n\t"
3438        "add r22, r0 \n\t"
3439        "adc r23, r1 \n\t"
3440        "adc r24, r25 \n\t"
3441        "mul r7, r20 \n\t"
3442        "add r22, r0 \n\t"
3443        "adc r23, r1 \n\t"
3444        "adc r24, r25 \n\t"
3445        "mul r8, r19 \n\t"
3446        "add r22, r0 \n\t"
3447        "adc r23, r1 \n\t"
3448        "adc r24, r25 \n\t"
3449        "mul r9, r18 \n\t"
3450        "add r22, r0 \n\t"
3451        "adc r23, r1 \n\t"
3452        "adc r24, r25 \n\t"
3453        "mul r10, r17 \n\t"
3454        "add r22, r0 \n\t"
3455        "adc r23, r1 \n\t"
3456        "adc r24, r25 \n\t"
3457        "mul r11, r16 \n\t"
3458        "add r22, r0 \n\t"
3459        "adc r23, r1 \n\t"
3460        "adc r24, r25 \n\t"
3461        "mul r2, r15 \n\t"
3462        "add r22, r0 \n\t"
3463        "adc r23, r1 \n\t"
3464        "adc r24, r25 \n\t"
3465        "mul r3, r14 \n\t"
3466        "add r22, r0 \n\t"
3467        "adc r23, r1 \n\t"
3468        "adc r24, r25 \n\t"
3469        "mul r4, r13 \n\t"
3470        "add r22, r0 \n\t"
3471        "adc r23, r1 \n\t"
3472        "adc r24, r25 \n\t"
3473        "mul r5, r12 \n\t"
3474        "add r22, r0 \n\t"
3475        "adc r23, r1 \n\t"
3476        "adc r24, r25 \n\t"
3477        "ld r0, z \n\t"
3478        "add r22, r0 \n\t"
3479        "adc r23, r25 \n\t"
3480        "adc r24, r25 \n\t"
3481        "st z+, r22 \n\t"
3482
3483        "ld r6, x+ \n\t"
3484        "ldi r22, 0 \n\t"
3485        "mul r7, r21 \n\t"
3486        "add r23, r0 \n\t"
3487        "adc r24, r1 \n\t"
3488        "adc r22, r25 \n\t"
3489        "mul r8, r20 \n\t"
3490        "add r23, r0 \n\t"
3491        "adc r24, r1 \n\t"
3492        "adc r22, r25 \n\t"
3493        "mul r9, r19 \n\t"
3494        "add r23, r0 \n\t"
3495        "adc r24, r1 \n\t"
3496        "adc r22, r25 \n\t"
3497        "mul r10, r18 \n\t"
3498        "add r23, r0 \n\t"
3499        "adc r24, r1 \n\t"
3500        "adc r22, r25 \n\t"
3501        "mul r11, r17 \n\t"
3502        "add r23, r0 \n\t"
3503        "adc r24, r1 \n\t"
3504        "adc r22, r25 \n\t"
3505        "mul r2, r16 \n\t"
3506        "add r23, r0 \n\t"
3507        "adc r24, r1 \n\t"
3508        "adc r22, r25 \n\t"
3509        "mul r3, r15 \n\t"
3510        "add r23, r0 \n\t"
3511        "adc r24, r1 \n\t"
3512        "adc r22, r25 \n\t"
3513        "mul r4, r14 \n\t"
3514        "add r23, r0 \n\t"
3515        "adc r24, r1 \n\t"
3516        "adc r22, r25 \n\t"
3517        "mul r5, r13 \n\t"
3518        "add r23, r0 \n\t"
3519        "adc r24, r1 \n\t"
3520        "adc r22, r25 \n\t"
3521        "mul r6, r12 \n\t"
3522        "add r23, r0 \n\t"
3523        "adc r24, r1 \n\t"
3524        "adc r22, r25 \n\t"
3525        "ld r0, z \n\t"
3526        "add r23, r0 \n\t"
3527        "adc r24, r25 \n\t"
3528        "adc r22, r25 \n\t"
3529        "st z+, r23 \n\t"
3530
3531        "ld r7, x+ \n\t"
3532        "ldi r23, 0 \n\t"
3533        "mul r8, r21 \n\t"
3534        "add r24, r0 \n\t"
3535        "adc r22, r1 \n\t"
3536        "adc r23, r25 \n\t"
3537        "mul r9, r20 \n\t"
3538        "add r24, r0 \n\t"
3539        "adc r22, r1 \n\t"
3540        "adc r23, r25 \n\t"
3541        "mul r10, r19 \n\t"
3542        "add r24, r0 \n\t"
3543        "adc r22, r1 \n\t"
3544        "adc r23, r25 \n\t"
3545        "mul r11, r18 \n\t"
3546        "add r24, r0 \n\t"
3547        "adc r22, r1 \n\t"
3548        "adc r23, r25 \n\t"
3549        "mul r2, r17 \n\t"
3550        "add r24, r0 \n\t"
3551        "adc r22, r1 \n\t"
3552        "adc r23, r25 \n\t"
3553        "mul r3, r16 \n\t"
3554        "add r24, r0 \n\t"
3555        "adc r22, r1 \n\t"
3556        "adc r23, r25 \n\t"
3557        "mul r4, r15 \n\t"
3558        "add r24, r0 \n\t"
3559        "adc r22, r1 \n\t"
3560        "adc r23, r25 \n\t"
3561        "mul r5, r14 \n\t"
3562        "add r24, r0 \n\t"
3563        "adc r22, r1 \n\t"
3564        "adc r23, r25 \n\t"
3565        "mul r6, r13 \n\t"
3566        "add r24, r0 \n\t"
3567        "adc r22, r1 \n\t"
3568        "adc r23, r25 \n\t"
3569        "mul r7, r12 \n\t"
3570        "add r24, r0 \n\t"
3571        "adc r22, r1 \n\t"
3572        "adc r23, r25 \n\t"
3573        "ld r0, z \n\t"
3574        "add r24, r0 \n\t"
3575        "adc r22, r25 \n\t"
3576        "adc r23, r25 \n\t"
3577        "st z+, r24 \n\t"
3578
3579        "ld r8, x+ \n\t"
3580        "ldi r24, 0 \n\t"
3581        "mul r9, r21 \n\t"
3582        "add r22, r0 \n\t"
3583        "adc r23, r1 \n\t"
3584        "adc r24, r25 \n\t"
3585        "mul r10, r20 \n\t"
3586        "add r22, r0 \n\t"
3587        "adc r23, r1 \n\t"
3588        "adc r24, r25 \n\t"
3589        "mul r11, r19 \n\t"
3590        "add r22, r0 \n\t"
3591        "adc r23, r1 \n\t"
3592        "adc r24, r25 \n\t"
3593        "mul r2, r18 \n\t"
3594        "add r22, r0 \n\t"
3595        "adc r23, r1 \n\t"
3596        "adc r24, r25 \n\t"
3597        "mul r3, r17 \n\t"
3598        "add r22, r0 \n\t"
3599        "adc r23, r1 \n\t"
3600        "adc r24, r25 \n\t"
3601        "mul r4, r16 \n\t"
3602        "add r22, r0 \n\t"
3603        "adc r23, r1 \n\t"
3604        "adc r24, r25 \n\t"
3605        "mul r5, r15 \n\t"
3606        "add r22, r0 \n\t"
3607        "adc r23, r1 \n\t"
3608        "adc r24, r25 \n\t"
3609        "mul r6, r14 \n\t"
3610        "add r22, r0 \n\t"
3611        "adc r23, r1 \n\t"
3612        "adc r24, r25 \n\t"
3613        "mul r7, r13 \n\t"
3614        "add r22, r0 \n\t"
3615        "adc r23, r1 \n\t"
3616        "adc r24, r25 \n\t"
3617        "mul r8, r12 \n\t"
3618        "add r22, r0 \n\t"
3619        "adc r23, r1 \n\t"
3620        "adc r24, r25 \n\t"
3621        "ld r0, z \n\t"
3622        "add r22, r0 \n\t"
3623        "adc r23, r25 \n\t"
3624        "adc r24, r25 \n\t"
3625        "st z+, r22 \n\t"
3626
3627        "ld r9, x+ \n\t"
3628        "ldi r22, 0 \n\t"
3629        "mul r10, r21 \n\t"
3630        "add r23, r0 \n\t"
3631        "adc r24, r1 \n\t"
3632        "adc r22, r25 \n\t"
3633        "mul r11, r20 \n\t"
3634        "add r23, r0 \n\t"
3635        "adc r24, r1 \n\t"
3636        "adc r22, r25 \n\t"
3637        "mul r2, r19 \n\t"
3638        "add r23, r0 \n\t"
3639        "adc r24, r1 \n\t"
3640        "adc r22, r25 \n\t"
3641        "mul r3, r18 \n\t"
3642        "add r23, r0 \n\t"
3643        "adc r24, r1 \n\t"
3644        "adc r22, r25 \n\t"
3645        "mul r4, r17 \n\t"
3646        "add r23, r0 \n\t"
3647        "adc r24, r1 \n\t"
3648        "adc r22, r25 \n\t"
3649        "mul r5, r16 \n\t"
3650        "add r23, r0 \n\t"
3651        "adc r24, r1 \n\t"
3652        "adc r22, r25 \n\t"
3653        "mul r6, r15 \n\t"
3654        "add r23, r0 \n\t"
3655        "adc r24, r1 \n\t"
3656        "adc r22, r25 \n\t"
3657        "mul r7, r14 \n\t"
3658        "add r23, r0 \n\t"
3659        "adc r24, r1 \n\t"
3660        "adc r22, r25 \n\t"
3661        "mul r8, r13 \n\t"
3662        "add r23, r0 \n\t"
3663        "adc r24, r1 \n\t"
3664        "adc r22, r25 \n\t"
3665        "mul r9, r12 \n\t"
3666        "add r23, r0 \n\t"
3667        "adc r24, r1 \n\t"
3668        "adc r22, r25 \n\t"
3669        "ld r0, z \n\t"
3670        "add r23, r0 \n\t"
3671        "adc r24, r25 \n\t"
3672        "adc r22, r25 \n\t"
3673        "st z+, r23 \n\t"
3674
3675        "ld r10, x+ \n\t"
3676        "ldi r23, 0 \n\t"
3677        "mul r11, r21 \n\t"
3678        "add r24, r0 \n\t"
3679        "adc r22, r1 \n\t"
3680        "adc r23, r25 \n\t"
3681        "mul r2, r20 \n\t"
3682        "add r24, r0 \n\t"
3683        "adc r22, r1 \n\t"
3684        "adc r23, r25 \n\t"
3685        "mul r3, r19 \n\t"
3686        "add r24, r0 \n\t"
3687        "adc r22, r1 \n\t"
3688        "adc r23, r25 \n\t"
3689        "mul r4, r18 \n\t"
3690        "add r24, r0 \n\t"
3691        "adc r22, r1 \n\t"
3692        "adc r23, r25 \n\t"
3693        "mul r5, r17 \n\t"
3694        "add r24, r0 \n\t"
3695        "adc r22, r1 \n\t"
3696        "adc r23, r25 \n\t"
3697        "mul r6, r16 \n\t"
3698        "add r24, r0 \n\t"
3699        "adc r22, r1 \n\t"
3700        "adc r23, r25 \n\t"
3701        "mul r7, r15 \n\t"
3702        "add r24, r0 \n\t"
3703        "adc r22, r1 \n\t"
3704        "adc r23, r25 \n\t"
3705        "mul r8, r14 \n\t"
3706        "add r24, r0 \n\t"
3707        "adc r22, r1 \n\t"
3708        "adc r23, r25 \n\t"
3709        "mul r9, r13 \n\t"
3710        "add r24, r0 \n\t"
3711        "adc r22, r1 \n\t"
3712        "adc r23, r25 \n\t"
3713        "mul r10, r12 \n\t"
3714        "add r24, r0 \n\t"
3715        "adc r22, r1 \n\t"
3716        "adc r23, r25 \n\t"
3717        "ld r0, z \n\t"
3718        "add r24, r0 \n\t"
3719        "adc r22, r25 \n\t"
3720        "adc r23, r25 \n\t"
3721        "st z+, r24 \n\t"
3722
3723        "ld r11, x+ \n\t"
3724        "ldi r24, 0 \n\t"
3725        "mul r2, r21 \n\t"
3726        "add r22, r0 \n\t"
3727        "adc r23, r1 \n\t"
3728        "adc r24, r25 \n\t"
3729        "mul r3, r20 \n\t"
3730        "add r22, r0 \n\t"
3731        "adc r23, r1 \n\t"
3732        "adc r24, r25 \n\t"
3733        "mul r4, r19 \n\t"
3734        "add r22, r0 \n\t"
3735        "adc r23, r1 \n\t"
3736        "adc r24, r25 \n\t"
3737        "mul r5, r18 \n\t"
3738        "add r22, r0 \n\t"
3739        "adc r23, r1 \n\t"
3740        "adc r24, r25 \n\t"
3741        "mul r6, r17 \n\t"
3742        "add r22, r0 \n\t"
3743        "adc r23, r1 \n\t"
3744        "adc r24, r25 \n\t"
3745        "mul r7, r16 \n\t"
3746        "add r22, r0 \n\t"
3747        "adc r23, r1 \n\t"
3748        "adc r24, r25 \n\t"
3749        "mul r8, r15 \n\t"
3750        "add r22, r0 \n\t"
3751        "adc r23, r1 \n\t"
3752        "adc r24, r25 \n\t"
3753        "mul r9, r14 \n\t"
3754        "add r22, r0 \n\t"
3755        "adc r23, r1 \n\t"
3756        "adc r24, r25 \n\t"
3757        "mul r10, r13 \n\t"
3758        "add r22, r0 \n\t"
3759        "adc r23, r1 \n\t"
3760        "adc r24, r25 \n\t"
3761        "mul r11, r12 \n\t"
3762        "add r22, r0 \n\t"
3763        "adc r23, r1 \n\t"
3764        "adc r24, r25 \n\t"
3765        "ld r0, z \n\t"
3766        "add r22, r0 \n\t"
3767        "adc r23, r25 \n\t"
3768        "adc r24, r25 \n\t"
3769        "st z+, r22 \n\t"
3770
3771        "ld r2, x+ \n\t"
3772        "ldi r22, 0 \n\t"
3773        "mul r3, r21 \n\t"
3774        "add r23, r0 \n\t"
3775        "adc r24, r1 \n\t"
3776        "adc r22, r25 \n\t"
3777        "mul r4, r20 \n\t"
3778        "add r23, r0 \n\t"
3779        "adc r24, r1 \n\t"
3780        "adc r22, r25 \n\t"
3781        "mul r5, r19 \n\t"
3782        "add r23, r0 \n\t"
3783        "adc r24, r1 \n\t"
3784        "adc r22, r25 \n\t"
3785        "mul r6, r18 \n\t"
3786        "add r23, r0 \n\t"
3787        "adc r24, r1 \n\t"
3788        "adc r22, r25 \n\t"
3789        "mul r7, r17 \n\t"
3790        "add r23, r0 \n\t"
3791        "adc r24, r1 \n\t"
3792        "adc r22, r25 \n\t"
3793        "mul r8, r16 \n\t"
3794        "add r23, r0 \n\t"
3795        "adc r24, r1 \n\t"
3796        "adc r22, r25 \n\t"
3797        "mul r9, r15 \n\t"
3798        "add r23, r0 \n\t"
3799        "adc r24, r1 \n\t"
3800        "adc r22, r25 \n\t"
3801        "mul r10, r14 \n\t"
3802        "add r23, r0 \n\t"
3803        "adc r24, r1 \n\t"
3804        "adc r22, r25 \n\t"
3805        "mul r11, r13 \n\t"
3806        "add r23, r0 \n\t"
3807        "adc r24, r1 \n\t"
3808        "adc r22, r25 \n\t"
3809        "mul r2, r12 \n\t"
3810        "add r23, r0 \n\t"
3811        "adc r24, r1 \n\t"
3812        "adc r22, r25 \n\t"
3813        "ld r0, z \n\t"
3814        "add r23, r0 \n\t"
3815        "adc r24, r25 \n\t"
3816        "adc r22, r25 \n\t"
3817        "st z+, r23 \n\t"
3818
3819        "ld r3, x+ \n\t"
3820        "ldi r23, 0 \n\t"
3821        "mul r4, r21 \n\t"
3822        "add r24, r0 \n\t"
3823        "adc r22, r1 \n\t"
3824        "adc r23, r25 \n\t"
3825        "mul r5, r20 \n\t"
3826        "add r24, r0 \n\t"
3827        "adc r22, r1 \n\t"
3828        "adc r23, r25 \n\t"
3829        "mul r6, r19 \n\t"
3830        "add r24, r0 \n\t"
3831        "adc r22, r1 \n\t"
3832        "adc r23, r25 \n\t"
3833        "mul r7, r18 \n\t"
3834        "add r24, r0 \n\t"
3835        "adc r22, r1 \n\t"
3836        "adc r23, r25 \n\t"
3837        "mul r8, r17 \n\t"
3838        "add r24, r0 \n\t"
3839        "adc r22, r1 \n\t"
3840        "adc r23, r25 \n\t"
3841        "mul r9, r16 \n\t"
3842        "add r24, r0 \n\t"
3843        "adc r22, r1 \n\t"
3844        "adc r23, r25 \n\t"
3845        "mul r10, r15 \n\t"
3846        "add r24, r0 \n\t"
3847        "adc r22, r1 \n\t"
3848        "adc r23, r25 \n\t"
3849        "mul r11, r14 \n\t"
3850        "add r24, r0 \n\t"
3851        "adc r22, r1 \n\t"
3852        "adc r23, r25 \n\t"
3853        "mul r2, r13 \n\t"
3854        "add r24, r0 \n\t"
3855        "adc r22, r1 \n\t"
3856        "adc r23, r25 \n\t"
3857        "mul r3, r12 \n\t"
3858        "add r24, r0 \n\t"
3859        "adc r22, r1 \n\t"
3860        "adc r23, r25 \n\t"
3861        "ld r0, z \n\t"
3862        "add r24, r0 \n\t"
3863        "adc r22, r25 \n\t"
3864        "adc r23, r25 \n\t"
3865        "st z+, r24 \n\t"
3866
3867        "ld r4, x+ \n\t"
3868        "ldi r24, 0 \n\t"
3869        "mul r5, r21 \n\t"
3870        "add r22, r0 \n\t"
3871        "adc r23, r1 \n\t"
3872        "adc r24, r25 \n\t"
3873        "mul r6, r20 \n\t"
3874        "add r22, r0 \n\t"
3875        "adc r23, r1 \n\t"
3876        "adc r24, r25 \n\t"
3877        "mul r7, r19 \n\t"
3878        "add r22, r0 \n\t"
3879        "adc r23, r1 \n\t"
3880        "adc r24, r25 \n\t"
3881        "mul r8, r18 \n\t"
3882        "add r22, r0 \n\t"
3883        "adc r23, r1 \n\t"
3884        "adc r24, r25 \n\t"
3885        "mul r9, r17 \n\t"
3886        "add r22, r0 \n\t"
3887        "adc r23, r1 \n\t"
3888        "adc r24, r25 \n\t"
3889        "mul r10, r16 \n\t"
3890        "add r22, r0 \n\t"
3891        "adc r23, r1 \n\t"
3892        "adc r24, r25 \n\t"
3893        "mul r11, r15 \n\t"
3894        "add r22, r0 \n\t"
3895        "adc r23, r1 \n\t"
3896        "adc r24, r25 \n\t"
3897        "mul r2, r14 \n\t"
3898        "add r22, r0 \n\t"
3899        "adc r23, r1 \n\t"
3900        "adc r24, r25 \n\t"
3901        "mul r3, r13 \n\t"
3902        "add r22, r0 \n\t"
3903        "adc r23, r1 \n\t"
3904        "adc r24, r25 \n\t"
3905        "mul r4, r12 \n\t"
3906        "add r22, r0 \n\t"
3907        "adc r23, r1 \n\t"
3908        "adc r24, r25 \n\t"
3909        "ld r0, z \n\t"
3910        "add r22, r0 \n\t"
3911        "adc r23, r25 \n\t"
3912        "adc r24, r25 \n\t"
3913        "st z+, r22 \n\t"
3914
3915        "ld r5, x+ \n\t"
3916        "ldi r22, 0 \n\t"
3917        "mul r6, r21 \n\t"
3918        "add r23, r0 \n\t"
3919        "adc r24, r1 \n\t"
3920        "adc r22, r25 \n\t"
3921        "mul r7, r20 \n\t"
3922        "add r23, r0 \n\t"
3923        "adc r24, r1 \n\t"
3924        "adc r22, r25 \n\t"
3925        "mul r8, r19 \n\t"
3926        "add r23, r0 \n\t"
3927        "adc r24, r1 \n\t"
3928        "adc r22, r25 \n\t"
3929        "mul r9, r18 \n\t"
3930        "add r23, r0 \n\t"
3931        "adc r24, r1 \n\t"
3932        "adc r22, r25 \n\t"
3933        "mul r10, r17 \n\t"
3934        "add r23, r0 \n\t"
3935        "adc r24, r1 \n\t"
3936        "adc r22, r25 \n\t"
3937        "mul r11, r16 \n\t"
3938        "add r23, r0 \n\t"
3939        "adc r24, r1 \n\t"
3940        "adc r22, r25 \n\t"
3941        "mul r2, r15 \n\t"
3942        "add r23, r0 \n\t"
3943        "adc r24, r1 \n\t"
3944        "adc r22, r25 \n\t"
3945        "mul r3, r14 \n\t"
3946        "add r23, r0 \n\t"
3947        "adc r24, r1 \n\t"
3948        "adc r22, r25 \n\t"
3949        "mul r4, r13 \n\t"
3950        "add r23, r0 \n\t"
3951        "adc r24, r1 \n\t"
3952        "adc r22, r25 \n\t"
3953        "mul r5, r12 \n\t"
3954        "add r23, r0 \n\t"
3955        "adc r24, r1 \n\t"
3956        "adc r22, r25 \n\t"
3957        "ld r0, z \n\t"
3958        "add r23, r0 \n\t"
3959        "adc r24, r25 \n\t"
3960        "adc r22, r25 \n\t"
3961        "st z+, r23 \n\t"
3962
3963        "ld r12, y+ \n\t"
3964        "ldi r23, 0 \n\t"
3965        "mul r6, r12 \n\t"
3966        "add r24, r0 \n\t"
3967        "adc r22, r1 \n\t"
3968        "adc r23, r25 \n\t"
3969        "mul r7, r21 \n\t"
3970        "add r24, r0 \n\t"
3971        "adc r22, r1 \n\t"
3972        "adc r23, r25 \n\t"
3973        "mul r8, r20 \n\t"
3974        "add r24, r0 \n\t"
3975        "adc r22, r1 \n\t"
3976        "adc r23, r25 \n\t"
3977        "mul r9, r19 \n\t"
3978        "add r24, r0 \n\t"
3979        "adc r22, r1 \n\t"
3980        "adc r23, r25 \n\t"
3981        "mul r10, r18 \n\t"
3982        "add r24, r0 \n\t"
3983        "adc r22, r1 \n\t"
3984        "adc r23, r25 \n\t"
3985        "mul r11, r17 \n\t"
3986        "add r24, r0 \n\t"
3987        "adc r22, r1 \n\t"
3988        "adc r23, r25 \n\t"
3989        "mul r2, r16 \n\t"
3990        "add r24, r0 \n\t"
3991        "adc r22, r1 \n\t"
3992        "adc r23, r25 \n\t"
3993        "mul r3, r15 \n\t"
3994        "add r24, r0 \n\t"
3995        "adc r22, r1 \n\t"
3996        "adc r23, r25 \n\t"
3997        "mul r4, r14 \n\t"
3998        "add r24, r0 \n\t"
3999        "adc r22, r1 \n\t"
4000        "adc r23, r25 \n\t"
4001        "mul r5, r13 \n\t"
4002        "add r24, r0 \n\t"
4003        "adc r22, r1 \n\t"
4004        "adc r23, r25 \n\t"
4005        "ld r0, z \n\t"
4006        "add r24, r0 \n\t"
4007        "adc r22, r25 \n\t"
4008        "adc r23, r25 \n\t"
4009        "st z+, r24 \n\t"
4010
4011        "ld r13, y+ \n\t"
4012        "ldi r24, 0 \n\t"
4013        "mul r6, r13 \n\t"
4014        "add r22, r0 \n\t"
4015        "adc r23, r1 \n\t"
4016        "adc r24, r25 \n\t"
4017        "mul r7, r12 \n\t"
4018        "add r22, r0 \n\t"
4019        "adc r23, r1 \n\t"
4020        "adc r24, r25 \n\t"
4021        "mul r8, r21 \n\t"
4022        "add r22, r0 \n\t"
4023        "adc r23, r1 \n\t"
4024        "adc r24, r25 \n\t"
4025        "mul r9, r20 \n\t"
4026        "add r22, r0 \n\t"
4027        "adc r23, r1 \n\t"
4028        "adc r24, r25 \n\t"
4029        "mul r10, r19 \n\t"
4030        "add r22, r0 \n\t"
4031        "adc r23, r1 \n\t"
4032        "adc r24, r25 \n\t"
4033        "mul r11, r18 \n\t"
4034        "add r22, r0 \n\t"
4035        "adc r23, r1 \n\t"
4036        "adc r24, r25 \n\t"
4037        "mul r2, r17 \n\t"
4038        "add r22, r0 \n\t"
4039        "adc r23, r1 \n\t"
4040        "adc r24, r25 \n\t"
4041        "mul r3, r16 \n\t"
4042        "add r22, r0 \n\t"
4043        "adc r23, r1 \n\t"
4044        "adc r24, r25 \n\t"
4045        "mul r4, r15 \n\t"
4046        "add r22, r0 \n\t"
4047        "adc r23, r1 \n\t"
4048        "adc r24, r25 \n\t"
4049        "mul r5, r14 \n\t"
4050        "add r22, r0 \n\t"
4051        "adc r23, r1 \n\t"
4052        "adc r24, r25 \n\t"
4053        "ld r0, z \n\t"
4054        "add r22, r0 \n\t"
4055        "adc r23, r25 \n\t"
4056        "adc r24, r25 \n\t"
4057        "st z+, r22 \n\t"
4058
4059        "ld r14, y+ \n\t"
4060        "ldi r22, 0 \n\t"
4061        "mul r6, r14 \n\t"
4062        "add r23, r0 \n\t"
4063        "adc r24, r1 \n\t"
4064        "adc r22, r25 \n\t"
4065        "mul r7, r13 \n\t"
4066        "add r23, r0 \n\t"
4067        "adc r24, r1 \n\t"
4068        "adc r22, r25 \n\t"
4069        "mul r8, r12 \n\t"
4070        "add r23, r0 \n\t"
4071        "adc r24, r1 \n\t"
4072        "adc r22, r25 \n\t"
4073        "mul r9, r21 \n\t"
4074        "add r23, r0 \n\t"
4075        "adc r24, r1 \n\t"
4076        "adc r22, r25 \n\t"
4077        "mul r10, r20 \n\t"
4078        "add r23, r0 \n\t"
4079        "adc r24, r1 \n\t"
4080        "adc r22, r25 \n\t"
4081        "mul r11, r19 \n\t"
4082        "add r23, r0 \n\t"
4083        "adc r24, r1 \n\t"
4084        "adc r22, r25 \n\t"
4085        "mul r2, r18 \n\t"
4086        "add r23, r0 \n\t"
4087        "adc r24, r1 \n\t"
4088        "adc r22, r25 \n\t"
4089        "mul r3, r17 \n\t"
4090        "add r23, r0 \n\t"
4091        "adc r24, r1 \n\t"
4092        "adc r22, r25 \n\t"
4093        "mul r4, r16 \n\t"
4094        "add r23, r0 \n\t"
4095        "adc r24, r1 \n\t"
4096        "adc r22, r25 \n\t"
4097        "mul r5, r15 \n\t"
4098        "add r23, r0 \n\t"
4099        "adc r24, r1 \n\t"
4100        "adc r22, r25 \n\t"
4101        "ld r0, z \n\t"
4102        "add r23, r0 \n\t"
4103        "adc r24, r25 \n\t"
4104        "adc r22, r25 \n\t"
4105        "st z+, r23 \n\t"
4106
4107        "ld r15, y+ \n\t"
4108        "ldi r23, 0 \n\t"
4109        "mul r6, r15 \n\t"
4110        "add r24, r0 \n\t"
4111        "adc r22, r1 \n\t"
4112        "adc r23, r25 \n\t"
4113        "mul r7, r14 \n\t"
4114        "add r24, r0 \n\t"
4115        "adc r22, r1 \n\t"
4116        "adc r23, r25 \n\t"
4117        "mul r8, r13 \n\t"
4118        "add r24, r0 \n\t"
4119        "adc r22, r1 \n\t"
4120        "adc r23, r25 \n\t"
4121        "mul r9, r12 \n\t"
4122        "add r24, r0 \n\t"
4123        "adc r22, r1 \n\t"
4124        "adc r23, r25 \n\t"
4125        "mul r10, r21 \n\t"
4126        "add r24, r0 \n\t"
4127        "adc r22, r1 \n\t"
4128        "adc r23, r25 \n\t"
4129        "mul r11, r20 \n\t"
4130        "add r24, r0 \n\t"
4131        "adc r22, r1 \n\t"
4132        "adc r23, r25 \n\t"
4133        "mul r2, r19 \n\t"
4134        "add r24, r0 \n\t"
4135        "adc r22, r1 \n\t"
4136        "adc r23, r25 \n\t"
4137        "mul r3, r18 \n\t"
4138        "add r24, r0 \n\t"
4139        "adc r22, r1 \n\t"
4140        "adc r23, r25 \n\t"
4141        "mul r4, r17 \n\t"
4142        "add r24, r0 \n\t"
4143        "adc r22, r1 \n\t"
4144        "adc r23, r25 \n\t"
4145        "mul r5, r16 \n\t"
4146        "add r24, r0 \n\t"
4147        "adc r22, r1 \n\t"
4148        "adc r23, r25 \n\t"
4149        "ld r0, z \n\t"
4150        "add r24, r0 \n\t"
4151        "adc r22, r25 \n\t"
4152        "adc r23, r25 \n\t"
4153        "st z+, r24 \n\t"
4154
4155        "ld r16, y+ \n\t"
4156        "ldi r24, 0 \n\t"
4157        "mul r6, r16 \n\t"
4158        "add r22, r0 \n\t"
4159        "adc r23, r1 \n\t"
4160        "adc r24, r25 \n\t"
4161        "mul r7, r15 \n\t"
4162        "add r22, r0 \n\t"
4163        "adc r23, r1 \n\t"
4164        "adc r24, r25 \n\t"
4165        "mul r8, r14 \n\t"
4166        "add r22, r0 \n\t"
4167        "adc r23, r1 \n\t"
4168        "adc r24, r25 \n\t"
4169        "mul r9, r13 \n\t"
4170        "add r22, r0 \n\t"
4171        "adc r23, r1 \n\t"
4172        "adc r24, r25 \n\t"
4173        "mul r10, r12 \n\t"
4174        "add r22, r0 \n\t"
4175        "adc r23, r1 \n\t"
4176        "adc r24, r25 \n\t"
4177        "mul r11, r21 \n\t"
4178        "add r22, r0 \n\t"
4179        "adc r23, r1 \n\t"
4180        "adc r24, r25 \n\t"
4181        "mul r2, r20 \n\t"
4182        "add r22, r0 \n\t"
4183        "adc r23, r1 \n\t"
4184        "adc r24, r25 \n\t"
4185        "mul r3, r19 \n\t"
4186        "add r22, r0 \n\t"
4187        "adc r23, r1 \n\t"
4188        "adc r24, r25 \n\t"
4189        "mul r4, r18 \n\t"
4190        "add r22, r0 \n\t"
4191        "adc r23, r1 \n\t"
4192        "adc r24, r25 \n\t"
4193        "mul r5, r17 \n\t"
4194        "add r22, r0 \n\t"
4195        "adc r23, r1 \n\t"
4196        "adc r24, r25 \n\t"
4197        "ld r0, z \n\t"
4198        "add r22, r0 \n\t"
4199        "adc r23, r25 \n\t"
4200        "adc r24, r25 \n\t"
4201        "st z+, r22 \n\t"
4202
4203        "ld r17, y+ \n\t"
4204        "ldi r22, 0 \n\t"
4205        "mul r6, r17 \n\t"
4206        "add r23, r0 \n\t"
4207        "adc r24, r1 \n\t"
4208        "adc r22, r25 \n\t"
4209        "mul r7, r16 \n\t"
4210        "add r23, r0 \n\t"
4211        "adc r24, r1 \n\t"
4212        "adc r22, r25 \n\t"
4213        "mul r8, r15 \n\t"
4214        "add r23, r0 \n\t"
4215        "adc r24, r1 \n\t"
4216        "adc r22, r25 \n\t"
4217        "mul r9, r14 \n\t"
4218        "add r23, r0 \n\t"
4219        "adc r24, r1 \n\t"
4220        "adc r22, r25 \n\t"
4221        "mul r10, r13 \n\t"
4222        "add r23, r0 \n\t"
4223        "adc r24, r1 \n\t"
4224        "adc r22, r25 \n\t"
4225        "mul r11, r12 \n\t"
4226        "add r23, r0 \n\t"
4227        "adc r24, r1 \n\t"
4228        "adc r22, r25 \n\t"
4229        "mul r2, r21 \n\t"
4230        "add r23, r0 \n\t"
4231        "adc r24, r1 \n\t"
4232        "adc r22, r25 \n\t"
4233        "mul r3, r20 \n\t"
4234        "add r23, r0 \n\t"
4235        "adc r24, r1 \n\t"
4236        "adc r22, r25 \n\t"
4237        "mul r4, r19 \n\t"
4238        "add r23, r0 \n\t"
4239        "adc r24, r1 \n\t"
4240        "adc r22, r25 \n\t"
4241        "mul r5, r18 \n\t"
4242        "add r23, r0 \n\t"
4243        "adc r24, r1 \n\t"
4244        "adc r22, r25 \n\t"
4245        "ld r0, z \n\t"
4246        "add r23, r0 \n\t"
4247        "adc r24, r25 \n\t"
4248        "adc r22, r25 \n\t"
4249        "st z+, r23 \n\t"
4250
4251        "ld r18, y+ \n\t"
4252        "ldi r23, 0 \n\t"
4253        "mul r6, r18 \n\t"
4254        "add r24, r0 \n\t"
4255        "adc r22, r1 \n\t"
4256        "adc r23, r25 \n\t"
4257        "mul r7, r17 \n\t"
4258        "add r24, r0 \n\t"
4259        "adc r22, r1 \n\t"
4260        "adc r23, r25 \n\t"
4261        "mul r8, r16 \n\t"
4262        "add r24, r0 \n\t"
4263        "adc r22, r1 \n\t"
4264        "adc r23, r25 \n\t"
4265        "mul r9, r15 \n\t"
4266        "add r24, r0 \n\t"
4267        "adc r22, r1 \n\t"
4268        "adc r23, r25 \n\t"
4269        "mul r10, r14 \n\t"
4270        "add r24, r0 \n\t"
4271        "adc r22, r1 \n\t"
4272        "adc r23, r25 \n\t"
4273        "mul r11, r13 \n\t"
4274        "add r24, r0 \n\t"
4275        "adc r22, r1 \n\t"
4276        "adc r23, r25 \n\t"
4277        "mul r2, r12 \n\t"
4278        "add r24, r0 \n\t"
4279        "adc r22, r1 \n\t"
4280        "adc r23, r25 \n\t"
4281        "mul r3, r21 \n\t"
4282        "add r24, r0 \n\t"
4283        "adc r22, r1 \n\t"
4284        "adc r23, r25 \n\t"
4285        "mul r4, r20 \n\t"
4286        "add r24, r0 \n\t"
4287        "adc r22, r1 \n\t"
4288        "adc r23, r25 \n\t"
4289        "mul r5, r19 \n\t"
4290        "add r24, r0 \n\t"
4291        "adc r22, r1 \n\t"
4292        "adc r23, r25 \n\t"
4293        "ld r0, z \n\t"
4294        "add r24, r0 \n\t"
4295        "adc r22, r25 \n\t"
4296        "adc r23, r25 \n\t"
4297        "st z+, r24 \n\t"
4298
4299        "ld r19, y+ \n\t"
4300        "ldi r24, 0 \n\t"
4301        "mul r6, r19 \n\t"
4302        "add r22, r0 \n\t"
4303        "adc r23, r1 \n\t"
4304        "adc r24, r25 \n\t"
4305        "mul r7, r18 \n\t"
4306        "add r22, r0 \n\t"
4307        "adc r23, r1 \n\t"
4308        "adc r24, r25 \n\t"
4309        "mul r8, r17 \n\t"
4310        "add r22, r0 \n\t"
4311        "adc r23, r1 \n\t"
4312        "adc r24, r25 \n\t"
4313        "mul r9, r16 \n\t"
4314        "add r22, r0 \n\t"
4315        "adc r23, r1 \n\t"
4316        "adc r24, r25 \n\t"
4317        "mul r10, r15 \n\t"
4318        "add r22, r0 \n\t"
4319        "adc r23, r1 \n\t"
4320        "adc r24, r25 \n\t"
4321        "mul r11, r14 \n\t"
4322        "add r22, r0 \n\t"
4323        "adc r23, r1 \n\t"
4324        "adc r24, r25 \n\t"
4325        "mul r2, r13 \n\t"
4326        "add r22, r0 \n\t"
4327        "adc r23, r1 \n\t"
4328        "adc r24, r25 \n\t"
4329        "mul r3, r12 \n\t"
4330        "add r22, r0 \n\t"
4331        "adc r23, r1 \n\t"
4332        "adc r24, r25 \n\t"
4333        "mul r4, r21 \n\t"
4334        "add r22, r0 \n\t"
4335        "adc r23, r1 \n\t"
4336        "adc r24, r25 \n\t"
4337        "mul r5, r20 \n\t"
4338        "add r22, r0 \n\t"
4339        "adc r23, r1 \n\t"
4340        "adc r24, r25 \n\t"
4341        "ld r0, z \n\t"
4342        "add r22, r0 \n\t"
4343        "adc r23, r25 \n\t"
4344        "adc r24, r25 \n\t"
4345        "st z+, r22 \n\t"
4346
4347        "ld r20, y+ \n\t"
4348        "ldi r22, 0 \n\t"
4349        "mul r6, r20 \n\t"
4350        "add r23, r0 \n\t"
4351        "adc r24, r1 \n\t"
4352        "adc r22, r25 \n\t"
4353        "mul r7, r19 \n\t"
4354        "add r23, r0 \n\t"
4355        "adc r24, r1 \n\t"
4356        "adc r22, r25 \n\t"
4357        "mul r8, r18 \n\t"
4358        "add r23, r0 \n\t"
4359        "adc r24, r1 \n\t"
4360        "adc r22, r25 \n\t"
4361        "mul r9, r17 \n\t"
4362        "add r23, r0 \n\t"
4363        "adc r24, r1 \n\t"
4364        "adc r22, r25 \n\t"
4365        "mul r10, r16 \n\t"
4366        "add r23, r0 \n\t"
4367        "adc r24, r1 \n\t"
4368        "adc r22, r25 \n\t"
4369        "mul r11, r15 \n\t"
4370        "add r23, r0 \n\t"
4371        "adc r24, r1 \n\t"
4372        "adc r22, r25 \n\t"
4373        "mul r2, r14 \n\t"
4374        "add r23, r0 \n\t"
4375        "adc r24, r1 \n\t"
4376        "adc r22, r25 \n\t"
4377        "mul r3, r13 \n\t"
4378        "add r23, r0 \n\t"
4379        "adc r24, r1 \n\t"
4380        "adc r22, r25 \n\t"
4381        "mul r4, r12 \n\t"
4382        "add r23, r0 \n\t"
4383        "adc r24, r1 \n\t"
4384        "adc r22, r25 \n\t"
4385        "mul r5, r21 \n\t"
4386        "add r23, r0 \n\t"
4387        "adc r24, r1 \n\t"
4388        "adc r22, r25 \n\t"
4389        "ld r0, z \n\t"
4390        "add r23, r0 \n\t"
4391        "adc r24, r25 \n\t"
4392        "adc r22, r25 \n\t"
4393        "st z+, r23 \n\t"
4394
4395        "ld r21, y+ \n\t"
4396        "ldi r23, 0 \n\t"
4397        "mul r6, r21 \n\t"
4398        "add r24, r0 \n\t"
4399        "adc r22, r1 \n\t"
4400        "adc r23, r25 \n\t"
4401        "mul r7, r20 \n\t"
4402        "add r24, r0 \n\t"
4403        "adc r22, r1 \n\t"
4404        "adc r23, r25 \n\t"
4405        "mul r8, r19 \n\t"
4406        "add r24, r0 \n\t"
4407        "adc r22, r1 \n\t"
4408        "adc r23, r25 \n\t"
4409        "mul r9, r18 \n\t"
4410        "add r24, r0 \n\t"
4411        "adc r22, r1 \n\t"
4412        "adc r23, r25 \n\t"
4413        "mul r10, r17 \n\t"
4414        "add r24, r0 \n\t"
4415        "adc r22, r1 \n\t"
4416        "adc r23, r25 \n\t"
4417        "mul r11, r16 \n\t"
4418        "add r24, r0 \n\t"
4419        "adc r22, r1 \n\t"
4420        "adc r23, r25 \n\t"
4421        "mul r2, r15 \n\t"
4422        "add r24, r0 \n\t"
4423        "adc r22, r1 \n\t"
4424        "adc r23, r25 \n\t"
4425        "mul r3, r14 \n\t"
4426        "add r24, r0 \n\t"
4427        "adc r22, r1 \n\t"
4428        "adc r23, r25 \n\t"
4429        "mul r4, r13 \n\t"
4430        "add r24, r0 \n\t"
4431        "adc r22, r1 \n\t"
4432        "adc r23, r25 \n\t"
4433        "mul r5, r12 \n\t"
4434        "add r24, r0 \n\t"
4435        "adc r22, r1 \n\t"
4436        "adc r23, r25 \n\t"
4437        "ld r0, z \n\t"
4438        "add r24, r0 \n\t"
4439        "adc r22, r25 \n\t"
4440        "adc r23, r25 \n\t"
4441        "st z+, r24 \n\t"
4442
4443        "ld r12, y+ \n\t"
4444        "ldi r24, 0 \n\t"
4445        "mul r6, r12 \n\t"
4446        "add r22, r0 \n\t"
4447        "adc r23, r1 \n\t"
4448        "adc r24, r25 \n\t"
4449        "mul r7, r21 \n\t"
4450        "add r22, r0 \n\t"
4451        "adc r23, r1 \n\t"
4452        "adc r24, r25 \n\t"
4453        "mul r8, r20 \n\t"
4454        "add r22, r0 \n\t"
4455        "adc r23, r1 \n\t"
4456        "adc r24, r25 \n\t"
4457        "mul r9, r19 \n\t"
4458        "add r22, r0 \n\t"
4459        "adc r23, r1 \n\t"
4460        "adc r24, r25 \n\t"
4461        "mul r10, r18 \n\t"
4462        "add r22, r0 \n\t"
4463        "adc r23, r1 \n\t"
4464        "adc r24, r25 \n\t"
4465        "mul r11, r17 \n\t"
4466        "add r22, r0 \n\t"
4467        "adc r23, r1 \n\t"
4468        "adc r24, r25 \n\t"
4469        "mul r2, r16 \n\t"
4470        "add r22, r0 \n\t"
4471        "adc r23, r1 \n\t"
4472        "adc r24, r25 \n\t"
4473        "mul r3, r15 \n\t"
4474        "add r22, r0 \n\t"
4475        "adc r23, r1 \n\t"
4476        "adc r24, r25 \n\t"
4477        "mul r4, r14 \n\t"
4478        "add r22, r0 \n\t"
4479        "adc r23, r1 \n\t"
4480        "adc r24, r25 \n\t"
4481        "mul r5, r13 \n\t"
4482        "add r22, r0 \n\t"
4483        "adc r23, r1 \n\t"
4484        "adc r24, r25 \n\t"
4485        "ld r0, z \n\t"
4486        "add r22, r0 \n\t"
4487        "adc r23, r25 \n\t"
4488        "adc r24, r25 \n\t"
4489        "st z+, r22 \n\t"
4490
4491        "ld r13, y+ \n\t"
4492        "ldi r22, 0 \n\t"
4493        "mul r6, r13 \n\t"
4494        "add r23, r0 \n\t"
4495        "adc r24, r1 \n\t"
4496        "adc r22, r25 \n\t"
4497        "mul r7, r12 \n\t"
4498        "add r23, r0 \n\t"
4499        "adc r24, r1 \n\t"
4500        "adc r22, r25 \n\t"
4501        "mul r8, r21 \n\t"
4502        "add r23, r0 \n\t"
4503        "adc r24, r1 \n\t"
4504        "adc r22, r25 \n\t"
4505        "mul r9, r20 \n\t"
4506        "add r23, r0 \n\t"
4507        "adc r24, r1 \n\t"
4508        "adc r22, r25 \n\t"
4509        "mul r10, r19 \n\t"
4510        "add r23, r0 \n\t"
4511        "adc r24, r1 \n\t"
4512        "adc r22, r25 \n\t"
4513        "mul r11, r18 \n\t"
4514        "add r23, r0 \n\t"
4515        "adc r24, r1 \n\t"
4516        "adc r22, r25 \n\t"
4517        "mul r2, r17 \n\t"
4518        "add r23, r0 \n\t"
4519        "adc r24, r1 \n\t"
4520        "adc r22, r25 \n\t"
4521        "mul r3, r16 \n\t"
4522        "add r23, r0 \n\t"
4523        "adc r24, r1 \n\t"
4524        "adc r22, r25 \n\t"
4525        "mul r4, r15 \n\t"
4526        "add r23, r0 \n\t"
4527        "adc r24, r1 \n\t"
4528        "adc r22, r25 \n\t"
4529        "mul r5, r14 \n\t"
4530        "add r23, r0 \n\t"
4531        "adc r24, r1 \n\t"
4532        "adc r22, r25 \n\t"
4533        "ld r0, z \n\t"
4534        "add r23, r0 \n\t"
4535        "adc r24, r25 \n\t"
4536        "adc r22, r25 \n\t"
4537        "st z+, r23 \n\t"
4538
4539        "ld r14, y+ \n\t"
4540        "ldi r23, 0 \n\t"
4541        "mul r6, r14 \n\t"
4542        "add r24, r0 \n\t"
4543        "adc r22, r1 \n\t"
4544        "adc r23, r25 \n\t"
4545        "mul r7, r13 \n\t"
4546        "add r24, r0 \n\t"
4547        "adc r22, r1 \n\t"
4548        "adc r23, r25 \n\t"
4549        "mul r8, r12 \n\t"
4550        "add r24, r0 \n\t"
4551        "adc r22, r1 \n\t"
4552        "adc r23, r25 \n\t"
4553        "mul r9, r21 \n\t"
4554        "add r24, r0 \n\t"
4555        "adc r22, r1 \n\t"
4556        "adc r23, r25 \n\t"
4557        "mul r10, r20 \n\t"
4558        "add r24, r0 \n\t"
4559        "adc r22, r1 \n\t"
4560        "adc r23, r25 \n\t"
4561        "mul r11, r19 \n\t"
4562        "add r24, r0 \n\t"
4563        "adc r22, r1 \n\t"
4564        "adc r23, r25 \n\t"
4565        "mul r2, r18 \n\t"
4566        "add r24, r0 \n\t"
4567        "adc r22, r1 \n\t"
4568        "adc r23, r25 \n\t"
4569        "mul r3, r17 \n\t"
4570        "add r24, r0 \n\t"
4571        "adc r22, r1 \n\t"
4572        "adc r23, r25 \n\t"
4573        "mul r4, r16 \n\t"
4574        "add r24, r0 \n\t"
4575        "adc r22, r1 \n\t"
4576        "adc r23, r25 \n\t"
4577        "mul r5, r15 \n\t"
4578        "add r24, r0 \n\t"
4579        "adc r22, r1 \n\t"
4580        "adc r23, r25 \n\t"
4581        "ld r0, z \n\t"
4582        "add r24, r0 \n\t"
4583        "adc r22, r25 \n\t"
4584        "adc r23, r25 \n\t"
4585        "st z+, r24 \n\t"
4586
4587        "ld r15, y+ \n\t"
4588        "ldi r24, 0 \n\t"
4589        "mul r6, r15 \n\t"
4590        "add r22, r0 \n\t"
4591        "adc r23, r1 \n\t"
4592        "adc r24, r25 \n\t"
4593        "mul r7, r14 \n\t"
4594        "add r22, r0 \n\t"
4595        "adc r23, r1 \n\t"
4596        "adc r24, r25 \n\t"
4597        "mul r8, r13 \n\t"
4598        "add r22, r0 \n\t"
4599        "adc r23, r1 \n\t"
4600        "adc r24, r25 \n\t"
4601        "mul r9, r12 \n\t"
4602        "add r22, r0 \n\t"
4603        "adc r23, r1 \n\t"
4604        "adc r24, r25 \n\t"
4605        "mul r10, r21 \n\t"
4606        "add r22, r0 \n\t"
4607        "adc r23, r1 \n\t"
4608        "adc r24, r25 \n\t"
4609        "mul r11, r20 \n\t"
4610        "add r22, r0 \n\t"
4611        "adc r23, r1 \n\t"
4612        "adc r24, r25 \n\t"
4613        "mul r2, r19 \n\t"
4614        "add r22, r0 \n\t"
4615        "adc r23, r1 \n\t"
4616        "adc r24, r25 \n\t"
4617        "mul r3, r18 \n\t"
4618        "add r22, r0 \n\t"
4619        "adc r23, r1 \n\t"
4620        "adc r24, r25 \n\t"
4621        "mul r4, r17 \n\t"
4622        "add r22, r0 \n\t"
4623        "adc r23, r1 \n\t"
4624        "adc r24, r25 \n\t"
4625        "mul r5, r16 \n\t"
4626        "add r22, r0 \n\t"
4627        "adc r23, r1 \n\t"
4628        "adc r24, r25 \n\t"
4629        "ld r0, z \n\t"
4630        "add r22, r0 \n\t"
4631        "adc r23, r25 \n\t"
4632        "adc r24, r25 \n\t"
4633        "st z+, r22 \n\t"
4634
4635        "ldi r22, 0 \n\t"
4636        "mul r7, r15 \n\t"
4637        "add r23, r0 \n\t"
4638        "adc r24, r1 \n\t"
4639        "adc r22, r25 \n\t"
4640        "mul r8, r14 \n\t"
4641        "add r23, r0 \n\t"
4642        "adc r24, r1 \n\t"
4643        "adc r22, r25 \n\t"
4644        "mul r9, r13 \n\t"
4645        "add r23, r0 \n\t"
4646        "adc r24, r1 \n\t"
4647        "adc r22, r25 \n\t"
4648        "mul r10, r12 \n\t"
4649        "add r23, r0 \n\t"
4650        "adc r24, r1 \n\t"
4651        "adc r22, r25 \n\t"
4652        "mul r11, r21 \n\t"
4653        "add r23, r0 \n\t"
4654        "adc r24, r1 \n\t"
4655        "adc r22, r25 \n\t"
4656        "mul r2, r20 \n\t"
4657        "add r23, r0 \n\t"
4658        "adc r24, r1 \n\t"
4659        "adc r22, r25 \n\t"
4660        "mul r3, r19 \n\t"
4661        "add r23, r0 \n\t"
4662        "adc r24, r1 \n\t"
4663        "adc r22, r25 \n\t"
4664        "mul r4, r18 \n\t"
4665        "add r23, r0 \n\t"
4666        "adc r24, r1 \n\t"
4667        "adc r22, r25 \n\t"
4668        "mul r5, r17 \n\t"
4669        "add r23, r0 \n\t"
4670        "adc r24, r1 \n\t"
4671        "adc r22, r25 \n\t"
4672        "st z+, r23 \n\t"
4673
4674        "ldi r23, 0 \n\t"
4675        "mul r8, r15 \n\t"
4676        "add r24, r0 \n\t"
4677        "adc r22, r1 \n\t"
4678        "adc r23, r25 \n\t"
4679        "mul r9, r14 \n\t"
4680        "add r24, r0 \n\t"
4681        "adc r22, r1 \n\t"
4682        "adc r23, r25 \n\t"
4683        "mul r10, r13 \n\t"
4684        "add r24, r0 \n\t"
4685        "adc r22, r1 \n\t"
4686        "adc r23, r25 \n\t"
4687        "mul r11, r12 \n\t"
4688        "add r24, r0 \n\t"
4689        "adc r22, r1 \n\t"
4690        "adc r23, r25 \n\t"
4691        "mul r2, r21 \n\t"
4692        "add r24, r0 \n\t"
4693        "adc r22, r1 \n\t"
4694        "adc r23, r25 \n\t"
4695        "mul r3, r20 \n\t"
4696        "add r24, r0 \n\t"
4697        "adc r22, r1 \n\t"
4698        "adc r23, r25 \n\t"
4699        "mul r4, r19 \n\t"
4700        "add r24, r0 \n\t"
4701        "adc r22, r1 \n\t"
4702        "adc r23, r25 \n\t"
4703        "mul r5, r18 \n\t"
4704        "add r24, r0 \n\t"
4705        "adc r22, r1 \n\t"
4706        "adc r23, r25 \n\t"
4707        "st z+, r24 \n\t"
4708
4709        "ldi r24, 0 \n\t"
4710        "mul r9, r15 \n\t"
4711        "add r22, r0 \n\t"
4712        "adc r23, r1 \n\t"
4713        "adc r24, r25 \n\t"
4714        "mul r10, r14 \n\t"
4715        "add r22, r0 \n\t"
4716        "adc r23, r1 \n\t"
4717        "adc r24, r25 \n\t"
4718        "mul r11, r13 \n\t"
4719        "add r22, r0 \n\t"
4720        "adc r23, r1 \n\t"
4721        "adc r24, r25 \n\t"
4722        "mul r2, r12 \n\t"
4723        "add r22, r0 \n\t"
4724        "adc r23, r1 \n\t"
4725        "adc r24, r25 \n\t"
4726        "mul r3, r21 \n\t"
4727        "add r22, r0 \n\t"
4728        "adc r23, r1 \n\t"
4729        "adc r24, r25 \n\t"
4730        "mul r4, r20 \n\t"
4731        "add r22, r0 \n\t"
4732        "adc r23, r1 \n\t"
4733        "adc r24, r25 \n\t"
4734        "mul r5, r19 \n\t"
4735        "add r22, r0 \n\t"
4736        "adc r23, r1 \n\t"
4737        "adc r24, r25 \n\t"
4738        "st z+, r22 \n\t"
4739
4740        "ldi r22, 0 \n\t"
4741        "mul r10, r15 \n\t"
4742        "add r23, r0 \n\t"
4743        "adc r24, r1 \n\t"
4744        "adc r22, r25 \n\t"
4745        "mul r11, r14 \n\t"
4746        "add r23, r0 \n\t"
4747        "adc r24, r1 \n\t"
4748        "adc r22, r25 \n\t"
4749        "mul r2, r13 \n\t"
4750        "add r23, r0 \n\t"
4751        "adc r24, r1 \n\t"
4752        "adc r22, r25 \n\t"
4753        "mul r3, r12 \n\t"
4754        "add r23, r0 \n\t"
4755        "adc r24, r1 \n\t"
4756        "adc r22, r25 \n\t"
4757        "mul r4, r21 \n\t"
4758        "add r23, r0 \n\t"
4759        "adc r24, r1 \n\t"
4760        "adc r22, r25 \n\t"
4761        "mul r5, r20 \n\t"
4762        "add r23, r0 \n\t"
4763        "adc r24, r1 \n\t"
4764        "adc r22, r25 \n\t"
4765        "st z+, r23 \n\t"
4766
4767        "ldi r23, 0 \n\t"
4768        "mul r11, r15 \n\t"
4769        "add r24, r0 \n\t"
4770        "adc r22, r1 \n\t"
4771        "adc r23, r25 \n\t"
4772        "mul r2, r14 \n\t"
4773        "add r24, r0 \n\t"
4774        "adc r22, r1 \n\t"
4775        "adc r23, r25 \n\t"
4776        "mul r3, r13 \n\t"
4777        "add r24, r0 \n\t"
4778        "adc r22, r1 \n\t"
4779        "adc r23, r25 \n\t"
4780        "mul r4, r12 \n\t"
4781        "add r24, r0 \n\t"
4782        "adc r22, r1 \n\t"
4783        "adc r23, r25 \n\t"
4784        "mul r5, r21 \n\t"
4785        "add r24, r0 \n\t"
4786        "adc r22, r1 \n\t"
4787        "adc r23, r25 \n\t"
4788        "st z+, r24 \n\t"
4789
4790        "ldi r24, 0 \n\t"
4791        "mul r2, r15 \n\t"
4792        "add r22, r0 \n\t"
4793        "adc r23, r1 \n\t"
4794        "adc r24, r25 \n\t"
4795        "mul r3, r14 \n\t"
4796        "add r22, r0 \n\t"
4797        "adc r23, r1 \n\t"
4798        "adc r24, r25 \n\t"
4799        "mul r4, r13 \n\t"
4800        "add r22, r0 \n\t"
4801        "adc r23, r1 \n\t"
4802        "adc r24, r25 \n\t"
4803        "mul r5, r12 \n\t"
4804        "add r22, r0 \n\t"
4805        "adc r23, r1 \n\t"
4806        "adc r24, r25 \n\t"
4807        "st z+, r22 \n\t"
4808
4809        "ldi r22, 0 \n\t"
4810        "mul r3, r15 \n\t"
4811        "add r23, r0 \n\t"
4812        "adc r24, r1 \n\t"
4813        "adc r22, r25 \n\t"
4814        "mul r4, r14 \n\t"
4815        "add r23, r0 \n\t"
4816        "adc r24, r1 \n\t"
4817        "adc r22, r25 \n\t"
4818        "mul r5, r13 \n\t"
4819        "add r23, r0 \n\t"
4820        "adc r24, r1 \n\t"
4821        "adc r22, r25 \n\t"
4822        "st z+, r23 \n\t"
4823
4824        "ldi r23, 0 \n\t"
4825        "mul r4, r15 \n\t"
4826        "add r24, r0 \n\t"
4827        "adc r22, r1 \n\t"
4828        "adc r23, r25 \n\t"
4829        "mul r5, r14 \n\t"
4830        "add r24, r0 \n\t"
4831        "adc r22, r1 \n\t"
4832        "adc r23, r25 \n\t"
4833        "st z+, r24 \n\t"
4834
4835        "mul r5, r15 \n\t"
4836        "add r22, r0 \n\t"
4837        "adc r23, r1 \n\t"
4838        "st z+, r22 \n\t"
4839        "st z+, r23 \n\t"
4840
4841        "eor r1, r1 \n\t"
4842        : "+x" (left), "+y" (right), "+z" (result)
4843        :
4844        : "r0", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10",
4845          "r11", "r12", "r13", "r14", "r15", "r16", "r17", "r18", "r19", "r20",
4846          "r21", "r22", "r23", "r24", "r25", "cc", "memory"
4847    );
4848}
4849#define asm_mult 1
4850#elif (uECC_BYTES == 28)
4851__attribute((noinline))
4852static void vli_mult(uint8_t *result, const uint8_t *left, const uint8_t *right) {
4853    __asm__ volatile (
4854        "adiw r30, 20 \n\t"
4855        "adiw r28, 20 \n\t"
4856        "ld r2, x+ \n\t"
4857        "ld r3, x+ \n\t"
4858        "ld r4, x+ \n\t"
4859        "ld r5, x+ \n\t"
4860        "ld r6, x+ \n\t"
4861        "ld r7, x+ \n\t"
4862        "ld r8, x+ \n\t"
4863        "ld r9, x+ \n\t"
4864        "ld r12, y+ \n\t"
4865        "ld r13, y+ \n\t"
4866        "ld r14, y+ \n\t"
4867        "ld r15, y+ \n\t"
4868        "ld r16, y+ \n\t"
4869        "ld r17, y+ \n\t"
4870        "ld r18, y+ \n\t"
4871        "ld r19, y+ \n\t"
4872        "ldi r25, 0 \n\t"
4873
4874        "ldi r23, 0 \n\t"
4875        "mul r2, r12 \n\t"
4876        "st z+, r0 \n\t"
4877        "mov r22, r1 \n\t"
4878
4879        "ldi r24, 0 \n\t"
4880        "mul r2, r13 \n\t"
4881        "add r22, r0 \n\t"
4882        "adc r23, r1 \n\t"
4883        "mul r3, r12 \n\t"
4884        "add r22, r0 \n\t"
4885        "adc r23, r1 \n\t"
4886        "adc r24, r25 \n\t"
4887        "st z+, r22 \n\t"
4888
4889        "ldi r22, 0 \n\t"
4890        "mul r2, r14 \n\t"
4891        "add r23, r0 \n\t"
4892        "adc r24, r1 \n\t"
4893        "adc r22, r25 \n\t"
4894        "mul r3, r13 \n\t"
4895        "add r23, r0 \n\t"
4896        "adc r24, r1 \n\t"
4897        "adc r22, r25 \n\t"
4898        "mul r4, r12 \n\t"
4899        "add r23, r0 \n\t"
4900        "adc r24, r1 \n\t"
4901        "adc r22, r25 \n\t"
4902        "st z+, r23 \n\t"
4903
4904        "ldi r23, 0 \n\t"
4905        "mul r2, r15 \n\t"
4906        "add r24, r0 \n\t"
4907        "adc r22, r1 \n\t"
4908        "adc r23, r25 \n\t"
4909        "mul r3, r14 \n\t"
4910        "add r24, r0 \n\t"
4911        "adc r22, r1 \n\t"
4912        "adc r23, r25 \n\t"
4913        "mul r4, r13 \n\t"
4914        "add r24, r0 \n\t"
4915        "adc r22, r1 \n\t"
4916        "adc r23, r25 \n\t"
4917        "mul r5, r12 \n\t"
4918        "add r24, r0 \n\t"
4919        "adc r22, r1 \n\t"
4920        "adc r23, r25 \n\t"
4921        "st z+, r24 \n\t"
4922
4923        "ldi r24, 0 \n\t"
4924        "mul r2, r16 \n\t"
4925        "add r22, r0 \n\t"
4926        "adc r23, r1 \n\t"
4927        "adc r24, r25 \n\t"
4928        "mul r3, r15 \n\t"
4929        "add r22, r0 \n\t"
4930        "adc r23, r1 \n\t"
4931        "adc r24, r25 \n\t"
4932        "mul r4, r14 \n\t"
4933        "add r22, r0 \n\t"
4934        "adc r23, r1 \n\t"
4935        "adc r24, r25 \n\t"
4936        "mul r5, r13 \n\t"
4937        "add r22, r0 \n\t"
4938        "adc r23, r1 \n\t"
4939        "adc r24, r25 \n\t"
4940        "mul r6, r12 \n\t"
4941        "add r22, r0 \n\t"
4942        "adc r23, r1 \n\t"
4943        "adc r24, r25 \n\t"
4944        "st z+, r22 \n\t"
4945
4946        "ldi r22, 0 \n\t"
4947        "mul r2, r17 \n\t"
4948        "add r23, r0 \n\t"
4949        "adc r24, r1 \n\t"
4950        "adc r22, r25 \n\t"
4951        "mul r3, r16 \n\t"
4952        "add r23, r0 \n\t"
4953        "adc r24, r1 \n\t"
4954        "adc r22, r25 \n\t"
4955        "mul r4, r15 \n\t"
4956        "add r23, r0 \n\t"
4957        "adc r24, r1 \n\t"
4958        "adc r22, r25 \n\t"
4959        "mul r5, r14 \n\t"
4960        "add r23, r0 \n\t"
4961        "adc r24, r1 \n\t"
4962        "adc r22, r25 \n\t"
4963        "mul r6, r13 \n\t"
4964        "add r23, r0 \n\t"
4965        "adc r24, r1 \n\t"
4966        "adc r22, r25 \n\t"
4967        "mul r7, r12 \n\t"
4968        "add r23, r0 \n\t"
4969        "adc r24, r1 \n\t"
4970        "adc r22, r25 \n\t"
4971        "st z+, r23 \n\t"
4972
4973        "ldi r23, 0 \n\t"
4974        "mul r2, r18 \n\t"
4975        "add r24, r0 \n\t"
4976        "adc r22, r1 \n\t"
4977        "adc r23, r25 \n\t"
4978        "mul r3, r17 \n\t"
4979        "add r24, r0 \n\t"
4980        "adc r22, r1 \n\t"
4981        "adc r23, r25 \n\t"
4982        "mul r4, r16 \n\t"
4983        "add r24, r0 \n\t"
4984        "adc r22, r1 \n\t"
4985        "adc r23, r25 \n\t"
4986        "mul r5, r15 \n\t"
4987        "add r24, r0 \n\t"
4988        "adc r22, r1 \n\t"
4989        "adc r23, r25 \n\t"
4990        "mul r6, r14 \n\t"
4991        "add r24, r0 \n\t"
4992        "adc r22, r1 \n\t"
4993        "adc r23, r25 \n\t"
4994        "mul r7, r13 \n\t"
4995        "add r24, r0 \n\t"
4996        "adc r22, r1 \n\t"
4997        "adc r23, r25 \n\t"
4998        "mul r8, r12 \n\t"
4999        "add r24, r0 \n\t"
5000        "adc r22, r1 \n\t"
5001        "adc r23, r25 \n\t"
5002        "st z+, r24 \n\t"
5003
5004        "ldi r24, 0 \n\t"
5005        "mul r2, r19 \n\t"
5006        "add r22, r0 \n\t"
5007        "adc r23, r1 \n\t"
5008        "adc r24, r25 \n\t"
5009        "mul r3, r18 \n\t"
5010        "add r22, r0 \n\t"
5011        "adc r23, r1 \n\t"
5012        "adc r24, r25 \n\t"
5013        "mul r4, r17 \n\t"
5014        "add r22, r0 \n\t"
5015        "adc r23, r1 \n\t"
5016        "adc r24, r25 \n\t"
5017        "mul r5, r16 \n\t"
5018        "add r22, r0 \n\t"
5019        "adc r23, r1 \n\t"
5020        "adc r24, r25 \n\t"
5021        "mul r6, r15 \n\t"
5022        "add r22, r0 \n\t"
5023        "adc r23, r1 \n\t"
5024        "adc r24, r25 \n\t"
5025        "mul r7, r14 \n\t"
5026        "add r22, r0 \n\t"
5027        "adc r23, r1 \n\t"
5028        "adc r24, r25 \n\t"
5029        "mul r8, r13 \n\t"
5030        "add r22, r0 \n\t"
5031        "adc r23, r1 \n\t"
5032        "adc r24, r25 \n\t"
5033        "mul r9, r12 \n\t"
5034        "add r22, r0 \n\t"
5035        "adc r23, r1 \n\t"
5036        "adc r24, r25 \n\t"
5037        "st z+, r22 \n\t"
5038
5039        "ldi r22, 0 \n\t"
5040        "mul r3, r19 \n\t"
5041        "add r23, r0 \n\t"
5042        "adc r24, r1 \n\t"
5043        "adc r22, r25 \n\t"
5044        "mul r4, r18 \n\t"
5045        "add r23, r0 \n\t"
5046        "adc r24, r1 \n\t"
5047        "adc r22, r25 \n\t"
5048        "mul r5, r17 \n\t"
5049        "add r23, r0 \n\t"
5050        "adc r24, r1 \n\t"
5051        "adc r22, r25 \n\t"
5052        "mul r6, r16 \n\t"
5053        "add r23, r0 \n\t"
5054        "adc r24, r1 \n\t"
5055        "adc r22, r25 \n\t"
5056        "mul r7, r15 \n\t"
5057        "add r23, r0 \n\t"
5058        "adc r24, r1 \n\t"
5059        "adc r22, r25 \n\t"
5060        "mul r8, r14 \n\t"
5061        "add r23, r0 \n\t"
5062        "adc r24, r1 \n\t"
5063        "adc r22, r25 \n\t"
5064        "mul r9, r13 \n\t"
5065        "add r23, r0 \n\t"
5066        "adc r24, r1 \n\t"
5067        "adc r22, r25 \n\t"
5068        "st z+, r23 \n\t"
5069
5070        "ldi r23, 0 \n\t"
5071        "mul r4, r19 \n\t"
5072        "add r24, r0 \n\t"
5073        "adc r22, r1 \n\t"
5074        "adc r23, r25 \n\t"
5075        "mul r5, r18 \n\t"
5076        "add r24, r0 \n\t"
5077        "adc r22, r1 \n\t"
5078        "adc r23, r25 \n\t"
5079        "mul r6, r17 \n\t"
5080        "add r24, r0 \n\t"
5081        "adc r22, r1 \n\t"
5082        "adc r23, r25 \n\t"
5083        "mul r7, r16 \n\t"
5084        "add r24, r0 \n\t"
5085        "adc r22, r1 \n\t"
5086        "adc r23, r25 \n\t"
5087        "mul r8, r15 \n\t"
5088        "add r24, r0 \n\t"
5089        "adc r22, r1 \n\t"
5090        "adc r23, r25 \n\t"
5091        "mul r9, r14 \n\t"
5092        "add r24, r0 \n\t"
5093        "adc r22, r1 \n\t"
5094        "adc r23, r25 \n\t"
5095        "st z+, r24 \n\t"
5096
5097        "ldi r24, 0 \n\t"
5098        "mul r5, r19 \n\t"
5099        "add r22, r0 \n\t"
5100        "adc r23, r1 \n\t"
5101        "adc r24, r25 \n\t"
5102        "mul r6, r18 \n\t"
5103        "add r22, r0 \n\t"
5104        "adc r23, r1 \n\t"
5105        "adc r24, r25 \n\t"
5106        "mul r7, r17 \n\t"
5107        "add r22, r0 \n\t"
5108        "adc r23, r1 \n\t"
5109        "adc r24, r25 \n\t"
5110        "mul r8, r16 \n\t"
5111        "add r22, r0 \n\t"
5112        "adc r23, r1 \n\t"
5113        "adc r24, r25 \n\t"
5114        "mul r9, r15 \n\t"
5115        "add r22, r0 \n\t"
5116        "adc r23, r1 \n\t"
5117        "adc r24, r25 \n\t"
5118        "st z+, r22 \n\t"
5119
5120        "ldi r22, 0 \n\t"
5121        "mul r6, r19 \n\t"
5122        "add r23, r0 \n\t"
5123        "adc r24, r1 \n\t"
5124        "adc r22, r25 \n\t"
5125        "mul r7, r18 \n\t"
5126        "add r23, r0 \n\t"
5127        "adc r24, r1 \n\t"
5128        "adc r22, r25 \n\t"
5129        "mul r8, r17 \n\t"
5130        "add r23, r0 \n\t"
5131        "adc r24, r1 \n\t"
5132        "adc r22, r25 \n\t"
5133        "mul r9, r16 \n\t"
5134        "add r23, r0 \n\t"
5135        "adc r24, r1 \n\t"
5136        "adc r22, r25 \n\t"
5137        "st z+, r23 \n\t"
5138
5139        "ldi r23, 0 \n\t"
5140        "mul r7, r19 \n\t"
5141        "add r24, r0 \n\t"
5142        "adc r22, r1 \n\t"
5143        "adc r23, r25 \n\t"
5144        "mul r8, r18 \n\t"
5145        "add r24, r0 \n\t"
5146        "adc r22, r1 \n\t"
5147        "adc r23, r25 \n\t"
5148        "mul r9, r17 \n\t"
5149        "add r24, r0 \n\t"
5150        "adc r22, r1 \n\t"
5151        "adc r23, r25 \n\t"
5152        "st z+, r24 \n\t"
5153
5154        "ldi r24, 0 \n\t"
5155        "mul r8, r19 \n\t"
5156        "add r22, r0 \n\t"
5157        "adc r23, r1 \n\t"
5158        "adc r24, r25 \n\t"
5159        "mul r9, r18 \n\t"
5160        "add r22, r0 \n\t"
5161        "adc r23, r1 \n\t"
5162        "adc r24, r25 \n\t"
5163        "st z+, r22 \n\t"
5164
5165        "mul r9, r19 \n\t"
5166        "add r23, r0 \n\t"
5167        "adc r24, r1 \n\t"
5168        "st z+, r23 \n\t"
5169        "st z+, r24 \n\t"
5170
5171        "sbiw r30, 26 \n\t"
5172        "sbiw r28, 18 \n\t"
5173        "ld r12, y+ \n\t"
5174        "ld r13, y+ \n\t"
5175        "ld r14, y+ \n\t"
5176        "ld r15, y+ \n\t"
5177        "ld r16, y+ \n\t"
5178        "ld r17, y+ \n\t"
5179        "ld r18, y+ \n\t"
5180        "ld r19, y+ \n\t"
5181        "ld r20, y+ \n\t"
5182        "ld r21, y+ \n\t"
5183        "ld r10, x+ \n\t"
5184        "ld r11, x+ \n\t"
5185
5186        "ldi r23, 0 \n\t"
5187        "mul r2, r12 \n\t"
5188        "st z+, r0 \n\t"
5189        "mov r22, r1 \n\t"
5190
5191        "ldi r24, 0 \n\t"
5192        "mul r2, r13 \n\t"
5193        "add r22, r0 \n\t"
5194        "adc r23, r1 \n\t"
5195        "mul r3, r12 \n\t"
5196        "add r22, r0 \n\t"
5197        "adc r23, r1 \n\t"
5198        "adc r24, r25 \n\t"
5199        "st z+, r22 \n\t"
5200
5201        "ldi r22, 0 \n\t"
5202        "mul r2, r14 \n\t"
5203        "add r23, r0 \n\t"
5204        "adc r24, r1 \n\t"
5205        "adc r22, r25 \n\t"
5206        "mul r3, r13 \n\t"
5207        "add r23, r0 \n\t"
5208        "adc r24, r1 \n\t"
5209        "adc r22, r25 \n\t"
5210        "mul r4, r12 \n\t"
5211        "add r23, r0 \n\t"
5212        "adc r24, r1 \n\t"
5213        "adc r22, r25 \n\t"
5214        "st z+, r23 \n\t"
5215
5216        "ldi r23, 0 \n\t"
5217        "mul r2, r15 \n\t"
5218        "add r24, r0 \n\t"
5219        "adc r22, r1 \n\t"
5220        "adc r23, r25 \n\t"
5221        "mul r3, r14 \n\t"
5222        "add r24, r0 \n\t"
5223        "adc r22, r1 \n\t"
5224        "adc r23, r25 \n\t"
5225        "mul r4, r13 \n\t"
5226        "add r24, r0 \n\t"
5227        "adc r22, r1 \n\t"
5228        "adc r23, r25 \n\t"
5229        "mul r5, r12 \n\t"
5230        "add r24, r0 \n\t"
5231        "adc r22, r1 \n\t"
5232        "adc r23, r25 \n\t"
5233        "st z+, r24 \n\t"
5234
5235        "ldi r24, 0 \n\t"
5236        "mul r2, r16 \n\t"
5237        "add r22, r0 \n\t"
5238        "adc r23, r1 \n\t"
5239        "adc r24, r25 \n\t"
5240        "mul r3, r15 \n\t"
5241        "add r22, r0 \n\t"
5242        "adc r23, r1 \n\t"
5243        "adc r24, r25 \n\t"
5244        "mul r4, r14 \n\t"
5245        "add r22, r0 \n\t"
5246        "adc r23, r1 \n\t"
5247        "adc r24, r25 \n\t"
5248        "mul r5, r13 \n\t"
5249        "add r22, r0 \n\t"
5250        "adc r23, r1 \n\t"
5251        "adc r24, r25 \n\t"
5252        "mul r6, r12 \n\t"
5253        "add r22, r0 \n\t"
5254        "adc r23, r1 \n\t"
5255        "adc r24, r25 \n\t"
5256        "st z+, r22 \n\t"
5257
5258        "ldi r22, 0 \n\t"
5259        "mul r2, r17 \n\t"
5260        "add r23, r0 \n\t"
5261        "adc r24, r1 \n\t"
5262        "adc r22, r25 \n\t"
5263        "mul r3, r16 \n\t"
5264        "add r23, r0 \n\t"
5265        "adc r24, r1 \n\t"
5266        "adc r22, r25 \n\t"
5267        "mul r4, r15 \n\t"
5268        "add r23, r0 \n\t"
5269        "adc r24, r1 \n\t"
5270        "adc r22, r25 \n\t"
5271        "mul r5, r14 \n\t"
5272        "add r23, r0 \n\t"
5273        "adc r24, r1 \n\t"
5274        "adc r22, r25 \n\t"
5275        "mul r6, r13 \n\t"
5276        "add r23, r0 \n\t"
5277        "adc r24, r1 \n\t"
5278        "adc r22, r25 \n\t"
5279        "mul r7, r12 \n\t"
5280        "add r23, r0 \n\t"
5281        "adc r24, r1 \n\t"
5282        "adc r22, r25 \n\t"
5283        "st z+, r23 \n\t"
5284
5285        "ldi r23, 0 \n\t"
5286        "mul r2, r18 \n\t"
5287        "add r24, r0 \n\t"
5288        "adc r22, r1 \n\t"
5289        "adc r23, r25 \n\t"
5290        "mul r3, r17 \n\t"
5291        "add r24, r0 \n\t"
5292        "adc r22, r1 \n\t"
5293        "adc r23, r25 \n\t"
5294        "mul r4, r16 \n\t"
5295        "add r24, r0 \n\t"
5296        "adc r22, r1 \n\t"
5297        "adc r23, r25 \n\t"
5298        "mul r5, r15 \n\t"
5299        "add r24, r0 \n\t"
5300        "adc r22, r1 \n\t"
5301        "adc r23, r25 \n\t"
5302        "mul r6, r14 \n\t"
5303        "add r24, r0 \n\t"
5304        "adc r22, r1 \n\t"
5305        "adc r23, r25 \n\t"
5306        "mul r7, r13 \n\t"
5307        "add r24, r0 \n\t"
5308        "adc r22, r1 \n\t"
5309        "adc r23, r25 \n\t"
5310        "mul r8, r12 \n\t"
5311        "add r24, r0 \n\t"
5312        "adc r22, r1 \n\t"
5313        "adc r23, r25 \n\t"
5314        "st z+, r24 \n\t"
5315
5316        "ldi r24, 0 \n\t"
5317        "mul r2, r19 \n\t"
5318        "add r22, r0 \n\t"
5319        "adc r23, r1 \n\t"
5320        "adc r24, r25 \n\t"
5321        "mul r3, r18 \n\t"
5322        "add r22, r0 \n\t"
5323        "adc r23, r1 \n\t"
5324        "adc r24, r25 \n\t"
5325        "mul r4, r17 \n\t"
5326        "add r22, r0 \n\t"
5327        "adc r23, r1 \n\t"
5328        "adc r24, r25 \n\t"
5329        "mul r5, r16 \n\t"
5330        "add r22, r0 \n\t"
5331        "adc r23, r1 \n\t"
5332        "adc r24, r25 \n\t"
5333        "mul r6, r15 \n\t"
5334        "add r22, r0 \n\t"
5335        "adc r23, r1 \n\t"
5336        "adc r24, r25 \n\t"
5337        "mul r7, r14 \n\t"
5338        "add r22, r0 \n\t"
5339        "adc r23, r1 \n\t"
5340        "adc r24, r25 \n\t"
5341        "mul r8, r13 \n\t"
5342        "add r22, r0 \n\t"
5343        "adc r23, r1 \n\t"
5344        "adc r24, r25 \n\t"
5345        "mul r9, r12 \n\t"
5346        "add r22, r0 \n\t"
5347        "adc r23, r1 \n\t"
5348        "adc r24, r25 \n\t"
5349        "st z+, r22 \n\t"
5350
5351        "ldi r22, 0 \n\t"
5352        "mul r2, r20 \n\t"
5353        "add r23, r0 \n\t"
5354        "adc r24, r1 \n\t"
5355        "adc r22, r25 \n\t"
5356        "mul r3, r19 \n\t"
5357        "add r23, r0 \n\t"
5358        "adc r24, r1 \n\t"
5359        "adc r22, r25 \n\t"
5360        "mul r4, r18 \n\t"
5361        "add r23, r0 \n\t"
5362        "adc r24, r1 \n\t"
5363        "adc r22, r25 \n\t"
5364        "mul r5, r17 \n\t"
5365        "add r23, r0 \n\t"
5366        "adc r24, r1 \n\t"
5367        "adc r22, r25 \n\t"
5368        "mul r6, r16 \n\t"
5369        "add r23, r0 \n\t"
5370        "adc r24, r1 \n\t"
5371        "adc r22, r25 \n\t"
5372        "mul r7, r15 \n\t"
5373        "add r23, r0 \n\t"
5374        "adc r24, r1 \n\t"
5375        "adc r22, r25 \n\t"
5376        "mul r8, r14 \n\t"
5377        "add r23, r0 \n\t"
5378        "adc r24, r1 \n\t"
5379        "adc r22, r25 \n\t"
5380        "mul r9, r13 \n\t"
5381        "add r23, r0 \n\t"
5382        "adc r24, r1 \n\t"
5383        "adc r22, r25 \n\t"
5384        "mul r10, r12 \n\t"
5385        "add r23, r0 \n\t"
5386        "adc r24, r1 \n\t"
5387        "adc r22, r25 \n\t"
5388        "st z+, r23 \n\t"
5389
5390        "ldi r23, 0 \n\t"
5391        "mul r2, r21 \n\t"
5392        "add r24, r0 \n\t"
5393        "adc r22, r1 \n\t"
5394        "adc r23, r25 \n\t"
5395        "mul r3, r20 \n\t"
5396        "add r24, r0 \n\t"
5397        "adc r22, r1 \n\t"
5398        "adc r23, r25 \n\t"
5399        "mul r4, r19 \n\t"
5400        "add r24, r0 \n\t"
5401        "adc r22, r1 \n\t"
5402        "adc r23, r25 \n\t"
5403        "mul r5, r18 \n\t"
5404        "add r24, r0 \n\t"
5405        "adc r22, r1 \n\t"
5406        "adc r23, r25 \n\t"
5407        "mul r6, r17 \n\t"
5408        "add r24, r0 \n\t"
5409        "adc r22, r1 \n\t"
5410        "adc r23, r25 \n\t"
5411        "mul r7, r16 \n\t"
5412        "add r24, r0 \n\t"
5413        "adc r22, r1 \n\t"
5414        "adc r23, r25 \n\t"
5415        "mul r8, r15 \n\t"
5416        "add r24, r0 \n\t"
5417        "adc r22, r1 \n\t"
5418        "adc r23, r25 \n\t"
5419        "mul r9, r14 \n\t"
5420        "add r24, r0 \n\t"
5421        "adc r22, r1 \n\t"
5422        "adc r23, r25 \n\t"
5423        "mul r10, r13 \n\t"
5424        "add r24, r0 \n\t"
5425        "adc r22, r1 \n\t"
5426        "adc r23, r25 \n\t"
5427        "mul r11, r12 \n\t"
5428        "add r24, r0 \n\t"
5429        "adc r22, r1 \n\t"
5430        "adc r23, r25 \n\t"
5431        "st z+, r24 \n\t"
5432
5433        "ld r2, x+ \n\t"
5434        "ldi r24, 0 \n\t"
5435        "mul r3, r21 \n\t"
5436        "add r22, r0 \n\t"
5437        "adc r23, r1 \n\t"
5438        "adc r24, r25 \n\t"
5439        "mul r4, r20 \n\t"
5440        "add r22, r0 \n\t"
5441        "adc r23, r1 \n\t"
5442        "adc r24, r25 \n\t"
5443        "mul r5, r19 \n\t"
5444        "add r22, r0 \n\t"
5445        "adc r23, r1 \n\t"
5446        "adc r24, r25 \n\t"
5447        "mul r6, r18 \n\t"
5448        "add r22, r0 \n\t"
5449        "adc r23, r1 \n\t"
5450        "adc r24, r25 \n\t"
5451        "mul r7, r17 \n\t"
5452        "add r22, r0 \n\t"
5453        "adc r23, r1 \n\t"
5454        "adc r24, r25 \n\t"
5455        "mul r8, r16 \n\t"
5456        "add r22, r0 \n\t"
5457        "adc r23, r1 \n\t"
5458        "adc r24, r25 \n\t"
5459        "mul r9, r15 \n\t"
5460        "add r22, r0 \n\t"
5461        "adc r23, r1 \n\t"
5462        "adc r24, r25 \n\t"
5463        "mul r10, r14 \n\t"
5464        "add r22, r0 \n\t"
5465        "adc r23, r1 \n\t"
5466        "adc r24, r25 \n\t"
5467        "mul r11, r13 \n\t"
5468        "add r22, r0 \n\t"
5469        "adc r23, r1 \n\t"
5470        "adc r24, r25 \n\t"
5471        "mul r2, r12 \n\t"
5472        "add r22, r0 \n\t"
5473        "adc r23, r1 \n\t"
5474        "adc r24, r25 \n\t"
5475        "ld r0, z \n\t"
5476        "add r22, r0 \n\t"
5477        "adc r23, r25 \n\t"
5478        "adc r24, r25 \n\t"
5479        "st z+, r22 \n\t"
5480
5481        "ld r3, x+ \n\t"
5482        "ldi r22, 0 \n\t"
5483        "mul r4, r21 \n\t"
5484        "add r23, r0 \n\t"
5485        "adc r24, r1 \n\t"
5486        "adc r22, r25 \n\t"
5487        "mul r5, r20 \n\t"
5488        "add r23, r0 \n\t"
5489        "adc r24, r1 \n\t"
5490        "adc r22, r25 \n\t"
5491        "mul r6, r19 \n\t"
5492        "add r23, r0 \n\t"
5493        "adc r24, r1 \n\t"
5494        "adc r22, r25 \n\t"
5495        "mul r7, r18 \n\t"
5496        "add r23, r0 \n\t"
5497        "adc r24, r1 \n\t"
5498        "adc r22, r25 \n\t"
5499        "mul r8, r17 \n\t"
5500        "add r23, r0 \n\t"
5501        "adc r24, r1 \n\t"
5502        "adc r22, r25 \n\t"
5503        "mul r9, r16 \n\t"
5504        "add r23, r0 \n\t"
5505        "adc r24, r1 \n\t"
5506        "adc r22, r25 \n\t"
5507        "mul r10, r15 \n\t"
5508        "add r23, r0 \n\t"
5509        "adc r24, r1 \n\t"
5510        "adc r22, r25 \n\t"
5511        "mul r11, r14 \n\t"
5512        "add r23, r0 \n\t"
5513        "adc r24, r1 \n\t"
5514        "adc r22, r25 \n\t"
5515        "mul r2, r13 \n\t"
5516        "add r23, r0 \n\t"
5517        "adc r24, r1 \n\t"
5518        "adc r22, r25 \n\t"
5519        "mul r3, r12 \n\t"
5520        "add r23, r0 \n\t"
5521        "adc r24, r1 \n\t"
5522        "adc r22, r25 \n\t"
5523        "ld r0, z \n\t"
5524        "add r23, r0 \n\t"
5525        "adc r24, r25 \n\t"
5526        "adc r22, r25 \n\t"
5527        "st z+, r23 \n\t"
5528
5529        "ld r4, x+ \n\t"
5530        "ldi r23, 0 \n\t"
5531        "mul r5, r21 \n\t"
5532        "add r24, r0 \n\t"
5533        "adc r22, r1 \n\t"
5534        "adc r23, r25 \n\t"
5535        "mul r6, r20 \n\t"
5536        "add r24, r0 \n\t"
5537        "adc r22, r1 \n\t"
5538        "adc r23, r25 \n\t"
5539        "mul r7, r19 \n\t"
5540        "add r24, r0 \n\t"
5541        "adc r22, r1 \n\t"
5542        "adc r23, r25 \n\t"
5543        "mul r8, r18 \n\t"
5544        "add r24, r0 \n\t"
5545        "adc r22, r1 \n\t"
5546        "adc r23, r25 \n\t"
5547        "mul r9, r17 \n\t"
5548        "add r24, r0 \n\t"
5549        "adc r22, r1 \n\t"
5550        "adc r23, r25 \n\t"
5551        "mul r10, r16 \n\t"
5552        "add r24, r0 \n\t"
5553        "adc r22, r1 \n\t"
5554        "adc r23, r25 \n\t"
5555        "mul r11, r15 \n\t"
5556        "add r24, r0 \n\t"
5557        "adc r22, r1 \n\t"
5558        "adc r23, r25 \n\t"
5559        "mul r2, r14 \n\t"
5560        "add r24, r0 \n\t"
5561        "adc r22, r1 \n\t"
5562        "adc r23, r25 \n\t"
5563        "mul r3, r13 \n\t"
5564        "add r24, r0 \n\t"
5565        "adc r22, r1 \n\t"
5566        "adc r23, r25 \n\t"
5567        "mul r4, r12 \n\t"
5568        "add r24, r0 \n\t"
5569        "adc r22, r1 \n\t"
5570        "adc r23, r25 \n\t"
5571        "ld r0, z \n\t"
5572        "add r24, r0 \n\t"
5573        "adc r22, r25 \n\t"
5574        "adc r23, r25 \n\t"
5575        "st z+, r24 \n\t"
5576
5577        "ld r5, x+ \n\t"
5578        "ldi r24, 0 \n\t"
5579        "mul r6, r21 \n\t"
5580        "add r22, r0 \n\t"
5581        "adc r23, r1 \n\t"
5582        "adc r24, r25 \n\t"
5583        "mul r7, r20 \n\t"
5584        "add r22, r0 \n\t"
5585        "adc r23, r1 \n\t"
5586        "adc r24, r25 \n\t"
5587        "mul r8, r19 \n\t"
5588        "add r22, r0 \n\t"
5589        "adc r23, r1 \n\t"
5590        "adc r24, r25 \n\t"
5591        "mul r9, r18 \n\t"
5592        "add r22, r0 \n\t"
5593        "adc r23, r1 \n\t"
5594        "adc r24, r25 \n\t"
5595        "mul r10, r17 \n\t"
5596        "add r22, r0 \n\t"
5597        "adc r23, r1 \n\t"
5598        "adc r24, r25 \n\t"
5599        "mul r11, r16 \n\t"
5600        "add r22, r0 \n\t"
5601        "adc r23, r1 \n\t"
5602        "adc r24, r25 \n\t"
5603        "mul r2, r15 \n\t"
5604        "add r22, r0 \n\t"
5605        "adc r23, r1 \n\t"
5606        "adc r24, r25 \n\t"
5607        "mul r3, r14 \n\t"
5608        "add r22, r0 \n\t"
5609        "adc r23, r1 \n\t"
5610        "adc r24, r25 \n\t"
5611        "mul r4, r13 \n\t"
5612        "add r22, r0 \n\t"
5613        "adc r23, r1 \n\t"
5614        "adc r24, r25 \n\t"
5615        "mul r5, r12 \n\t"
5616        "add r22, r0 \n\t"
5617        "adc r23, r1 \n\t"
5618        "adc r24, r25 \n\t"
5619        "ld r0, z \n\t"
5620        "add r22, r0 \n\t"
5621        "adc r23, r25 \n\t"
5622        "adc r24, r25 \n\t"
5623        "st z+, r22 \n\t"
5624
5625        "ld r6, x+ \n\t"
5626        "ldi r22, 0 \n\t"
5627        "mul r7, r21 \n\t"
5628        "add r23, r0 \n\t"
5629        "adc r24, r1 \n\t"
5630        "adc r22, r25 \n\t"
5631        "mul r8, r20 \n\t"
5632        "add r23, r0 \n\t"
5633        "adc r24, r1 \n\t"
5634        "adc r22, r25 \n\t"
5635        "mul r9, r19 \n\t"
5636        "add r23, r0 \n\t"
5637        "adc r24, r1 \n\t"
5638        "adc r22, r25 \n\t"
5639        "mul r10, r18 \n\t"
5640        "add r23, r0 \n\t"
5641        "adc r24, r1 \n\t"
5642        "adc r22, r25 \n\t"
5643        "mul r11, r17 \n\t"
5644        "add r23, r0 \n\t"
5645        "adc r24, r1 \n\t"
5646        "adc r22, r25 \n\t"
5647        "mul r2, r16 \n\t"
5648        "add r23, r0 \n\t"
5649        "adc r24, r1 \n\t"
5650        "adc r22, r25 \n\t"
5651        "mul r3, r15 \n\t"
5652        "add r23, r0 \n\t"
5653        "adc r24, r1 \n\t"
5654        "adc r22, r25 \n\t"
5655        "mul r4, r14 \n\t"
5656        "add r23, r0 \n\t"
5657        "adc r24, r1 \n\t"
5658        "adc r22, r25 \n\t"
5659        "mul r5, r13 \n\t"
5660        "add r23, r0 \n\t"
5661        "adc r24, r1 \n\t"
5662        "adc r22, r25 \n\t"
5663        "mul r6, r12 \n\t"
5664        "add r23, r0 \n\t"
5665        "adc r24, r1 \n\t"
5666        "adc r22, r25 \n\t"
5667        "ld r0, z \n\t"
5668        "add r23, r0 \n\t"
5669        "adc r24, r25 \n\t"
5670        "adc r22, r25 \n\t"
5671        "st z+, r23 \n\t"
5672
5673        "ld r7, x+ \n\t"
5674        "ldi r23, 0 \n\t"
5675        "mul r8, r21 \n\t"
5676        "add r24, r0 \n\t"
5677        "adc r22, r1 \n\t"
5678        "adc r23, r25 \n\t"
5679        "mul r9, r20 \n\t"
5680        "add r24, r0 \n\t"
5681        "adc r22, r1 \n\t"
5682        "adc r23, r25 \n\t"
5683        "mul r10, r19 \n\t"
5684        "add r24, r0 \n\t"
5685        "adc r22, r1 \n\t"
5686        "adc r23, r25 \n\t"
5687        "mul r11, r18 \n\t"
5688        "add r24, r0 \n\t"
5689        "adc r22, r1 \n\t"
5690        "adc r23, r25 \n\t"
5691        "mul r2, r17 \n\t"
5692        "add r24, r0 \n\t"
5693        "adc r22, r1 \n\t"
5694        "adc r23, r25 \n\t"
5695        "mul r3, r16 \n\t"
5696        "add r24, r0 \n\t"
5697        "adc r22, r1 \n\t"
5698        "adc r23, r25 \n\t"
5699        "mul r4, r15 \n\t"
5700        "add r24, r0 \n\t"
5701        "adc r22, r1 \n\t"
5702        "adc r23, r25 \n\t"
5703        "mul r5, r14 \n\t"
5704        "add r24, r0 \n\t"
5705        "adc r22, r1 \n\t"
5706        "adc r23, r25 \n\t"
5707        "mul r6, r13 \n\t"
5708        "add r24, r0 \n\t"
5709        "adc r22, r1 \n\t"
5710        "adc r23, r25 \n\t"
5711        "mul r7, r12 \n\t"
5712        "add r24, r0 \n\t"
5713        "adc r22, r1 \n\t"
5714        "adc r23, r25 \n\t"
5715        "ld r0, z \n\t"
5716        "add r24, r0 \n\t"
5717        "adc r22, r25 \n\t"
5718        "adc r23, r25 \n\t"
5719        "st z+, r24 \n\t"
5720
5721        "ld r8, x+ \n\t"
5722        "ldi r24, 0 \n\t"
5723        "mul r9, r21 \n\t"
5724        "add r22, r0 \n\t"
5725        "adc r23, r1 \n\t"
5726        "adc r24, r25 \n\t"
5727        "mul r10, r20 \n\t"
5728        "add r22, r0 \n\t"
5729        "adc r23, r1 \n\t"
5730        "adc r24, r25 \n\t"
5731        "mul r11, r19 \n\t"
5732        "add r22, r0 \n\t"
5733        "adc r23, r1 \n\t"
5734        "adc r24, r25 \n\t"
5735        "mul r2, r18 \n\t"
5736        "add r22, r0 \n\t"
5737        "adc r23, r1 \n\t"
5738        "adc r24, r25 \n\t"
5739        "mul r3, r17 \n\t"
5740        "add r22, r0 \n\t"
5741        "adc r23, r1 \n\t"
5742        "adc r24, r25 \n\t"
5743        "mul r4, r16 \n\t"
5744        "add r22, r0 \n\t"
5745        "adc r23, r1 \n\t"
5746        "adc r24, r25 \n\t"
5747        "mul r5, r15 \n\t"
5748        "add r22, r0 \n\t"
5749        "adc r23, r1 \n\t"
5750        "adc r24, r25 \n\t"
5751        "mul r6, r14 \n\t"
5752        "add r22, r0 \n\t"
5753        "adc r23, r1 \n\t"
5754        "adc r24, r25 \n\t"
5755        "mul r7, r13 \n\t"
5756        "add r22, r0 \n\t"
5757        "adc r23, r1 \n\t"
5758        "adc r24, r25 \n\t"
5759        "mul r8, r12 \n\t"
5760        "add r22, r0 \n\t"
5761        "adc r23, r1 \n\t"
5762        "adc r24, r25 \n\t"
5763        "ld r0, z \n\t"
5764        "add r22, r0 \n\t"
5765        "adc r23, r25 \n\t"
5766        "adc r24, r25 \n\t"
5767        "st z+, r22 \n\t"
5768
5769        "ld r9, x+ \n\t"
5770        "ldi r22, 0 \n\t"
5771        "mul r10, r21 \n\t"
5772        "add r23, r0 \n\t"
5773        "adc r24, r1 \n\t"
5774        "adc r22, r25 \n\t"
5775        "mul r11, r20 \n\t"
5776        "add r23, r0 \n\t"
5777        "adc r24, r1 \n\t"
5778        "adc r22, r25 \n\t"
5779        "mul r2, r19 \n\t"
5780        "add r23, r0 \n\t"
5781        "adc r24, r1 \n\t"
5782        "adc r22, r25 \n\t"
5783        "mul r3, r18 \n\t"
5784        "add r23, r0 \n\t"
5785        "adc r24, r1 \n\t"
5786        "adc r22, r25 \n\t"
5787        "mul r4, r17 \n\t"
5788        "add r23, r0 \n\t"
5789        "adc r24, r1 \n\t"
5790        "adc r22, r25 \n\t"
5791        "mul r5, r16 \n\t"
5792        "add r23, r0 \n\t"
5793        "adc r24, r1 \n\t"
5794        "adc r22, r25 \n\t"
5795        "mul r6, r15 \n\t"
5796        "add r23, r0 \n\t"
5797        "adc r24, r1 \n\t"
5798        "adc r22, r25 \n\t"
5799        "mul r7, r14 \n\t"
5800        "add r23, r0 \n\t"
5801        "adc r24, r1 \n\t"
5802        "adc r22, r25 \n\t"
5803        "mul r8, r13 \n\t"
5804        "add r23, r0 \n\t"
5805        "adc r24, r1 \n\t"
5806        "adc r22, r25 \n\t"
5807        "mul r9, r12 \n\t"
5808        "add r23, r0 \n\t"
5809        "adc r24, r1 \n\t"
5810        "adc r22, r25 \n\t"
5811        "ld r0, z \n\t"
5812        "add r23, r0 \n\t"
5813        "adc r24, r25 \n\t"
5814        "adc r22, r25 \n\t"
5815        "st z+, r23 \n\t"
5816
5817        "ld r12, y+ \n\t"
5818        "ldi r23, 0 \n\t"
5819        "mul r10, r12 \n\t"
5820        "add r24, r0 \n\t"
5821        "adc r22, r1 \n\t"
5822        "adc r23, r25 \n\t"
5823        "mul r11, r21 \n\t"
5824        "add r24, r0 \n\t"
5825        "adc r22, r1 \n\t"
5826        "adc r23, r25 \n\t"
5827        "mul r2, r20 \n\t"
5828        "add r24, r0 \n\t"
5829        "adc r22, r1 \n\t"
5830        "adc r23, r25 \n\t"
5831        "mul r3, r19 \n\t"
5832        "add r24, r0 \n\t"
5833        "adc r22, r1 \n\t"
5834        "adc r23, r25 \n\t"
5835        "mul r4, r18 \n\t"
5836        "add r24, r0 \n\t"
5837        "adc r22, r1 \n\t"
5838        "adc r23, r25 \n\t"
5839        "mul r5, r17 \n\t"
5840        "add r24, r0 \n\t"
5841        "adc r22, r1 \n\t"
5842        "adc r23, r25 \n\t"
5843        "mul r6, r16 \n\t"
5844        "add r24, r0 \n\t"
5845        "adc r22, r1 \n\t"
5846        "adc r23, r25 \n\t"
5847        "mul r7, r15 \n\t"
5848        "add r24, r0 \n\t"
5849        "adc r22, r1 \n\t"
5850        "adc r23, r25 \n\t"
5851        "mul r8, r14 \n\t"
5852        "add r24, r0 \n\t"
5853        "adc r22, r1 \n\t"
5854        "adc r23, r25 \n\t"
5855        "mul r9, r13 \n\t"
5856        "add r24, r0 \n\t"
5857        "adc r22, r1 \n\t"
5858        "adc r23, r25 \n\t"
5859        "ld r0, z \n\t"
5860        "add r24, r0 \n\t"
5861        "adc r22, r25 \n\t"
5862        "adc r23, r25 \n\t"
5863        "st z+, r24 \n\t"
5864
5865        "ld r13, y+ \n\t"
5866        "ldi r24, 0 \n\t"
5867        "mul r10, r13 \n\t"
5868        "add r22, r0 \n\t"
5869        "adc r23, r1 \n\t"
5870        "adc r24, r25 \n\t"
5871        "mul r11, r12 \n\t"
5872        "add r22, r0 \n\t"
5873        "adc r23, r1 \n\t"
5874        "adc r24, r25 \n\t"
5875        "mul r2, r21 \n\t"
5876        "add r22, r0 \n\t"
5877        "adc r23, r1 \n\t"
5878        "adc r24, r25 \n\t"
5879        "mul r3, r20 \n\t"
5880        "add r22, r0 \n\t"
5881        "adc r23, r1 \n\t"
5882        "adc r24, r25 \n\t"
5883        "mul r4, r19 \n\t"
5884        "add r22, r0 \n\t"
5885        "adc r23, r1 \n\t"
5886        "adc r24, r25 \n\t"
5887        "mul r5, r18 \n\t"
5888        "add r22, r0 \n\t"
5889        "adc r23, r1 \n\t"
5890        "adc r24, r25 \n\t"
5891        "mul r6, r17 \n\t"
5892        "add r22, r0 \n\t"
5893        "adc r23, r1 \n\t"
5894        "adc r24, r25 \n\t"
5895        "mul r7, r16 \n\t"
5896        "add r22, r0 \n\t"
5897        "adc r23, r1 \n\t"
5898        "adc r24, r25 \n\t"
5899        "mul r8, r15 \n\t"
5900        "add r22, r0 \n\t"
5901        "adc r23, r1 \n\t"
5902        "adc r24, r25 \n\t"
5903        "mul r9, r14 \n\t"
5904        "add r22, r0 \n\t"
5905        "adc r23, r1 \n\t"
5906        "adc r24, r25 \n\t"
5907        "ld r0, z \n\t"
5908        "add r22, r0 \n\t"
5909        "adc r23, r25 \n\t"
5910        "adc r24, r25 \n\t"
5911        "st z+, r22 \n\t"
5912
5913        "ld r14, y+ \n\t"
5914        "ldi r22, 0 \n\t"
5915        "mul r10, r14 \n\t"
5916        "add r23, r0 \n\t"
5917        "adc r24, r1 \n\t"
5918        "adc r22, r25 \n\t"
5919        "mul r11, r13 \n\t"
5920        "add r23, r0 \n\t"
5921        "adc r24, r1 \n\t"
5922        "adc r22, r25 \n\t"
5923        "mul r2, r12 \n\t"
5924        "add r23, r0 \n\t"
5925        "adc r24, r1 \n\t"
5926        "adc r22, r25 \n\t"
5927        "mul r3, r21 \n\t"
5928        "add r23, r0 \n\t"
5929        "adc r24, r1 \n\t"
5930        "adc r22, r25 \n\t"
5931        "mul r4, r20 \n\t"
5932        "add r23, r0 \n\t"
5933        "adc r24, r1 \n\t"
5934        "adc r22, r25 \n\t"
5935        "mul r5, r19 \n\t"
5936        "add r23, r0 \n\t"
5937        "adc r24, r1 \n\t"
5938        "adc r22, r25 \n\t"
5939        "mul r6, r18 \n\t"
5940        "add r23, r0 \n\t"
5941        "adc r24, r1 \n\t"
5942        "adc r22, r25 \n\t"
5943        "mul r7, r17 \n\t"
5944        "add r23, r0 \n\t"
5945        "adc r24, r1 \n\t"
5946        "adc r22, r25 \n\t"
5947        "mul r8, r16 \n\t"
5948        "add r23, r0 \n\t"
5949        "adc r24, r1 \n\t"
5950        "adc r22, r25 \n\t"
5951        "mul r9, r15 \n\t"
5952        "add r23, r0 \n\t"
5953        "adc r24, r1 \n\t"
5954        "adc r22, r25 \n\t"
5955        "ld r0, z \n\t"
5956        "add r23, r0 \n\t"
5957        "adc r24, r25 \n\t"
5958        "adc r22, r25 \n\t"
5959        "st z+, r23 \n\t"
5960
5961        "ld r15, y+ \n\t"
5962        "ldi r23, 0 \n\t"
5963        "mul r10, r15 \n\t"
5964        "add r24, r0 \n\t"
5965        "adc r22, r1 \n\t"
5966        "adc r23, r25 \n\t"
5967        "mul r11, r14 \n\t"
5968        "add r24, r0 \n\t"
5969        "adc r22, r1 \n\t"
5970        "adc r23, r25 \n\t"
5971        "mul r2, r13 \n\t"
5972        "add r24, r0 \n\t"
5973        "adc r22, r1 \n\t"
5974        "adc r23, r25 \n\t"
5975        "mul r3, r12 \n\t"
5976        "add r24, r0 \n\t"
5977        "adc r22, r1 \n\t"
5978        "adc r23, r25 \n\t"
5979        "mul r4, r21 \n\t"
5980        "add r24, r0 \n\t"
5981        "adc r22, r1 \n\t"
5982        "adc r23, r25 \n\t"
5983        "mul r5, r20 \n\t"
5984        "add r24, r0 \n\t"
5985        "adc r22, r1 \n\t"
5986        "adc r23, r25 \n\t"
5987        "mul r6, r19 \n\t"
5988        "add r24, r0 \n\t"
5989        "adc r22, r1 \n\t"
5990        "adc r23, r25 \n\t"
5991        "mul r7, r18 \n\t"
5992        "add r24, r0 \n\t"
5993        "adc r22, r1 \n\t"
5994        "adc r23, r25 \n\t"
5995        "mul r8, r17 \n\t"
5996        "add r24, r0 \n\t"
5997        "adc r22, r1 \n\t"
5998        "adc r23, r25 \n\t"
5999        "mul r9, r16 \n\t"
6000        "add r24, r0 \n\t"
6001        "adc r22, r1 \n\t"
6002        "adc r23, r25 \n\t"
6003        "ld r0, z \n\t"
6004        "add r24, r0 \n\t"
6005        "adc r22, r25 \n\t"
6006        "adc r23, r25 \n\t"
6007        "st z+, r24 \n\t"
6008
6009        "ld r16, y+ \n\t"
6010        "ldi r24, 0 \n\t"
6011        "mul r10, r16 \n\t"
6012        "add r22, r0 \n\t"
6013        "adc r23, r1 \n\t"
6014        "adc r24, r25 \n\t"
6015        "mul r11, r15 \n\t"
6016        "add r22, r0 \n\t"
6017        "adc r23, r1 \n\t"
6018        "adc r24, r25 \n\t"
6019        "mul r2, r14 \n\t"
6020        "add r22, r0 \n\t"
6021        "adc r23, r1 \n\t"
6022        "adc r24, r25 \n\t"
6023        "mul r3, r13 \n\t"
6024        "add r22, r0 \n\t"
6025        "adc r23, r1 \n\t"
6026        "adc r24, r25 \n\t"
6027        "mul r4, r12 \n\t"
6028        "add r22, r0 \n\t"
6029        "adc r23, r1 \n\t"
6030        "adc r24, r25 \n\t"
6031        "mul r5, r21 \n\t"
6032        "add r22, r0 \n\t"
6033        "adc r23, r1 \n\t"
6034        "adc r24, r25 \n\t"
6035        "mul r6, r20 \n\t"
6036        "add r22, r0 \n\t"
6037        "adc r23, r1 \n\t"
6038        "adc r24, r25 \n\t"
6039        "mul r7, r19 \n\t"
6040        "add r22, r0 \n\t"
6041        "adc r23, r1 \n\t"
6042        "adc r24, r25 \n\t"
6043        "mul r8, r18 \n\t"
6044        "add r22, r0 \n\t"
6045        "adc r23, r1 \n\t"
6046        "adc r24, r25 \n\t"
6047        "mul r9, r17 \n\t"
6048        "add r22, r0 \n\t"
6049        "adc r23, r1 \n\t"
6050        "adc r24, r25 \n\t"
6051        "ld r0, z \n\t"
6052        "add r22, r0 \n\t"
6053        "adc r23, r25 \n\t"
6054        "adc r24, r25 \n\t"
6055        "st z+, r22 \n\t"
6056
6057        "ld r17, y+ \n\t"
6058        "ldi r22, 0 \n\t"
6059        "mul r10, r17 \n\t"
6060        "add r23, r0 \n\t"
6061        "adc r24, r1 \n\t"
6062        "adc r22, r25 \n\t"
6063        "mul r11, r16 \n\t"
6064        "add r23, r0 \n\t"
6065        "adc r24, r1 \n\t"
6066        "adc r22, r25 \n\t"
6067        "mul r2, r15 \n\t"
6068        "add r23, r0 \n\t"
6069        "adc r24, r1 \n\t"
6070        "adc r22, r25 \n\t"
6071        "mul r3, r14 \n\t"
6072        "add r23, r0 \n\t"
6073        "adc r24, r1 \n\t"
6074        "adc r22, r25 \n\t"
6075        "mul r4, r13 \n\t"
6076        "add r23, r0 \n\t"
6077        "adc r24, r1 \n\t"
6078        "adc r22, r25 \n\t"
6079        "mul r5, r12 \n\t"
6080        "add r23, r0 \n\t"
6081        "adc r24, r1 \n\t"
6082        "adc r22, r25 \n\t"
6083        "mul r6, r21 \n\t"
6084        "add r23, r0 \n\t"
6085        "adc r24, r1 \n\t"
6086        "adc r22, r25 \n\t"
6087        "mul r7, r20 \n\t"
6088        "add r23, r0 \n\t"
6089        "adc r24, r1 \n\t"
6090        "adc r22, r25 \n\t"
6091        "mul r8, r19 \n\t"
6092        "add r23, r0 \n\t"
6093        "adc r24, r1 \n\t"
6094        "adc r22, r25 \n\t"
6095        "mul r9, r18 \n\t"
6096        "add r23, r0 \n\t"
6097        "adc r24, r1 \n\t"
6098        "adc r22, r25 \n\t"
6099        "ld r0, z \n\t"
6100        "add r23, r0 \n\t"
6101        "adc r24, r25 \n\t"
6102        "adc r22, r25 \n\t"
6103        "st z+, r23 \n\t"
6104
6105        "ld r18, y+ \n\t"
6106        "ldi r23, 0 \n\t"
6107        "mul r10, r18 \n\t"
6108        "add r24, r0 \n\t"
6109        "adc r22, r1 \n\t"
6110        "adc r23, r25 \n\t"
6111        "mul r11, r17 \n\t"
6112        "add r24, r0 \n\t"
6113        "adc r22, r1 \n\t"
6114        "adc r23, r25 \n\t"
6115        "mul r2, r16 \n\t"
6116        "add r24, r0 \n\t"
6117        "adc r22, r1 \n\t"
6118        "adc r23, r25 \n\t"
6119        "mul r3, r15 \n\t"
6120        "add r24, r0 \n\t"
6121        "adc r22, r1 \n\t"
6122        "adc r23, r25 \n\t"
6123        "mul r4, r14 \n\t"
6124        "add r24, r0 \n\t"
6125        "adc r22, r1 \n\t"
6126        "adc r23, r25 \n\t"
6127        "mul r5, r13 \n\t"
6128        "add r24, r0 \n\t"
6129        "adc r22, r1 \n\t"
6130        "adc r23, r25 \n\t"
6131        "mul r6, r12 \n\t"
6132        "add r24, r0 \n\t"
6133        "adc r22, r1 \n\t"
6134        "adc r23, r25 \n\t"
6135        "mul r7, r21 \n\t"
6136        "add r24, r0 \n\t"
6137        "adc r22, r1 \n\t"
6138        "adc r23, r25 \n\t"
6139        "mul r8, r20 \n\t"
6140        "add r24, r0 \n\t"
6141        "adc r22, r1 \n\t"
6142        "adc r23, r25 \n\t"
6143        "mul r9, r19 \n\t"
6144        "add r24, r0 \n\t"
6145        "adc r22, r1 \n\t"
6146        "adc r23, r25 \n\t"
6147        "ld r0, z \n\t"
6148        "add r24, r0 \n\t"
6149        "adc r22, r25 \n\t"
6150        "adc r23, r25 \n\t"
6151        "st z+, r24 \n\t"
6152
6153        "ld r19, y+ \n\t"
6154        "ldi r24, 0 \n\t"
6155        "mul r10, r19 \n\t"
6156        "add r22, r0 \n\t"
6157        "adc r23, r1 \n\t"
6158        "adc r24, r25 \n\t"
6159        "mul r11, r18 \n\t"
6160        "add r22, r0 \n\t"
6161        "adc r23, r1 \n\t"
6162        "adc r24, r25 \n\t"
6163        "mul r2, r17 \n\t"
6164        "add r22, r0 \n\t"
6165        "adc r23, r1 \n\t"
6166        "adc r24, r25 \n\t"
6167        "mul r3, r16 \n\t"
6168        "add r22, r0 \n\t"
6169        "adc r23, r1 \n\t"
6170        "adc r24, r25 \n\t"
6171        "mul r4, r15 \n\t"
6172        "add r22, r0 \n\t"
6173        "adc r23, r1 \n\t"
6174        "adc r24, r25 \n\t"
6175        "mul r5, r14 \n\t"
6176        "add r22, r0 \n\t"
6177        "adc r23, r1 \n\t"
6178        "adc r24, r25 \n\t"
6179        "mul r6, r13 \n\t"
6180        "add r22, r0 \n\t"
6181        "adc r23, r1 \n\t"
6182        "adc r24, r25 \n\t"
6183        "mul r7, r12 \n\t"
6184        "add r22, r0 \n\t"
6185        "adc r23, r1 \n\t"
6186        "adc r24, r25 \n\t"
6187        "mul r8, r21 \n\t"
6188        "add r22, r0 \n\t"
6189        "adc r23, r1 \n\t"
6190        "adc r24, r25 \n\t"
6191        "mul r9, r20 \n\t"
6192        "add r22, r0 \n\t"
6193        "adc r23, r1 \n\t"
6194        "adc r24, r25 \n\t"
6195        "ld r0, z \n\t"
6196        "add r22, r0 \n\t"
6197        "adc r23, r25 \n\t"
6198        "adc r24, r25 \n\t"
6199        "st z+, r22 \n\t"
6200
6201        "ldi r22, 0 \n\t"
6202        "mul r11, r19 \n\t"
6203        "add r23, r0 \n\t"
6204        "adc r24, r1 \n\t"
6205        "adc r22, r25 \n\t"
6206        "mul r2, r18 \n\t"
6207        "add r23, r0 \n\t"
6208        "adc r24, r1 \n\t"
6209        "adc r22, r25 \n\t"
6210        "mul r3, r17 \n\t"
6211        "add r23, r0 \n\t"
6212        "adc r24, r1 \n\t"
6213        "adc r22, r25 \n\t"
6214        "mul r4, r16 \n\t"
6215        "add r23, r0 \n\t"
6216        "adc r24, r1 \n\t"
6217        "adc r22, r25 \n\t"
6218        "mul r5, r15 \n\t"
6219        "add r23, r0 \n\t"
6220        "adc r24, r1 \n\t"
6221        "adc r22, r25 \n\t"
6222        "mul r6, r14 \n\t"
6223        "add r23, r0 \n\t"
6224        "adc r24, r1 \n\t"
6225        "adc r22, r25 \n\t"
6226        "mul r7, r13 \n\t"
6227        "add r23, r0 \n\t"
6228        "adc r24, r1 \n\t"
6229        "adc r22, r25 \n\t"
6230        "mul r8, r12 \n\t"
6231        "add r23, r0 \n\t"
6232        "adc r24, r1 \n\t"
6233        "adc r22, r25 \n\t"
6234        "mul r9, r21 \n\t"
6235        "add r23, r0 \n\t"
6236        "adc r24, r1 \n\t"
6237        "adc r22, r25 \n\t"
6238        "st z+, r23 \n\t"
6239
6240        "ldi r23, 0 \n\t"
6241        "mul r2, r19 \n\t"
6242        "add r24, r0 \n\t"
6243        "adc r22, r1 \n\t"
6244        "adc r23, r25 \n\t"
6245        "mul r3, r18 \n\t"
6246        "add r24, r0 \n\t"
6247        "adc r22, r1 \n\t"
6248        "adc r23, r25 \n\t"
6249        "mul r4, r17 \n\t"
6250        "add r24, r0 \n\t"
6251        "adc r22, r1 \n\t"
6252        "adc r23, r25 \n\t"
6253        "mul r5, r16 \n\t"
6254        "add r24, r0 \n\t"
6255        "adc r22, r1 \n\t"
6256        "adc r23, r25 \n\t"
6257        "mul r6, r15 \n\t"
6258        "add r24, r0 \n\t"
6259        "adc r22, r1 \n\t"
6260        "adc r23, r25 \n\t"
6261        "mul r7, r14 \n\t"
6262        "add r24, r0 \n\t"
6263        "adc r22, r1 \n\t"
6264        "adc r23, r25 \n\t"
6265        "mul r8, r13 \n\t"
6266        "add r24, r0 \n\t"
6267        "adc r22, r1 \n\t"
6268        "adc r23, r25 \n\t"
6269        "mul r9, r12 \n\t"
6270        "add r24, r0 \n\t"
6271        "adc r22, r1 \n\t"
6272        "adc r23, r25 \n\t"
6273        "st z+, r24 \n\t"
6274
6275        "ldi r24, 0 \n\t"
6276        "mul r3, r19 \n\t"
6277        "add r22, r0 \n\t"
6278        "adc r23, r1 \n\t"
6279        "adc r24, r25 \n\t"
6280        "mul r4, r18 \n\t"
6281        "add r22, r0 \n\t"
6282        "adc r23, r1 \n\t"
6283        "adc r24, r25 \n\t"
6284        "mul r5, r17 \n\t"
6285        "add r22, r0 \n\t"
6286        "adc r23, r1 \n\t"
6287        "adc r24, r25 \n\t"
6288        "mul r6, r16 \n\t"
6289        "add r22, r0 \n\t"
6290        "adc r23, r1 \n\t"
6291        "adc r24, r25 \n\t"
6292        "mul r7, r15 \n\t"
6293        "add r22, r0 \n\t"
6294        "adc r23, r1 \n\t"
6295        "adc r24, r25 \n\t"
6296        "mul r8, r14 \n\t"
6297        "add r22, r0 \n\t"
6298        "adc r23, r1 \n\t"
6299        "adc r24, r25 \n\t"
6300        "mul r9, r13 \n\t"
6301        "add r22, r0 \n\t"
6302        "adc r23, r1 \n\t"
6303        "adc r24, r25 \n\t"
6304        "st z+, r22 \n\t"
6305
6306        "ldi r22, 0 \n\t"
6307        "mul r4, r19 \n\t"
6308        "add r23, r0 \n\t"
6309        "adc r24, r1 \n\t"
6310        "adc r22, r25 \n\t"
6311        "mul r5, r18 \n\t"
6312        "add r23, r0 \n\t"
6313        "adc r24, r1 \n\t"
6314        "adc r22, r25 \n\t"
6315        "mul r6, r17 \n\t"
6316        "add r23, r0 \n\t"
6317        "adc r24, r1 \n\t"
6318        "adc r22, r25 \n\t"
6319        "mul r7, r16 \n\t"
6320        "add r23, r0 \n\t"
6321        "adc r24, r1 \n\t"
6322        "adc r22, r25 \n\t"
6323        "mul r8, r15 \n\t"
6324        "add r23, r0 \n\t"
6325        "adc r24, r1 \n\t"
6326        "adc r22, r25 \n\t"
6327        "mul r9, r14 \n\t"
6328        "add r23, r0 \n\t"
6329        "adc r24, r1 \n\t"
6330        "adc r22, r25 \n\t"
6331        "st z+, r23 \n\t"
6332
6333        "ldi r23, 0 \n\t"
6334        "mul r5, r19 \n\t"
6335        "add r24, r0 \n\t"
6336        "adc r22, r1 \n\t"
6337        "adc r23, r25 \n\t"
6338        "mul r6, r18 \n\t"
6339        "add r24, r0 \n\t"
6340        "adc r22, r1 \n\t"
6341        "adc r23, r25 \n\t"
6342        "mul r7, r17 \n\t"
6343        "add r24, r0 \n\t"
6344        "adc r22, r1 \n\t"
6345        "adc r23, r25 \n\t"
6346        "mul r8, r16 \n\t"
6347        "add r24, r0 \n\t"
6348        "adc r22, r1 \n\t"
6349        "adc r23, r25 \n\t"
6350        "mul r9, r15 \n\t"
6351        "add r24, r0 \n\t"
6352        "adc r22, r1 \n\t"
6353        "adc r23, r25 \n\t"
6354        "st z+, r24 \n\t"
6355
6356        "ldi r24, 0 \n\t"
6357        "mul r6, r19 \n\t"
6358        "add r22, r0 \n\t"
6359        "adc r23, r1 \n\t"
6360        "adc r24, r25 \n\t"
6361        "mul r7, r18 \n\t"
6362        "add r22, r0 \n\t"
6363        "adc r23, r1 \n\t"
6364        "adc r24, r25 \n\t"
6365        "mul r8, r17 \n\t"
6366        "add r22, r0 \n\t"
6367        "adc r23, r1 \n\t"
6368        "adc r24, r25 \n\t"
6369        "mul r9, r16 \n\t"
6370        "add r22, r0 \n\t"
6371        "adc r23, r1 \n\t"
6372        "adc r24, r25 \n\t"
6373        "st z+, r22 \n\t"
6374
6375        "ldi r22, 0 \n\t"
6376        "mul r7, r19 \n\t"
6377        "add r23, r0 \n\t"
6378        "adc r24, r1 \n\t"
6379        "adc r22, r25 \n\t"
6380        "mul r8, r18 \n\t"
6381        "add r23, r0 \n\t"
6382        "adc r24, r1 \n\t"
6383        "adc r22, r25 \n\t"
6384        "mul r9, r17 \n\t"
6385        "add r23, r0 \n\t"
6386        "adc r24, r1 \n\t"
6387        "adc r22, r25 \n\t"
6388        "st z+, r23 \n\t"
6389
6390        "ldi r23, 0 \n\t"
6391        "mul r8, r19 \n\t"
6392        "add r24, r0 \n\t"
6393        "adc r22, r1 \n\t"
6394        "adc r23, r25 \n\t"
6395        "mul r9, r18 \n\t"
6396        "add r24, r0 \n\t"
6397        "adc r22, r1 \n\t"
6398        "adc r23, r25 \n\t"
6399        "st z+, r24 \n\t"
6400
6401        "mul r9, r19 \n\t"
6402        "add r22, r0 \n\t"
6403        "adc r23, r1 \n\t"
6404        "st z+, r22 \n\t"
6405        "st z+, r23 \n\t"
6406
6407        "sbiw r30, 46 \n\t"
6408        "sbiw r28, 28 \n\t"
6409        "sbiw r26, 18 \n\t"
6410        "ld r2, x+ \n\t"
6411        "ld r12, y+ \n\t"
6412        "ld r3, x+ \n\t"
6413        "ld r13, y+ \n\t"
6414        "ld r4, x+ \n\t"
6415        "ld r14, y+ \n\t"
6416        "ld r5, x+ \n\t"
6417        "ld r15, y+ \n\t"
6418        "ld r6, x+ \n\t"
6419        "ld r16, y+ \n\t"
6420        "ld r7, x+ \n\t"
6421        "ld r17, y+ \n\t"
6422        "ld r8, x+ \n\t"
6423        "ld r18, y+ \n\t"
6424        "ld r9, x+ \n\t"
6425        "ld r19, y+ \n\t"
6426        "ld r10, x+ \n\t"
6427        "ld r20, y+ \n\t"
6428        "ld r11, x+ \n\t"
6429        "ld r21, y+ \n\t"
6430
6431        "ldi r23, 0 \n\t"
6432        "mul r2, r12 \n\t"
6433        "st z+, r0 \n\t"
6434        "mov r22, r1 \n\t"
6435
6436        "ldi r24, 0 \n\t"
6437        "mul r2, r13 \n\t"
6438        "add r22, r0 \n\t"
6439        "adc r23, r1 \n\t"
6440        "mul r3, r12 \n\t"
6441        "add r22, r0 \n\t"
6442        "adc r23, r1 \n\t"
6443        "adc r24, r25 \n\t"
6444        "st z+, r22 \n\t"
6445
6446        "ldi r22, 0 \n\t"
6447        "mul r2, r14 \n\t"
6448        "add r23, r0 \n\t"
6449        "adc r24, r1 \n\t"
6450        "adc r22, r25 \n\t"
6451        "mul r3, r13 \n\t"
6452        "add r23, r0 \n\t"
6453        "adc r24, r1 \n\t"
6454        "adc r22, r25 \n\t"
6455        "mul r4, r12 \n\t"
6456        "add r23, r0 \n\t"
6457        "adc r24, r1 \n\t"
6458        "adc r22, r25 \n\t"
6459        "st z+, r23 \n\t"
6460
6461        "ldi r23, 0 \n\t"
6462        "mul r2, r15 \n\t"
6463        "add r24, r0 \n\t"
6464        "adc r22, r1 \n\t"
6465        "adc r23, r25 \n\t"
6466        "mul r3, r14 \n\t"
6467        "add r24, r0 \n\t"
6468        "adc r22, r1 \n\t"
6469        "adc r23, r25 \n\t"
6470        "mul r4, r13 \n\t"
6471        "add r24, r0 \n\t"
6472        "adc r22, r1 \n\t"
6473        "adc r23, r25 \n\t"
6474        "mul r5, r12 \n\t"
6475        "add r24, r0 \n\t"
6476        "adc r22, r1 \n\t"
6477        "adc r23, r25 \n\t"
6478        "st z+, r24 \n\t"
6479
6480        "ldi r24, 0 \n\t"
6481        "mul r2, r16 \n\t"
6482        "add r22, r0 \n\t"
6483        "adc r23, r1 \n\t"
6484        "adc r24, r25 \n\t"
6485        "mul r3, r15 \n\t"
6486        "add r22, r0 \n\t"
6487        "adc r23, r1 \n\t"
6488        "adc r24, r25 \n\t"
6489        "mul r4, r14 \n\t"
6490        "add r22, r0 \n\t"
6491        "adc r23, r1 \n\t"
6492        "adc r24, r25 \n\t"
6493        "mul r5, r13 \n\t"
6494        "add r22, r0 \n\t"
6495        "adc r23, r1 \n\t"
6496        "adc r24, r25 \n\t"
6497        "mul r6, r12 \n\t"
6498        "add r22, r0 \n\t"
6499        "adc r23, r1 \n\t"
6500        "adc r24, r25 \n\t"
6501        "st z+, r22 \n\t"
6502
6503        "ldi r22, 0 \n\t"
6504        "mul r2, r17 \n\t"
6505        "add r23, r0 \n\t"
6506        "adc r24, r1 \n\t"
6507        "adc r22, r25 \n\t"
6508        "mul r3, r16 \n\t"
6509        "add r23, r0 \n\t"
6510        "adc r24, r1 \n\t"
6511        "adc r22, r25 \n\t"
6512        "mul r4, r15 \n\t"
6513        "add r23, r0 \n\t"
6514        "adc r24, r1 \n\t"
6515        "adc r22, r25 \n\t"
6516        "mul r5, r14 \n\t"
6517        "add r23, r0 \n\t"
6518        "adc r24, r1 \n\t"
6519        "adc r22, r25 \n\t"
6520        "mul r6, r13 \n\t"
6521        "add r23, r0 \n\t"
6522        "adc r24, r1 \n\t"
6523        "adc r22, r25 \n\t"
6524        "mul r7, r12 \n\t"
6525        "add r23, r0 \n\t"
6526        "adc r24, r1 \n\t"
6527        "adc r22, r25 \n\t"
6528        "st z+, r23 \n\t"
6529
6530        "ldi r23, 0 \n\t"
6531        "mul r2, r18 \n\t"
6532        "add r24, r0 \n\t"
6533        "adc r22, r1 \n\t"
6534        "adc r23, r25 \n\t"
6535        "mul r3, r17 \n\t"
6536        "add r24, r0 \n\t"
6537        "adc r22, r1 \n\t"
6538        "adc r23, r25 \n\t"
6539        "mul r4, r16 \n\t"
6540        "add r24, r0 \n\t"
6541        "adc r22, r1 \n\t"
6542        "adc r23, r25 \n\t"
6543        "mul r5, r15 \n\t"
6544        "add r24, r0 \n\t"
6545        "adc r22, r1 \n\t"
6546        "adc r23, r25 \n\t"
6547        "mul r6, r14 \n\t"
6548        "add r24, r0 \n\t"
6549        "adc r22, r1 \n\t"
6550        "adc r23, r25 \n\t"
6551        "mul r7, r13 \n\t"
6552        "add r24, r0 \n\t"
6553        "adc r22, r1 \n\t"
6554        "adc r23, r25 \n\t"
6555        "mul r8, r12 \n\t"
6556        "add r24, r0 \n\t"
6557        "adc r22, r1 \n\t"
6558        "adc r23, r25 \n\t"
6559        "st z+, r24 \n\t"
6560
6561        "ldi r24, 0 \n\t"
6562        "mul r2, r19 \n\t"
6563        "add r22, r0 \n\t"
6564        "adc r23, r1 \n\t"
6565        "adc r24, r25 \n\t"
6566        "mul r3, r18 \n\t"
6567        "add r22, r0 \n\t"
6568        "adc r23, r1 \n\t"
6569        "adc r24, r25 \n\t"
6570        "mul r4, r17 \n\t"
6571        "add r22, r0 \n\t"
6572        "adc r23, r1 \n\t"
6573        "adc r24, r25 \n\t"
6574        "mul r5, r16 \n\t"
6575        "add r22, r0 \n\t"
6576        "adc r23, r1 \n\t"
6577        "adc r24, r25 \n\t"
6578        "mul r6, r15 \n\t"
6579        "add r22, r0 \n\t"
6580        "adc r23, r1 \n\t"
6581        "adc r24, r25 \n\t"
6582        "mul r7, r14 \n\t"
6583        "add r22, r0 \n\t"
6584        "adc r23, r1 \n\t"
6585        "adc r24, r25 \n\t"
6586        "mul r8, r13 \n\t"
6587        "add r22, r0 \n\t"
6588        "adc r23, r1 \n\t"
6589        "adc r24, r25 \n\t"
6590        "mul r9, r12 \n\t"
6591        "add r22, r0 \n\t"
6592        "adc r23, r1 \n\t"
6593        "adc r24, r25 \n\t"
6594        "st z+, r22 \n\t"
6595
6596        "ldi r22, 0 \n\t"
6597        "mul r2, r20 \n\t"
6598        "add r23, r0 \n\t"
6599        "adc r24, r1 \n\t"
6600        "adc r22, r25 \n\t"
6601        "mul r3, r19 \n\t"
6602        "add r23, r0 \n\t"
6603        "adc r24, r1 \n\t"
6604        "adc r22, r25 \n\t"
6605        "mul r4, r18 \n\t"
6606        "add r23, r0 \n\t"
6607        "adc r24, r1 \n\t"
6608        "adc r22, r25 \n\t"
6609        "mul r5, r17 \n\t"
6610        "add r23, r0 \n\t"
6611        "adc r24, r1 \n\t"
6612        "adc r22, r25 \n\t"
6613        "mul r6, r16 \n\t"
6614        "add r23, r0 \n\t"
6615        "adc r24, r1 \n\t"
6616        "adc r22, r25 \n\t"
6617        "mul r7, r15 \n\t"
6618        "add r23, r0 \n\t"
6619        "adc r24, r1 \n\t"
6620        "adc r22, r25 \n\t"
6621        "mul r8, r14 \n\t"
6622        "add r23, r0 \n\t"
6623        "adc r24, r1 \n\t"
6624        "adc r22, r25 \n\t"
6625        "mul r9, r13 \n\t"
6626        "add r23, r0 \n\t"
6627        "adc r24, r1 \n\t"
6628        "adc r22, r25 \n\t"
6629        "mul r10, r12 \n\t"
6630        "add r23, r0 \n\t"
6631        "adc r24, r1 \n\t"
6632        "adc r22, r25 \n\t"
6633        "st z+, r23 \n\t"
6634
6635        "ldi r23, 0 \n\t"
6636        "mul r2, r21 \n\t"
6637        "add r24, r0 \n\t"
6638        "adc r22, r1 \n\t"
6639        "adc r23, r25 \n\t"
6640        "mul r3, r20 \n\t"
6641        "add r24, r0 \n\t"
6642        "adc r22, r1 \n\t"
6643        "adc r23, r25 \n\t"
6644        "mul r4, r19 \n\t"
6645        "add r24, r0 \n\t"
6646        "adc r22, r1 \n\t"
6647        "adc r23, r25 \n\t"
6648        "mul r5, r18 \n\t"
6649        "add r24, r0 \n\t"
6650        "adc r22, r1 \n\t"
6651        "adc r23, r25 \n\t"
6652        "mul r6, r17 \n\t"
6653        "add r24, r0 \n\t"
6654        "adc r22, r1 \n\t"
6655        "adc r23, r25 \n\t"
6656        "mul r7, r16 \n\t"
6657        "add r24, r0 \n\t"
6658        "adc r22, r1 \n\t"
6659        "adc r23, r25 \n\t"
6660        "mul r8, r15 \n\t"
6661        "add r24, r0 \n\t"
6662        "adc r22, r1 \n\t"
6663        "adc r23, r25 \n\t"
6664        "mul r9, r14 \n\t"
6665        "add r24, r0 \n\t"
6666        "adc r22, r1 \n\t"
6667        "adc r23, r25 \n\t"
6668        "mul r10, r13 \n\t"
6669        "add r24, r0 \n\t"
6670        "adc r22, r1 \n\t"
6671        "adc r23, r25 \n\t"
6672        "mul r11, r12 \n\t"
6673        "add r24, r0 \n\t"
6674        "adc r22, r1 \n\t"
6675        "adc r23, r25 \n\t"
6676        "st z+, r24 \n\t"
6677
6678        "ld r2, x+ \n\t"
6679        "ldi r24, 0 \n\t"
6680        "mul r3, r21 \n\t"
6681        "add r22, r0 \n\t"
6682        "adc r23, r1 \n\t"
6683        "adc r24, r25 \n\t"
6684        "mul r4, r20 \n\t"
6685        "add r22, r0 \n\t"
6686        "adc r23, r1 \n\t"
6687        "adc r24, r25 \n\t"
6688        "mul r5, r19 \n\t"
6689        "add r22, r0 \n\t"
6690        "adc r23, r1 \n\t"
6691        "adc r24, r25 \n\t"
6692        "mul r6, r18 \n\t"
6693        "add r22, r0 \n\t"
6694        "adc r23, r1 \n\t"
6695        "adc r24, r25 \n\t"
6696        "mul r7, r17 \n\t"
6697        "add r22, r0 \n\t"
6698        "adc r23, r1 \n\t"
6699        "adc r24, r25 \n\t"
6700        "mul r8, r16 \n\t"
6701        "add r22, r0 \n\t"
6702        "adc r23, r1 \n\t"
6703        "adc r24, r25 \n\t"
6704        "mul r9, r15 \n\t"
6705        "add r22, r0 \n\t"
6706        "adc r23, r1 \n\t"
6707        "adc r24, r25 \n\t"
6708        "mul r10, r14 \n\t"
6709        "add r22, r0 \n\t"
6710        "adc r23, r1 \n\t"
6711        "adc r24, r25 \n\t"
6712        "mul r11, r13 \n\t"
6713        "add r22, r0 \n\t"
6714        "adc r23, r1 \n\t"
6715        "adc r24, r25 \n\t"
6716        "mul r2, r12 \n\t"
6717        "add r22, r0 \n\t"
6718        "adc r23, r1 \n\t"
6719        "adc r24, r25 \n\t"
6720        "ld r0, z \n\t"
6721        "add r22, r0 \n\t"
6722        "adc r23, r25 \n\t"
6723        "adc r24, r25 \n\t"
6724        "st z+, r22 \n\t"
6725
6726        "ld r3, x+ \n\t"
6727        "ldi r22, 0 \n\t"
6728        "mul r4, r21 \n\t"
6729        "add r23, r0 \n\t"
6730        "adc r24, r1 \n\t"
6731        "adc r22, r25 \n\t"
6732        "mul r5, r20 \n\t"
6733        "add r23, r0 \n\t"
6734        "adc r24, r1 \n\t"
6735        "adc r22, r25 \n\t"
6736        "mul r6, r19 \n\t"
6737        "add r23, r0 \n\t"
6738        "adc r24, r1 \n\t"
6739        "adc r22, r25 \n\t"
6740        "mul r7, r18 \n\t"
6741        "add r23, r0 \n\t"
6742        "adc r24, r1 \n\t"
6743        "adc r22, r25 \n\t"
6744        "mul r8, r17 \n\t"
6745        "add r23, r0 \n\t"
6746        "adc r24, r1 \n\t"
6747        "adc r22, r25 \n\t"
6748        "mul r9, r16 \n\t"
6749        "add r23, r0 \n\t"
6750        "adc r24, r1 \n\t"
6751        "adc r22, r25 \n\t"
6752        "mul r10, r15 \n\t"
6753        "add r23, r0 \n\t"
6754        "adc r24, r1 \n\t"
6755        "adc r22, r25 \n\t"
6756        "mul r11, r14 \n\t"
6757        "add r23, r0 \n\t"
6758        "adc r24, r1 \n\t"
6759        "adc r22, r25 \n\t"
6760        "mul r2, r13 \n\t"
6761        "add r23, r0 \n\t"
6762        "adc r24, r1 \n\t"
6763        "adc r22, r25 \n\t"
6764        "mul r3, r12 \n\t"
6765        "add r23, r0 \n\t"
6766        "adc r24, r1 \n\t"
6767        "adc r22, r25 \n\t"
6768        "ld r0, z \n\t"
6769        "add r23, r0 \n\t"
6770        "adc r24, r25 \n\t"
6771        "adc r22, r25 \n\t"
6772        "st z+, r23 \n\t"
6773
6774        "ld r4, x+ \n\t"
6775        "ldi r23, 0 \n\t"
6776        "mul r5, r21 \n\t"
6777        "add r24, r0 \n\t"
6778        "adc r22, r1 \n\t"
6779        "adc r23, r25 \n\t"
6780        "mul r6, r20 \n\t"
6781        "add r24, r0 \n\t"
6782        "adc r22, r1 \n\t"
6783        "adc r23, r25 \n\t"
6784        "mul r7, r19 \n\t"
6785        "add r24, r0 \n\t"
6786        "adc r22, r1 \n\t"
6787        "adc r23, r25 \n\t"
6788        "mul r8, r18 \n\t"
6789        "add r24, r0 \n\t"
6790        "adc r22, r1 \n\t"
6791        "adc r23, r25 \n\t"
6792        "mul r9, r17 \n\t"
6793        "add r24, r0 \n\t"
6794        "adc r22, r1 \n\t"
6795        "adc r23, r25 \n\t"
6796        "mul r10, r16 \n\t"
6797        "add r24, r0 \n\t"
6798        "adc r22, r1 \n\t"
6799        "adc r23, r25 \n\t"
6800        "mul r11, r15 \n\t"
6801        "add r24, r0 \n\t"
6802        "adc r22, r1 \n\t"
6803        "adc r23, r25 \n\t"
6804        "mul r2, r14 \n\t"
6805        "add r24, r0 \n\t"
6806        "adc r22, r1 \n\t"
6807        "adc r23, r25 \n\t"
6808        "mul r3, r13 \n\t"
6809        "add r24, r0 \n\t"
6810        "adc r22, r1 \n\t"
6811        "adc r23, r25 \n\t"
6812        "mul r4, r12 \n\t"
6813        "add r24, r0 \n\t"
6814        "adc r22, r1 \n\t"
6815        "adc r23, r25 \n\t"
6816        "ld r0, z \n\t"
6817        "add r24, r0 \n\t"
6818        "adc r22, r25 \n\t"
6819        "adc r23, r25 \n\t"
6820        "st z+, r24 \n\t"
6821
6822        "ld r5, x+ \n\t"
6823        "ldi r24, 0 \n\t"
6824        "mul r6, r21 \n\t"
6825        "add r22, r0 \n\t"
6826        "adc r23, r1 \n\t"
6827        "adc r24, r25 \n\t"
6828        "mul r7, r20 \n\t"
6829        "add r22, r0 \n\t"
6830        "adc r23, r1 \n\t"
6831        "adc r24, r25 \n\t"
6832        "mul r8, r19 \n\t"
6833        "add r22, r0 \n\t"
6834        "adc r23, r1 \n\t"
6835        "adc r24, r25 \n\t"
6836        "mul r9, r18 \n\t"
6837        "add r22, r0 \n\t"
6838        "adc r23, r1 \n\t"
6839        "adc r24, r25 \n\t"
6840        "mul r10, r17 \n\t"
6841        "add r22, r0 \n\t"
6842        "adc r23, r1 \n\t"
6843        "adc r24, r25 \n\t"
6844        "mul r11, r16 \n\t"
6845        "add r22, r0 \n\t"
6846        "adc r23, r1 \n\t"
6847        "adc r24, r25 \n\t"
6848        "mul r2, r15 \n\t"
6849        "add r22, r0 \n\t"
6850        "adc r23, r1 \n\t"
6851        "adc r24, r25 \n\t"
6852        "mul r3, r14 \n\t"
6853        "add r22, r0 \n\t"
6854        "adc r23, r1 \n\t"
6855        "adc r24, r25 \n\t"
6856        "mul r4, r13 \n\t"
6857        "add r22, r0 \n\t"
6858        "adc r23, r1 \n\t"
6859        "adc r24, r25 \n\t"
6860        "mul r5, r12 \n\t"
6861        "add r22, r0 \n\t"
6862        "adc r23, r1 \n\t"
6863        "adc r24, r25 \n\t"
6864        "ld r0, z \n\t"
6865        "add r22, r0 \n\t"
6866        "adc r23, r25 \n\t"
6867        "adc r24, r25 \n\t"
6868        "st z+, r22 \n\t"
6869
6870        "ld r6, x+ \n\t"
6871        "ldi r22, 0 \n\t"
6872        "mul r7, r21 \n\t"
6873        "add r23, r0 \n\t"
6874        "adc r24, r1 \n\t"
6875        "adc r22, r25 \n\t"
6876        "mul r8, r20 \n\t"
6877        "add r23, r0 \n\t"
6878        "adc r24, r1 \n\t"
6879        "adc r22, r25 \n\t"
6880        "mul r9, r19 \n\t"
6881        "add r23, r0 \n\t"
6882        "adc r24, r1 \n\t"
6883        "adc r22, r25 \n\t"
6884        "mul r10, r18 \n\t"
6885        "add r23, r0 \n\t"
6886        "adc r24, r1 \n\t"
6887        "adc r22, r25 \n\t"
6888        "mul r11, r17 \n\t"
6889        "add r23, r0 \n\t"
6890        "adc r24, r1 \n\t"
6891        "adc r22, r25 \n\t"
6892        "mul r2, r16 \n\t"
6893        "add r23, r0 \n\t"
6894        "adc r24, r1 \n\t"
6895        "adc r22, r25 \n\t"
6896        "mul r3, r15 \n\t"
6897        "add r23, r0 \n\t"
6898        "adc r24, r1 \n\t"
6899        "adc r22, r25 \n\t"
6900        "mul r4, r14 \n\t"
6901        "add r23, r0 \n\t"
6902        "adc r24, r1 \n\t"
6903        "adc r22, r25 \n\t"
6904        "mul r5, r13 \n\t"
6905        "add r23, r0 \n\t"
6906        "adc r24, r1 \n\t"
6907        "adc r22, r25 \n\t"
6908        "mul r6, r12 \n\t"
6909        "add r23, r0 \n\t"
6910        "adc r24, r1 \n\t"
6911        "adc r22, r25 \n\t"
6912        "ld r0, z \n\t"
6913        "add r23, r0 \n\t"
6914        "adc r24, r25 \n\t"
6915        "adc r22, r25 \n\t"
6916        "st z+, r23 \n\t"
6917
6918        "ld r7, x+ \n\t"
6919        "ldi r23, 0 \n\t"
6920        "mul r8, r21 \n\t"
6921        "add r24, r0 \n\t"
6922        "adc r22, r1 \n\t"
6923        "adc r23, r25 \n\t"
6924        "mul r9, r20 \n\t"
6925        "add r24, r0 \n\t"
6926        "adc r22, r1 \n\t"
6927        "adc r23, r25 \n\t"
6928        "mul r10, r19 \n\t"
6929        "add r24, r0 \n\t"
6930        "adc r22, r1 \n\t"
6931        "adc r23, r25 \n\t"
6932        "mul r11, r18 \n\t"
6933        "add r24, r0 \n\t"
6934        "adc r22, r1 \n\t"
6935        "adc r23, r25 \n\t"
6936        "mul r2, r17 \n\t"
6937        "add r24, r0 \n\t"
6938        "adc r22, r1 \n\t"
6939        "adc r23, r25 \n\t"
6940        "mul r3, r16 \n\t"
6941        "add r24, r0 \n\t"
6942        "adc r22, r1 \n\t"
6943        "adc r23, r25 \n\t"
6944        "mul r4, r15 \n\t"
6945        "add r24, r0 \n\t"
6946        "adc r22, r1 \n\t"
6947        "adc r23, r25 \n\t"
6948        "mul r5, r14 \n\t"
6949        "add r24, r0 \n\t"
6950        "adc r22, r1 \n\t"
6951        "adc r23, r25 \n\t"
6952        "mul r6, r13 \n\t"
6953        "add r24, r0 \n\t"
6954        "adc r22, r1 \n\t"
6955        "adc r23, r25 \n\t"
6956        "mul r7, r12 \n\t"
6957        "add r24, r0 \n\t"
6958        "adc r22, r1 \n\t"
6959        "adc r23, r25 \n\t"
6960        "ld r0, z \n\t"
6961        "add r24, r0 \n\t"
6962        "adc r22, r25 \n\t"
6963        "adc r23, r25 \n\t"
6964        "st z+, r24 \n\t"
6965
6966        "ld r8, x+ \n\t"
6967        "ldi r24, 0 \n\t"
6968        "mul r9, r21 \n\t"
6969        "add r22, r0 \n\t"
6970        "adc r23, r1 \n\t"
6971        "adc r24, r25 \n\t"
6972        "mul r10, r20 \n\t"
6973        "add r22, r0 \n\t"
6974        "adc r23, r1 \n\t"
6975        "adc r24, r25 \n\t"
6976        "mul r11, r19 \n\t"
6977        "add r22, r0 \n\t"
6978        "adc r23, r1 \n\t"
6979        "adc r24, r25 \n\t"
6980        "mul r2, r18 \n\t"
6981        "add r22, r0 \n\t"
6982        "adc r23, r1 \n\t"
6983        "adc r24, r25 \n\t"
6984        "mul r3, r17 \n\t"
6985        "add r22, r0 \n\t"
6986        "adc r23, r1 \n\t"
6987        "adc r24, r25 \n\t"
6988        "mul r4, r16 \n\t"
6989        "add r22, r0 \n\t"
6990        "adc r23, r1 \n\t"
6991        "adc r24, r25 \n\t"
6992        "mul r5, r15 \n\t"
6993        "add r22, r0 \n\t"
6994        "adc r23, r1 \n\t"
6995        "adc r24, r25 \n\t"
6996        "mul r6, r14 \n\t"
6997        "add r22, r0 \n\t"
6998        "adc r23, r1 \n\t"
6999        "adc r24, r25 \n\t"
7000        "mul r7, r13 \n\t"
7001        "add r22, r0 \n\t"
7002        "adc r23, r1 \n\t"
7003        "adc r24, r25 \n\t"
7004        "mul r8, r12 \n\t"
7005        "add r22, r0 \n\t"
7006        "adc r23, r1 \n\t"
7007        "adc r24, r25 \n\t"
7008        "ld r0, z \n\t"
7009        "add r22, r0 \n\t"
7010        "adc r23, r25 \n\t"
7011        "adc r24, r25 \n\t"
7012        "st z+, r22 \n\t"
7013
7014        "ld r9, x+ \n\t"
7015        "ldi r22, 0 \n\t"
7016        "mul r10, r21 \n\t"
7017        "add r23, r0 \n\t"
7018        "adc r24, r1 \n\t"
7019        "adc r22, r25 \n\t"
7020        "mul r11, r20 \n\t"
7021        "add r23, r0 \n\t"
7022        "adc r24, r1 \n\t"
7023        "adc r22, r25 \n\t"
7024        "mul r2, r19 \n\t"
7025        "add r23, r0 \n\t"
7026        "adc r24, r1 \n\t"
7027        "adc r22, r25 \n\t"
7028        "mul r3, r18 \n\t"
7029        "add r23, r0 \n\t"
7030        "adc r24, r1 \n\t"
7031        "adc r22, r25 \n\t"
7032        "mul r4, r17 \n\t"
7033        "add r23, r0 \n\t"
7034        "adc r24, r1 \n\t"
7035        "adc r22, r25 \n\t"
7036        "mul r5, r16 \n\t"
7037        "add r23, r0 \n\t"
7038        "adc r24, r1 \n\t"
7039        "adc r22, r25 \n\t"
7040        "mul r6, r15 \n\t"
7041        "add r23, r0 \n\t"
7042        "adc r24, r1 \n\t"
7043        "adc r22, r25 \n\t"
7044        "mul r7, r14 \n\t"
7045        "add r23, r0 \n\t"
7046        "adc r24, r1 \n\t"
7047        "adc r22, r25 \n\t"
7048        "mul r8, r13 \n\t"
7049        "add r23, r0 \n\t"
7050        "adc r24, r1 \n\t"
7051        "adc r22, r25 \n\t"
7052        "mul r9, r12 \n\t"
7053        "add r23, r0 \n\t"
7054        "adc r24, r1 \n\t"
7055        "adc r22, r25 \n\t"
7056        "ld r0, z \n\t"
7057        "add r23, r0 \n\t"
7058        "adc r24, r25 \n\t"
7059        "adc r22, r25 \n\t"
7060        "st z+, r23 \n\t"
7061
7062        "ld r10, x+ \n\t"
7063        "ldi r23, 0 \n\t"
7064        "mul r11, r21 \n\t"
7065        "add r24, r0 \n\t"
7066        "adc r22, r1 \n\t"
7067        "adc r23, r25 \n\t"
7068        "mul r2, r20 \n\t"
7069        "add r24, r0 \n\t"
7070        "adc r22, r1 \n\t"
7071        "adc r23, r25 \n\t"
7072        "mul r3, r19 \n\t"
7073        "add r24, r0 \n\t"
7074        "adc r22, r1 \n\t"
7075        "adc r23, r25 \n\t"
7076        "mul r4, r18 \n\t"
7077        "add r24, r0 \n\t"
7078        "adc r22, r1 \n\t"
7079        "adc r23, r25 \n\t"
7080        "mul r5, r17 \n\t"
7081        "add r24, r0 \n\t"
7082        "adc r22, r1 \n\t"
7083        "adc r23, r25 \n\t"
7084        "mul r6, r16 \n\t"
7085        "add r24, r0 \n\t"
7086        "adc r22, r1 \n\t"
7087        "adc r23, r25 \n\t"
7088        "mul r7, r15 \n\t"
7089        "add r24, r0 \n\t"
7090        "adc r22, r1 \n\t"
7091        "adc r23, r25 \n\t"
7092        "mul r8, r14 \n\t"
7093        "add r24, r0 \n\t"
7094        "adc r22, r1 \n\t"
7095        "adc r23, r25 \n\t"
7096        "mul r9, r13 \n\t"
7097        "add r24, r0 \n\t"
7098        "adc r22, r1 \n\t"
7099        "adc r23, r25 \n\t"
7100        "mul r10, r12 \n\t"
7101        "add r24, r0 \n\t"
7102        "adc r22, r1 \n\t"
7103        "adc r23, r25 \n\t"
7104        "ld r0, z \n\t"
7105        "add r24, r0 \n\t"
7106        "adc r22, r25 \n\t"
7107        "adc r23, r25 \n\t"
7108        "st z+, r24 \n\t"
7109
7110        "ld r11, x+ \n\t"
7111        "ldi r24, 0 \n\t"
7112        "mul r2, r21 \n\t"
7113        "add r22, r0 \n\t"
7114        "adc r23, r1 \n\t"
7115        "adc r24, r25 \n\t"
7116        "mul r3, r20 \n\t"
7117        "add r22, r0 \n\t"
7118        "adc r23, r1 \n\t"
7119        "adc r24, r25 \n\t"
7120        "mul r4, r19 \n\t"
7121        "add r22, r0 \n\t"
7122        "adc r23, r1 \n\t"
7123        "adc r24, r25 \n\t"
7124        "mul r5, r18 \n\t"
7125        "add r22, r0 \n\t"
7126        "adc r23, r1 \n\t"
7127        "adc r24, r25 \n\t"
7128        "mul r6, r17 \n\t"
7129        "add r22, r0 \n\t"
7130        "adc r23, r1 \n\t"
7131        "adc r24, r25 \n\t"
7132        "mul r7, r16 \n\t"
7133        "add r22, r0 \n\t"
7134        "adc r23, r1 \n\t"
7135        "adc r24, r25 \n\t"
7136        "mul r8, r15 \n\t"
7137        "add r22, r0 \n\t"
7138        "adc r23, r1 \n\t"
7139        "adc r24, r25 \n\t"
7140        "mul r9, r14 \n\t"
7141        "add r22, r0 \n\t"
7142        "adc r23, r1 \n\t"
7143        "adc r24, r25 \n\t"
7144        "mul r10, r13 \n\t"
7145        "add r22, r0 \n\t"
7146        "adc r23, r1 \n\t"
7147        "adc r24, r25 \n\t"
7148        "mul r11, r12 \n\t"
7149        "add r22, r0 \n\t"
7150        "adc r23, r1 \n\t"
7151        "adc r24, r25 \n\t"
7152        "ld r0, z \n\t"
7153        "add r22, r0 \n\t"
7154        "adc r23, r25 \n\t"
7155        "adc r24, r25 \n\t"
7156        "st z+, r22 \n\t"
7157
7158        "ld r2, x+ \n\t"
7159        "ldi r22, 0 \n\t"
7160        "mul r3, r21 \n\t"
7161        "add r23, r0 \n\t"
7162        "adc r24, r1 \n\t"
7163        "adc r22, r25 \n\t"
7164        "mul r4, r20 \n\t"
7165        "add r23, r0 \n\t"
7166        "adc r24, r1 \n\t"
7167        "adc r22, r25 \n\t"
7168        "mul r5, r19 \n\t"
7169        "add r23, r0 \n\t"
7170        "adc r24, r1 \n\t"
7171        "adc r22, r25 \n\t"
7172        "mul r6, r18 \n\t"
7173        "add r23, r0 \n\t"
7174        "adc r24, r1 \n\t"
7175        "adc r22, r25 \n\t"
7176        "mul r7, r17 \n\t"
7177        "add r23, r0 \n\t"
7178        "adc r24, r1 \n\t"
7179        "adc r22, r25 \n\t"
7180        "mul r8, r16 \n\t"
7181        "add r23, r0 \n\t"
7182        "adc r24, r1 \n\t"
7183        "adc r22, r25 \n\t"
7184        "mul r9, r15 \n\t"
7185        "add r23, r0 \n\t"
7186        "adc r24, r1 \n\t"
7187        "adc r22, r25 \n\t"
7188        "mul r10, r14 \n\t"
7189        "add r23, r0 \n\t"
7190        "adc r24, r1 \n\t"
7191        "adc r22, r25 \n\t"
7192        "mul r11, r13 \n\t"
7193        "add r23, r0 \n\t"
7194        "adc r24, r1 \n\t"
7195        "adc r22, r25 \n\t"
7196        "mul r2, r12 \n\t"
7197        "add r23, r0 \n\t"
7198        "adc r24, r1 \n\t"
7199        "adc r22, r25 \n\t"
7200        "ld r0, z \n\t"
7201        "add r23, r0 \n\t"
7202        "adc r24, r25 \n\t"
7203        "adc r22, r25 \n\t"
7204        "st z+, r23 \n\t"
7205
7206        "ld r3, x+ \n\t"
7207        "ldi r23, 0 \n\t"
7208        "mul r4, r21 \n\t"
7209        "add r24, r0 \n\t"
7210        "adc r22, r1 \n\t"
7211        "adc r23, r25 \n\t"
7212        "mul r5, r20 \n\t"
7213        "add r24, r0 \n\t"
7214        "adc r22, r1 \n\t"
7215        "adc r23, r25 \n\t"
7216        "mul r6, r19 \n\t"
7217        "add r24, r0 \n\t"
7218        "adc r22, r1 \n\t"
7219        "adc r23, r25 \n\t"
7220        "mul r7, r18 \n\t"
7221        "add r24, r0 \n\t"
7222        "adc r22, r1 \n\t"
7223        "adc r23, r25 \n\t"
7224        "mul r8, r17 \n\t"
7225        "add r24, r0 \n\t"
7226        "adc r22, r1 \n\t"
7227        "adc r23, r25 \n\t"
7228        "mul r9, r16 \n\t"
7229        "add r24, r0 \n\t"
7230        "adc r22, r1 \n\t"
7231        "adc r23, r25 \n\t"
7232        "mul r10, r15 \n\t"
7233        "add r24, r0 \n\t"
7234        "adc r22, r1 \n\t"
7235        "adc r23, r25 \n\t"
7236        "mul r11, r14 \n\t"
7237        "add r24, r0 \n\t"
7238        "adc r22, r1 \n\t"
7239        "adc r23, r25 \n\t"
7240        "mul r2, r13 \n\t"
7241        "add r24, r0 \n\t"
7242        "adc r22, r1 \n\t"
7243        "adc r23, r25 \n\t"
7244        "mul r3, r12 \n\t"
7245        "add r24, r0 \n\t"
7246        "adc r22, r1 \n\t"
7247        "adc r23, r25 \n\t"
7248        "ld r0, z \n\t"
7249        "add r24, r0 \n\t"
7250        "adc r22, r25 \n\t"
7251        "adc r23, r25 \n\t"
7252        "st z+, r24 \n\t"
7253
7254        "ld r4, x+ \n\t"
7255        "ldi r24, 0 \n\t"
7256        "mul r5, r21 \n\t"
7257        "add r22, r0 \n\t"
7258        "adc r23, r1 \n\t"
7259        "adc r24, r25 \n\t"
7260        "mul r6, r20 \n\t"
7261        "add r22, r0 \n\t"
7262        "adc r23, r1 \n\t"
7263        "adc r24, r25 \n\t"
7264        "mul r7, r19 \n\t"
7265        "add r22, r0 \n\t"
7266        "adc r23, r1 \n\t"
7267        "adc r24, r25 \n\t"
7268        "mul r8, r18 \n\t"
7269        "add r22, r0 \n\t"
7270        "adc r23, r1 \n\t"
7271        "adc r24, r25 \n\t"
7272        "mul r9, r17 \n\t"
7273        "add r22, r0 \n\t"
7274        "adc r23, r1 \n\t"
7275        "adc r24, r25 \n\t"
7276        "mul r10, r16 \n\t"
7277        "add r22, r0 \n\t"
7278        "adc r23, r1 \n\t"
7279        "adc r24, r25 \n\t"
7280        "mul r11, r15 \n\t"
7281        "add r22, r0 \n\t"
7282        "adc r23, r1 \n\t"
7283        "adc r24, r25 \n\t"
7284        "mul r2, r14 \n\t"
7285        "add r22, r0 \n\t"
7286        "adc r23, r1 \n\t"
7287        "adc r24, r25 \n\t"
7288        "mul r3, r13 \n\t"
7289        "add r22, r0 \n\t"
7290        "adc r23, r1 \n\t"
7291        "adc r24, r25 \n\t"
7292        "mul r4, r12 \n\t"
7293        "add r22, r0 \n\t"
7294        "adc r23, r1 \n\t"
7295        "adc r24, r25 \n\t"
7296        "ld r0, z \n\t"
7297        "add r22, r0 \n\t"
7298        "adc r23, r25 \n\t"
7299        "adc r24, r25 \n\t"
7300        "st z+, r22 \n\t"
7301
7302        "ld r5, x+ \n\t"
7303        "ldi r22, 0 \n\t"
7304        "mul r6, r21 \n\t"
7305        "add r23, r0 \n\t"
7306        "adc r24, r1 \n\t"
7307        "adc r22, r25 \n\t"
7308        "mul r7, r20 \n\t"
7309        "add r23, r0 \n\t"
7310        "adc r24, r1 \n\t"
7311        "adc r22, r25 \n\t"
7312        "mul r8, r19 \n\t"
7313        "add r23, r0 \n\t"
7314        "adc r24, r1 \n\t"
7315        "adc r22, r25 \n\t"
7316        "mul r9, r18 \n\t"
7317        "add r23, r0 \n\t"
7318        "adc r24, r1 \n\t"
7319        "adc r22, r25 \n\t"
7320        "mul r10, r17 \n\t"
7321        "add r23, r0 \n\t"
7322        "adc r24, r1 \n\t"
7323        "adc r22, r25 \n\t"
7324        "mul r11, r16 \n\t"
7325        "add r23, r0 \n\t"
7326        "adc r24, r1 \n\t"
7327        "adc r22, r25 \n\t"
7328        "mul r2, r15 \n\t"
7329        "add r23, r0 \n\t"
7330        "adc r24, r1 \n\t"
7331        "adc r22, r25 \n\t"
7332        "mul r3, r14 \n\t"
7333        "add r23, r0 \n\t"
7334        "adc r24, r1 \n\t"
7335        "adc r22, r25 \n\t"
7336        "mul r4, r13 \n\t"
7337        "add r23, r0 \n\t"
7338        "adc r24, r1 \n\t"
7339        "adc r22, r25 \n\t"
7340        "mul r5, r12 \n\t"
7341        "add r23, r0 \n\t"
7342        "adc r24, r1 \n\t"
7343        "adc r22, r25 \n\t"
7344        "ld r0, z \n\t"
7345        "add r23, r0 \n\t"
7346        "adc r24, r25 \n\t"
7347        "adc r22, r25 \n\t"
7348        "st z+, r23 \n\t"
7349
7350        "ld r6, x+ \n\t"
7351        "ldi r23, 0 \n\t"
7352        "mul r7, r21 \n\t"
7353        "add r24, r0 \n\t"
7354        "adc r22, r1 \n\t"
7355        "adc r23, r25 \n\t"
7356        "mul r8, r20 \n\t"
7357        "add r24, r0 \n\t"
7358        "adc r22, r1 \n\t"
7359        "adc r23, r25 \n\t"
7360        "mul r9, r19 \n\t"
7361        "add r24, r0 \n\t"
7362        "adc r22, r1 \n\t"
7363        "adc r23, r25 \n\t"
7364        "mul r10, r18 \n\t"
7365        "add r24, r0 \n\t"
7366        "adc r22, r1 \n\t"
7367        "adc r23, r25 \n\t"
7368        "mul r11, r17 \n\t"
7369        "add r24, r0 \n\t"
7370        "adc r22, r1 \n\t"
7371        "adc r23, r25 \n\t"
7372        "mul r2, r16 \n\t"
7373        "add r24, r0 \n\t"
7374        "adc r22, r1 \n\t"
7375        "adc r23, r25 \n\t"
7376        "mul r3, r15 \n\t"
7377        "add r24, r0 \n\t"
7378        "adc r22, r1 \n\t"
7379        "adc r23, r25 \n\t"
7380        "mul r4, r14 \n\t"
7381        "add r24, r0 \n\t"
7382        "adc r22, r1 \n\t"
7383        "adc r23, r25 \n\t"
7384        "mul r5, r13 \n\t"
7385        "add r24, r0 \n\t"
7386        "adc r22, r1 \n\t"
7387        "adc r23, r25 \n\t"
7388        "mul r6, r12 \n\t"
7389        "add r24, r0 \n\t"
7390        "adc r22, r1 \n\t"
7391        "adc r23, r25 \n\t"
7392        "ld r0, z \n\t"
7393        "add r24, r0 \n\t"
7394        "adc r22, r25 \n\t"
7395        "adc r23, r25 \n\t"
7396        "st z+, r24 \n\t"
7397
7398        "ld r7, x+ \n\t"
7399        "ldi r24, 0 \n\t"
7400        "mul r8, r21 \n\t"
7401        "add r22, r0 \n\t"
7402        "adc r23, r1 \n\t"
7403        "adc r24, r25 \n\t"
7404        "mul r9, r20 \n\t"
7405        "add r22, r0 \n\t"
7406        "adc r23, r1 \n\t"
7407        "adc r24, r25 \n\t"
7408        "mul r10, r19 \n\t"
7409        "add r22, r0 \n\t"
7410        "adc r23, r1 \n\t"
7411        "adc r24, r25 \n\t"
7412        "mul r11, r18 \n\t"
7413        "add r22, r0 \n\t"
7414        "adc r23, r1 \n\t"
7415        "adc r24, r25 \n\t"
7416        "mul r2, r17 \n\t"
7417        "add r22, r0 \n\t"
7418        "adc r23, r1 \n\t"
7419        "adc r24, r25 \n\t"
7420        "mul r3, r16 \n\t"
7421        "add r22, r0 \n\t"
7422        "adc r23, r1 \n\t"
7423        "adc r24, r25 \n\t"
7424        "mul r4, r15 \n\t"
7425        "add r22, r0 \n\t"
7426        "adc r23, r1 \n\t"
7427        "adc r24, r25 \n\t"
7428        "mul r5, r14 \n\t"
7429        "add r22, r0 \n\t"
7430        "adc r23, r1 \n\t"
7431        "adc r24, r25 \n\t"
7432        "mul r6, r13 \n\t"
7433        "add r22, r0 \n\t"
7434        "adc r23, r1 \n\t"
7435        "adc r24, r25 \n\t"
7436        "mul r7, r12 \n\t"
7437        "add r22, r0 \n\t"
7438        "adc r23, r1 \n\t"
7439        "adc r24, r25 \n\t"
7440        "ld r0, z \n\t"
7441        "add r22, r0 \n\t"
7442        "adc r23, r25 \n\t"
7443        "adc r24, r25 \n\t"
7444        "st z+, r22 \n\t"
7445
7446        "ld r8, x+ \n\t"
7447        "ldi r22, 0 \n\t"
7448        "mul r9, r21 \n\t"
7449        "add r23, r0 \n\t"
7450        "adc r24, r1 \n\t"
7451        "adc r22, r25 \n\t"
7452        "mul r10, r20 \n\t"
7453        "add r23, r0 \n\t"
7454        "adc r24, r1 \n\t"
7455        "adc r22, r25 \n\t"
7456        "mul r11, r19 \n\t"
7457        "add r23, r0 \n\t"
7458        "adc r24, r1 \n\t"
7459        "adc r22, r25 \n\t"
7460        "mul r2, r18 \n\t"
7461        "add r23, r0 \n\t"
7462        "adc r24, r1 \n\t"
7463        "adc r22, r25 \n\t"
7464        "mul r3, r17 \n\t"
7465        "add r23, r0 \n\t"
7466        "adc r24, r1 \n\t"
7467        "adc r22, r25 \n\t"
7468        "mul r4, r16 \n\t"
7469        "add r23, r0 \n\t"
7470        "adc r24, r1 \n\t"
7471        "adc r22, r25 \n\t"
7472        "mul r5, r15 \n\t"
7473        "add r23, r0 \n\t"
7474        "adc r24, r1 \n\t"
7475        "adc r22, r25 \n\t"
7476        "mul r6, r14 \n\t"
7477        "add r23, r0 \n\t"
7478        "adc r24, r1 \n\t"
7479        "adc r22, r25 \n\t"
7480        "mul r7, r13 \n\t"
7481        "add r23, r0 \n\t"
7482        "adc r24, r1 \n\t"
7483        "adc r22, r25 \n\t"
7484        "mul r8, r12 \n\t"
7485        "add r23, r0 \n\t"
7486        "adc r24, r1 \n\t"
7487        "adc r22, r25 \n\t"
7488        "ld r0, z \n\t"
7489        "add r23, r0 \n\t"
7490        "adc r24, r25 \n\t"
7491        "adc r22, r25 \n\t"
7492        "st z+, r23 \n\t"
7493
7494        "ld r9, x+ \n\t"
7495        "ldi r23, 0 \n\t"
7496        "mul r10, r21 \n\t"
7497        "add r24, r0 \n\t"
7498        "adc r22, r1 \n\t"
7499        "adc r23, r25 \n\t"
7500        "mul r11, r20 \n\t"
7501        "add r24, r0 \n\t"
7502        "adc r22, r1 \n\t"
7503        "adc r23, r25 \n\t"
7504        "mul r2, r19 \n\t"
7505        "add r24, r0 \n\t"
7506        "adc r22, r1 \n\t"
7507        "adc r23, r25 \n\t"
7508        "mul r3, r18 \n\t"
7509        "add r24, r0 \n\t"
7510        "adc r22, r1 \n\t"
7511        "adc r23, r25 \n\t"
7512        "mul r4, r17 \n\t"
7513        "add r24, r0 \n\t"
7514        "adc r22, r1 \n\t"
7515        "adc r23, r25 \n\t"
7516        "mul r5, r16 \n\t"
7517        "add r24, r0 \n\t"
7518        "adc r22, r1 \n\t"
7519        "adc r23, r25 \n\t"
7520        "mul r6, r15 \n\t"
7521        "add r24, r0 \n\t"
7522        "adc r22, r1 \n\t"
7523        "adc r23, r25 \n\t"
7524        "mul r7, r14 \n\t"
7525        "add r24, r0 \n\t"
7526        "adc r22, r1 \n\t"
7527        "adc r23, r25 \n\t"
7528        "mul r8, r13 \n\t"
7529        "add r24, r0 \n\t"
7530        "adc r22, r1 \n\t"
7531        "adc r23, r25 \n\t"
7532        "mul r9, r12 \n\t"
7533        "add r24, r0 \n\t"
7534        "adc r22, r1 \n\t"
7535        "adc r23, r25 \n\t"
7536        "ld r0, z \n\t"
7537        "add r24, r0 \n\t"
7538        "adc r22, r25 \n\t"
7539        "adc r23, r25 \n\t"
7540        "st z+, r24 \n\t"
7541
7542        "ld r12, y+ \n\t"
7543        "ldi r24, 0 \n\t"
7544        "mul r10, r12 \n\t"
7545        "add r22, r0 \n\t"
7546        "adc r23, r1 \n\t"
7547        "adc r24, r25 \n\t"
7548        "mul r11, r21 \n\t"
7549        "add r22, r0 \n\t"
7550        "adc r23, r1 \n\t"
7551        "adc r24, r25 \n\t"
7552        "mul r2, r20 \n\t"
7553        "add r22, r0 \n\t"
7554        "adc r23, r1 \n\t"
7555        "adc r24, r25 \n\t"
7556        "mul r3, r19 \n\t"
7557        "add r22, r0 \n\t"
7558        "adc r23, r1 \n\t"
7559        "adc r24, r25 \n\t"
7560        "mul r4, r18 \n\t"
7561        "add r22, r0 \n\t"
7562        "adc r23, r1 \n\t"
7563        "adc r24, r25 \n\t"
7564        "mul r5, r17 \n\t"
7565        "add r22, r0 \n\t"
7566        "adc r23, r1 \n\t"
7567        "adc r24, r25 \n\t"
7568        "mul r6, r16 \n\t"
7569        "add r22, r0 \n\t"
7570        "adc r23, r1 \n\t"
7571        "adc r24, r25 \n\t"
7572        "mul r7, r15 \n\t"
7573        "add r22, r0 \n\t"
7574        "adc r23, r1 \n\t"
7575        "adc r24, r25 \n\t"
7576        "mul r8, r14 \n\t"
7577        "add r22, r0 \n\t"
7578        "adc r23, r1 \n\t"
7579        "adc r24, r25 \n\t"
7580        "mul r9, r13 \n\t"
7581        "add r22, r0 \n\t"
7582        "adc r23, r1 \n\t"
7583        "adc r24, r25 \n\t"
7584        "ld r0, z \n\t"
7585        "add r22, r0 \n\t"
7586        "adc r23, r25 \n\t"
7587        "adc r24, r25 \n\t"
7588        "st z+, r22 \n\t"
7589
7590        "ld r13, y+ \n\t"
7591        "ldi r22, 0 \n\t"
7592        "mul r10, r13 \n\t"
7593        "add r23, r0 \n\t"
7594        "adc r24, r1 \n\t"
7595        "adc r22, r25 \n\t"
7596        "mul r11, r12 \n\t"
7597        "add r23, r0 \n\t"
7598        "adc r24, r1 \n\t"
7599        "adc r22, r25 \n\t"
7600        "mul r2, r21 \n\t"
7601        "add r23, r0 \n\t"
7602        "adc r24, r1 \n\t"
7603        "adc r22, r25 \n\t"
7604        "mul r3, r20 \n\t"
7605        "add r23, r0 \n\t"
7606        "adc r24, r1 \n\t"
7607        "adc r22, r25 \n\t"
7608        "mul r4, r19 \n\t"
7609        "add r23, r0 \n\t"
7610        "adc r24, r1 \n\t"
7611        "adc r22, r25 \n\t"
7612        "mul r5, r18 \n\t"
7613        "add r23, r0 \n\t"
7614        "adc r24, r1 \n\t"
7615        "adc r22, r25 \n\t"
7616        "mul r6, r17 \n\t"
7617        "add r23, r0 \n\t"
7618        "adc r24, r1 \n\t"
7619        "adc r22, r25 \n\t"
7620        "mul r7, r16 \n\t"
7621        "add r23, r0 \n\t"
7622        "adc r24, r1 \n\t"
7623        "adc r22, r25 \n\t"
7624        "mul r8, r15 \n\t"
7625        "add r23, r0 \n\t"
7626        "adc r24, r1 \n\t"
7627        "adc r22, r25 \n\t"
7628        "mul r9, r14 \n\t"
7629        "add r23, r0 \n\t"
7630        "adc r24, r1 \n\t"
7631        "adc r22, r25 \n\t"
7632        "ld r0, z \n\t"
7633        "add r23, r0 \n\t"
7634        "adc r24, r25 \n\t"
7635        "adc r22, r25 \n\t"
7636        "st z+, r23 \n\t"
7637
7638        "ld r14, y+ \n\t"
7639        "ldi r23, 0 \n\t"
7640        "mul r10, r14 \n\t"
7641        "add r24, r0 \n\t"
7642        "adc r22, r1 \n\t"
7643        "adc r23, r25 \n\t"
7644        "mul r11, r13 \n\t"
7645        "add r24, r0 \n\t"
7646        "adc r22, r1 \n\t"
7647        "adc r23, r25 \n\t"
7648        "mul r2, r12 \n\t"
7649        "add r24, r0 \n\t"
7650        "adc r22, r1 \n\t"
7651        "adc r23, r25 \n\t"
7652        "mul r3, r21 \n\t"
7653        "add r24, r0 \n\t"
7654        "adc r22, r1 \n\t"
7655        "adc r23, r25 \n\t"
7656        "mul r4, r20 \n\t"
7657        "add r24, r0 \n\t"
7658        "adc r22, r1 \n\t"
7659        "adc r23, r25 \n\t"
7660        "mul r5, r19 \n\t"
7661        "add r24, r0 \n\t"
7662        "adc r22, r1 \n\t"
7663        "adc r23, r25 \n\t"
7664        "mul r6, r18 \n\t"
7665        "add r24, r0 \n\t"
7666        "adc r22, r1 \n\t"
7667        "adc r23, r25 \n\t"
7668        "mul r7, r17 \n\t"
7669        "add r24, r0 \n\t"
7670        "adc r22, r1 \n\t"
7671        "adc r23, r25 \n\t"
7672        "mul r8, r16 \n\t"
7673        "add r24, r0 \n\t"
7674        "adc r22, r1 \n\t"
7675        "adc r23, r25 \n\t"
7676        "mul r9, r15 \n\t"
7677        "add r24, r0 \n\t"
7678        "adc r22, r1 \n\t"
7679        "adc r23, r25 \n\t"
7680        "ld r0, z \n\t"
7681        "add r24, r0 \n\t"
7682        "adc r22, r25 \n\t"
7683        "adc r23, r25 \n\t"
7684        "st z+, r24 \n\t"
7685
7686        "ld r15, y+ \n\t"
7687        "ldi r24, 0 \n\t"
7688        "mul r10, r15 \n\t"
7689        "add r22, r0 \n\t"
7690        "adc r23, r1 \n\t"
7691        "adc r24, r25 \n\t"
7692        "mul r11, r14 \n\t"
7693        "add r22, r0 \n\t"
7694        "adc r23, r1 \n\t"
7695        "adc r24, r25 \n\t"
7696        "mul r2, r13 \n\t"
7697        "add r22, r0 \n\t"
7698        "adc r23, r1 \n\t"
7699        "adc r24, r25 \n\t"
7700        "mul r3, r12 \n\t"
7701        "add r22, r0 \n\t"
7702        "adc r23, r1 \n\t"
7703        "adc r24, r25 \n\t"
7704        "mul r4, r21 \n\t"
7705        "add r22, r0 \n\t"
7706        "adc r23, r1 \n\t"
7707        "adc r24, r25 \n\t"
7708        "mul r5, r20 \n\t"
7709        "add r22, r0 \n\t"
7710        "adc r23, r1 \n\t"
7711        "adc r24, r25 \n\t"
7712        "mul r6, r19 \n\t"
7713        "add r22, r0 \n\t"
7714        "adc r23, r1 \n\t"
7715        "adc r24, r25 \n\t"
7716        "mul r7, r18 \n\t"
7717        "add r22, r0 \n\t"
7718        "adc r23, r1 \n\t"
7719        "adc r24, r25 \n\t"
7720        "mul r8, r17 \n\t"
7721        "add r22, r0 \n\t"
7722        "adc r23, r1 \n\t"
7723        "adc r24, r25 \n\t"
7724        "mul r9, r16 \n\t"
7725        "add r22, r0 \n\t"
7726        "adc r23, r1 \n\t"
7727        "adc r24, r25 \n\t"
7728        "ld r0, z \n\t"
7729        "add r22, r0 \n\t"
7730        "adc r23, r25 \n\t"
7731        "adc r24, r25 \n\t"
7732        "st z+, r22 \n\t"
7733
7734        "ld r16, y+ \n\t"
7735        "ldi r22, 0 \n\t"
7736        "mul r10, r16 \n\t"
7737        "add r23, r0 \n\t"
7738        "adc r24, r1 \n\t"
7739        "adc r22, r25 \n\t"
7740        "mul r11, r15 \n\t"
7741        "add r23, r0 \n\t"
7742        "adc r24, r1 \n\t"
7743        "adc r22, r25 \n\t"
7744        "mul r2, r14 \n\t"
7745        "add r23, r0 \n\t"
7746        "adc r24, r1 \n\t"
7747        "adc r22, r25 \n\t"
7748        "mul r3, r13 \n\t"
7749        "add r23, r0 \n\t"
7750        "adc r24, r1 \n\t"
7751        "adc r22, r25 \n\t"
7752        "mul r4, r12 \n\t"
7753        "add r23, r0 \n\t"
7754        "adc r24, r1 \n\t"
7755        "adc r22, r25 \n\t"
7756        "mul r5, r21 \n\t"
7757        "add r23, r0 \n\t"
7758        "adc r24, r1 \n\t"
7759        "adc r22, r25 \n\t"
7760        "mul r6, r20 \n\t"
7761        "add r23, r0 \n\t"
7762        "adc r24, r1 \n\t"
7763        "adc r22, r25 \n\t"
7764        "mul r7, r19 \n\t"
7765        "add r23, r0 \n\t"
7766        "adc r24, r1 \n\t"
7767        "adc r22, r25 \n\t"
7768        "mul r8, r18 \n\t"
7769        "add r23, r0 \n\t"
7770        "adc r24, r1 \n\t"
7771        "adc r22, r25 \n\t"
7772        "mul r9, r17 \n\t"
7773        "add r23, r0 \n\t"
7774        "adc r24, r1 \n\t"
7775        "adc r22, r25 \n\t"
7776        "ld r0, z \n\t"
7777        "add r23, r0 \n\t"
7778        "adc r24, r25 \n\t"
7779        "adc r22, r25 \n\t"
7780        "st z+, r23 \n\t"
7781
7782        "ld r17, y+ \n\t"
7783        "ldi r23, 0 \n\t"
7784        "mul r10, r17 \n\t"
7785        "add r24, r0 \n\t"
7786        "adc r22, r1 \n\t"
7787        "adc r23, r25 \n\t"
7788        "mul r11, r16 \n\t"
7789        "add r24, r0 \n\t"
7790        "adc r22, r1 \n\t"
7791        "adc r23, r25 \n\t"
7792        "mul r2, r15 \n\t"
7793        "add r24, r0 \n\t"
7794        "adc r22, r1 \n\t"
7795        "adc r23, r25 \n\t"
7796        "mul r3, r14 \n\t"
7797        "add r24, r0 \n\t"
7798        "adc r22, r1 \n\t"
7799        "adc r23, r25 \n\t"
7800        "mul r4, r13 \n\t"
7801        "add r24, r0 \n\t"
7802        "adc r22, r1 \n\t"
7803        "adc r23, r25 \n\t"
7804        "mul r5, r12 \n\t"
7805        "add r24, r0 \n\t"
7806        "adc r22, r1 \n\t"
7807        "adc r23, r25 \n\t"
7808        "mul r6, r21 \n\t"
7809        "add r24, r0 \n\t"
7810        "adc r22, r1 \n\t"
7811        "adc r23, r25 \n\t"
7812        "mul r7, r20 \n\t"
7813        "add r24, r0 \n\t"
7814        "adc r22, r1 \n\t"
7815        "adc r23, r25 \n\t"
7816        "mul r8, r19 \n\t"
7817        "add r24, r0 \n\t"
7818        "adc r22, r1 \n\t"
7819        "adc r23, r25 \n\t"
7820        "mul r9, r18 \n\t"
7821        "add r24, r0 \n\t"
7822        "adc r22, r1 \n\t"
7823        "adc r23, r25 \n\t"
7824        "ld r0, z \n\t"
7825        "add r24, r0 \n\t"
7826        "adc r22, r25 \n\t"
7827        "adc r23, r25 \n\t"
7828        "st z+, r24 \n\t"
7829
7830        "ld r18, y+ \n\t"
7831        "ldi r24, 0 \n\t"
7832        "mul r10, r18 \n\t"
7833        "add r22, r0 \n\t"
7834        "adc r23, r1 \n\t"
7835        "adc r24, r25 \n\t"
7836        "mul r11, r17 \n\t"
7837        "add r22, r0 \n\t"
7838        "adc r23, r1 \n\t"
7839        "adc r24, r25 \n\t"
7840        "mul r2, r16 \n\t"
7841        "add r22, r0 \n\t"
7842        "adc r23, r1 \n\t"
7843        "adc r24, r25 \n\t"
7844        "mul r3, r15 \n\t"
7845        "add r22, r0 \n\t"
7846        "adc r23, r1 \n\t"
7847        "adc r24, r25 \n\t"
7848        "mul r4, r14 \n\t"
7849        "add r22, r0 \n\t"
7850        "adc r23, r1 \n\t"
7851        "adc r24, r25 \n\t"
7852        "mul r5, r13 \n\t"
7853        "add r22, r0 \n\t"
7854        "adc r23, r1 \n\t"
7855        "adc r24, r25 \n\t"
7856        "mul r6, r12 \n\t"
7857        "add r22, r0 \n\t"
7858        "adc r23, r1 \n\t"
7859        "adc r24, r25 \n\t"
7860        "mul r7, r21 \n\t"
7861        "add r22, r0 \n\t"
7862        "adc r23, r1 \n\t"
7863        "adc r24, r25 \n\t"
7864        "mul r8, r20 \n\t"
7865        "add r22, r0 \n\t"
7866        "adc r23, r1 \n\t"
7867        "adc r24, r25 \n\t"
7868        "mul r9, r19 \n\t"
7869        "add r22, r0 \n\t"
7870        "adc r23, r1 \n\t"
7871        "adc r24, r25 \n\t"
7872        "ld r0, z \n\t"
7873        "add r22, r0 \n\t"
7874        "adc r23, r25 \n\t"
7875        "adc r24, r25 \n\t"
7876        "st z+, r22 \n\t"
7877
7878        "ld r19, y+ \n\t"
7879        "ldi r22, 0 \n\t"
7880        "mul r10, r19 \n\t"
7881        "add r23, r0 \n\t"
7882        "adc r24, r1 \n\t"
7883        "adc r22, r25 \n\t"
7884        "mul r11, r18 \n\t"
7885        "add r23, r0 \n\t"
7886        "adc r24, r1 \n\t"
7887        "adc r22, r25 \n\t"
7888        "mul r2, r17 \n\t"
7889        "add r23, r0 \n\t"
7890        "adc r24, r1 \n\t"
7891        "adc r22, r25 \n\t"
7892        "mul r3, r16 \n\t"
7893        "add r23, r0 \n\t"
7894        "adc r24, r1 \n\t"
7895        "adc r22, r25 \n\t"
7896        "mul r4, r15 \n\t"
7897        "add r23, r0 \n\t"
7898        "adc r24, r1 \n\t"
7899        "adc r22, r25 \n\t"
7900        "mul r5, r14 \n\t"
7901        "add r23, r0 \n\t"
7902        "adc r24, r1 \n\t"
7903        "adc r22, r25 \n\t"
7904        "mul r6, r13 \n\t"
7905        "add r23, r0 \n\t"
7906        "adc r24, r1 \n\t"
7907        "adc r22, r25 \n\t"
7908        "mul r7, r12 \n\t"
7909        "add r23, r0 \n\t"
7910        "adc r24, r1 \n\t"
7911        "adc r22, r25 \n\t"
7912        "mul r8, r21 \n\t"
7913        "add r23, r0 \n\t"
7914        "adc r24, r1 \n\t"
7915        "adc r22, r25 \n\t"
7916        "mul r9, r20 \n\t"
7917        "add r23, r0 \n\t"
7918        "adc r24, r1 \n\t"
7919        "adc r22, r25 \n\t"
7920        "ld r0, z \n\t"
7921        "add r23, r0 \n\t"
7922        "adc r24, r25 \n\t"
7923        "adc r22, r25 \n\t"
7924        "st z+, r23 \n\t"
7925
7926        "ld r20, y+ \n\t"
7927        "ldi r23, 0 \n\t"
7928        "mul r10, r20 \n\t"
7929        "add r24, r0 \n\t"
7930        "adc r22, r1 \n\t"
7931        "adc r23, r25 \n\t"
7932        "mul r11, r19 \n\t"
7933        "add r24, r0 \n\t"
7934        "adc r22, r1 \n\t"
7935        "adc r23, r25 \n\t"
7936        "mul r2, r18 \n\t"
7937        "add r24, r0 \n\t"
7938        "adc r22, r1 \n\t"
7939        "adc r23, r25 \n\t"
7940        "mul r3, r17 \n\t"
7941        "add r24, r0 \n\t"
7942        "adc r22, r1 \n\t"
7943        "adc r23, r25 \n\t"
7944        "mul r4, r16 \n\t"
7945        "add r24, r0 \n\t"
7946        "adc r22, r1 \n\t"
7947        "adc r23, r25 \n\t"
7948        "mul r5, r15 \n\t"
7949        "add r24, r0 \n\t"
7950        "adc r22, r1 \n\t"
7951        "adc r23, r25 \n\t"
7952        "mul r6, r14 \n\t"
7953        "add r24, r0 \n\t"
7954        "adc r22, r1 \n\t"
7955        "adc r23, r25 \n\t"
7956        "mul r7, r13 \n\t"
7957        "add r24, r0 \n\t"
7958        "adc r22, r1 \n\t"
7959        "adc r23, r25 \n\t"
7960        "mul r8, r12 \n\t"
7961        "add r24, r0 \n\t"
7962        "adc r22, r1 \n\t"
7963        "adc r23, r25 \n\t"
7964        "mul r9, r21 \n\t"
7965        "add r24, r0 \n\t"
7966        "adc r22, r1 \n\t"
7967        "adc r23, r25 \n\t"
7968        "ld r0, z \n\t"
7969        "add r24, r0 \n\t"
7970        "adc r22, r25 \n\t"
7971        "adc r23, r25 \n\t"
7972        "st z+, r24 \n\t"
7973
7974        "ld r21, y+ \n\t"
7975        "ldi r24, 0 \n\t"
7976        "mul r10, r21 \n\t"
7977        "add r22, r0 \n\t"
7978        "adc r23, r1 \n\t"
7979        "adc r24, r25 \n\t"
7980        "mul r11, r20 \n\t"
7981        "add r22, r0 \n\t"
7982        "adc r23, r1 \n\t"
7983        "adc r24, r25 \n\t"
7984        "mul r2, r19 \n\t"
7985        "add r22, r0 \n\t"
7986        "adc r23, r1 \n\t"
7987        "adc r24, r25 \n\t"
7988        "mul r3, r18 \n\t"
7989        "add r22, r0 \n\t"
7990        "adc r23, r1 \n\t"
7991        "adc r24, r25 \n\t"
7992        "mul r4, r17 \n\t"
7993        "add r22, r0 \n\t"
7994        "adc r23, r1 \n\t"
7995        "adc r24, r25 \n\t"
7996        "mul r5, r16 \n\t"
7997        "add r22, r0 \n\t"
7998        "adc r23, r1 \n\t"
7999        "adc r24, r25 \n\t"
8000        "mul r6, r15 \n\t"
8001        "add r22, r0 \n\t"
8002        "adc r23, r1 \n\t"
8003        "adc r24, r25 \n\t"
8004        "mul r7, r14 \n\t"
8005        "add r22, r0 \n\t"
8006        "adc r23, r1 \n\t"
8007        "adc r24, r25 \n\t"
8008        "mul r8, r13 \n\t"
8009        "add r22, r0 \n\t"
8010        "adc r23, r1 \n\t"
8011        "adc r24, r25 \n\t"
8012        "mul r9, r12 \n\t"
8013        "add r22, r0 \n\t"
8014        "adc r23, r1 \n\t"
8015        "adc r24, r25 \n\t"
8016        "ld r0, z \n\t"
8017        "add r22, r0 \n\t"
8018        "adc r23, r25 \n\t"
8019        "adc r24, r25 \n\t"
8020        "st z+, r22 \n\t"
8021
8022        "ld r12, y+ \n\t"
8023        "ldi r22, 0 \n\t"
8024        "mul r10, r12 \n\t"
8025        "add r23, r0 \n\t"
8026        "adc r24, r1 \n\t"
8027        "adc r22, r25 \n\t"
8028        "mul r11, r21 \n\t"
8029        "add r23, r0 \n\t"
8030        "adc r24, r1 \n\t"
8031        "adc r22, r25 \n\t"
8032        "mul r2, r20 \n\t"
8033        "add r23, r0 \n\t"
8034        "adc r24, r1 \n\t"
8035        "adc r22, r25 \n\t"
8036        "mul r3, r19 \n\t"
8037        "add r23, r0 \n\t"
8038        "adc r24, r1 \n\t"
8039        "adc r22, r25 \n\t"
8040        "mul r4, r18 \n\t"
8041        "add r23, r0 \n\t"
8042        "adc r24, r1 \n\t"
8043        "adc r22, r25 \n\t"
8044        "mul r5, r17 \n\t"
8045        "add r23, r0 \n\t"
8046        "adc r24, r1 \n\t"
8047        "adc r22, r25 \n\t"
8048        "mul r6, r16 \n\t"
8049        "add r23, r0 \n\t"
8050        "adc r24, r1 \n\t"
8051        "adc r22, r25 \n\t"
8052        "mul r7, r15 \n\t"
8053        "add r23, r0 \n\t"
8054        "adc r24, r1 \n\t"
8055        "adc r22, r25 \n\t"
8056        "mul r8, r14 \n\t"
8057        "add r23, r0 \n\t"
8058        "adc r24, r1 \n\t"
8059        "adc r22, r25 \n\t"
8060        "mul r9, r13 \n\t"
8061        "add r23, r0 \n\t"
8062        "adc r24, r1 \n\t"
8063        "adc r22, r25 \n\t"
8064        "ld r0, z \n\t"
8065        "add r23, r0 \n\t"
8066        "adc r24, r25 \n\t"
8067        "adc r22, r25 \n\t"
8068        "st z+, r23 \n\t"
8069
8070        "ld r13, y+ \n\t"
8071        "ldi r23, 0 \n\t"
8072        "mul r10, r13 \n\t"
8073        "add r24, r0 \n\t"
8074        "adc r22, r1 \n\t"
8075        "adc r23, r25 \n\t"
8076        "mul r11, r12 \n\t"
8077        "add r24, r0 \n\t"
8078        "adc r22, r1 \n\t"
8079        "adc r23, r25 \n\t"
8080        "mul r2, r21 \n\t"
8081        "add r24, r0 \n\t"
8082        "adc r22, r1 \n\t"
8083        "adc r23, r25 \n\t"
8084        "mul r3, r20 \n\t"
8085        "add r24, r0 \n\t"
8086        "adc r22, r1 \n\t"
8087        "adc r23, r25 \n\t"
8088        "mul r4, r19 \n\t"
8089        "add r24, r0 \n\t"
8090        "adc r22, r1 \n\t"
8091        "adc r23, r25 \n\t"
8092        "mul r5, r18 \n\t"
8093        "add r24, r0 \n\t"
8094        "adc r22, r1 \n\t"
8095        "adc r23, r25 \n\t"
8096        "mul r6, r17 \n\t"
8097        "add r24, r0 \n\t"
8098        "adc r22, r1 \n\t"
8099        "adc r23, r25 \n\t"
8100        "mul r7, r16 \n\t"
8101        "add r24, r0 \n\t"
8102        "adc r22, r1 \n\t"
8103        "adc r23, r25 \n\t"
8104        "mul r8, r15 \n\t"
8105        "add r24, r0 \n\t"
8106        "adc r22, r1 \n\t"
8107        "adc r23, r25 \n\t"
8108        "mul r9, r14 \n\t"
8109        "add r24, r0 \n\t"
8110        "adc r22, r1 \n\t"
8111        "adc r23, r25 \n\t"
8112        "ld r0, z \n\t"
8113        "add r24, r0 \n\t"
8114        "adc r22, r25 \n\t"
8115        "adc r23, r25 \n\t"
8116        "st z+, r24 \n\t"
8117
8118        "ld r14, y+ \n\t"
8119        "ldi r24, 0 \n\t"
8120        "mul r10, r14 \n\t"
8121        "add r22, r0 \n\t"
8122        "adc r23, r1 \n\t"
8123        "adc r24, r25 \n\t"
8124        "mul r11, r13 \n\t"
8125        "add r22, r0 \n\t"
8126        "adc r23, r1 \n\t"
8127        "adc r24, r25 \n\t"
8128        "mul r2, r12 \n\t"
8129        "add r22, r0 \n\t"
8130        "adc r23, r1 \n\t"
8131        "adc r24, r25 \n\t"
8132        "mul r3, r21 \n\t"
8133        "add r22, r0 \n\t"
8134        "adc r23, r1 \n\t"
8135        "adc r24, r25 \n\t"
8136        "mul r4, r20 \n\t"
8137        "add r22, r0 \n\t"
8138        "adc r23, r1 \n\t"
8139        "adc r24, r25 \n\t"
8140        "mul r5, r19 \n\t"
8141        "add r22, r0 \n\t"
8142        "adc r23, r1 \n\t"
8143        "adc r24, r25 \n\t"
8144        "mul r6, r18 \n\t"
8145        "add r22, r0 \n\t"
8146        "adc r23, r1 \n\t"
8147        "adc r24, r25 \n\t"
8148        "mul r7, r17 \n\t"
8149        "add r22, r0 \n\t"
8150        "adc r23, r1 \n\t"
8151        "adc r24, r25 \n\t"
8152        "mul r8, r16 \n\t"
8153        "add r22, r0 \n\t"
8154        "adc r23, r1 \n\t"
8155        "adc r24, r25 \n\t"
8156        "mul r9, r15 \n\t"
8157        "add r22, r0 \n\t"
8158        "adc r23, r1 \n\t"
8159        "adc r24, r25 \n\t"
8160        "ld r0, z \n\t"
8161        "add r22, r0 \n\t"
8162        "adc r23, r25 \n\t"
8163        "adc r24, r25 \n\t"
8164        "st z+, r22 \n\t"
8165
8166        "ld r15, y+ \n\t"
8167        "ldi r22, 0 \n\t"
8168        "mul r10, r15 \n\t"
8169        "add r23, r0 \n\t"
8170        "adc r24, r1 \n\t"
8171        "adc r22, r25 \n\t"
8172        "mul r11, r14 \n\t"
8173        "add r23, r0 \n\t"
8174        "adc r24, r1 \n\t"
8175        "adc r22, r25 \n\t"
8176        "mul r2, r13 \n\t"
8177        "add r23, r0 \n\t"
8178        "adc r24, r1 \n\t"
8179        "adc r22, r25 \n\t"
8180        "mul r3, r12 \n\t"
8181        "add r23, r0 \n\t"
8182        "adc r24, r1 \n\t"
8183        "adc r22, r25 \n\t"
8184        "mul r4, r21 \n\t"
8185        "add r23, r0 \n\t"
8186        "adc r24, r1 \n\t"
8187        "adc r22, r25 \n\t"
8188        "mul r5, r20 \n\t"
8189        "add r23, r0 \n\t"
8190        "adc r24, r1 \n\t"
8191        "adc r22, r25 \n\t"
8192        "mul r6, r19 \n\t"
8193        "add r23, r0 \n\t"
8194        "adc r24, r1 \n\t"
8195        "adc r22, r25 \n\t"
8196        "mul r7, r18 \n\t"
8197        "add r23, r0 \n\t"
8198        "adc r24, r1 \n\t"
8199        "adc r22, r25 \n\t"
8200        "mul r8, r17 \n\t"
8201        "add r23, r0 \n\t"
8202        "adc r24, r1 \n\t"
8203        "adc r22, r25 \n\t"
8204        "mul r9, r16 \n\t"
8205        "add r23, r0 \n\t"
8206        "adc r24, r1 \n\t"
8207        "adc r22, r25 \n\t"
8208        "ld r0, z \n\t"
8209        "add r23, r0 \n\t"
8210        "adc r24, r25 \n\t"
8211        "adc r22, r25 \n\t"
8212        "st z+, r23 \n\t"
8213
8214        "ld r16, y+ \n\t"
8215        "ldi r23, 0 \n\t"
8216        "mul r10, r16 \n\t"
8217        "add r24, r0 \n\t"
8218        "adc r22, r1 \n\t"
8219        "adc r23, r25 \n\t"
8220        "mul r11, r15 \n\t"
8221        "add r24, r0 \n\t"
8222        "adc r22, r1 \n\t"
8223        "adc r23, r25 \n\t"
8224        "mul r2, r14 \n\t"
8225        "add r24, r0 \n\t"
8226        "adc r22, r1 \n\t"
8227        "adc r23, r25 \n\t"
8228        "mul r3, r13 \n\t"
8229        "add r24, r0 \n\t"
8230        "adc r22, r1 \n\t"
8231        "adc r23, r25 \n\t"
8232        "mul r4, r12 \n\t"
8233        "add r24, r0 \n\t"
8234        "adc r22, r1 \n\t"
8235        "adc r23, r25 \n\t"
8236        "mul r5, r21 \n\t"
8237        "add r24, r0 \n\t"
8238        "adc r22, r1 \n\t"
8239        "adc r23, r25 \n\t"
8240        "mul r6, r20 \n\t"
8241        "add r24, r0 \n\t"
8242        "adc r22, r1 \n\t"
8243        "adc r23, r25 \n\t"
8244        "mul r7, r19 \n\t"
8245        "add r24, r0 \n\t"
8246        "adc r22, r1 \n\t"
8247        "adc r23, r25 \n\t"
8248        "mul r8, r18 \n\t"
8249        "add r24, r0 \n\t"
8250        "adc r22, r1 \n\t"
8251        "adc r23, r25 \n\t"
8252        "mul r9, r17 \n\t"
8253        "add r24, r0 \n\t"
8254        "adc r22, r1 \n\t"
8255        "adc r23, r25 \n\t"
8256        "ld r0, z \n\t"
8257        "add r24, r0 \n\t"
8258        "adc r22, r25 \n\t"
8259        "adc r23, r25 \n\t"
8260        "st z+, r24 \n\t"
8261
8262        "ld r17, y+ \n\t"
8263        "ldi r24, 0 \n\t"
8264        "mul r10, r17 \n\t"
8265        "add r22, r0 \n\t"
8266        "adc r23, r1 \n\t"
8267        "adc r24, r25 \n\t"
8268        "mul r11, r16 \n\t"
8269        "add r22, r0 \n\t"
8270        "adc r23, r1 \n\t"
8271        "adc r24, r25 \n\t"
8272        "mul r2, r15 \n\t"
8273        "add r22, r0 \n\t"
8274        "adc r23, r1 \n\t"
8275        "adc r24, r25 \n\t"
8276        "mul r3, r14 \n\t"
8277        "add r22, r0 \n\t"
8278        "adc r23, r1 \n\t"
8279        "adc r24, r25 \n\t"
8280        "mul r4, r13 \n\t"
8281        "add r22, r0 \n\t"
8282        "adc r23, r1 \n\t"
8283        "adc r24, r25 \n\t"
8284        "mul r5, r12 \n\t"
8285        "add r22, r0 \n\t"
8286        "adc r23, r1 \n\t"
8287        "adc r24, r25 \n\t"
8288        "mul r6, r21 \n\t"
8289        "add r22, r0 \n\t"
8290        "adc r23, r1 \n\t"
8291        "adc r24, r25 \n\t"
8292        "mul r7, r20 \n\t"
8293        "add r22, r0 \n\t"
8294        "adc r23, r1 \n\t"
8295        "adc r24, r25 \n\t"
8296        "mul r8, r19 \n\t"
8297        "add r22, r0 \n\t"
8298        "adc r23, r1 \n\t"
8299        "adc r24, r25 \n\t"
8300        "mul r9, r18 \n\t"
8301        "add r22, r0 \n\t"
8302        "adc r23, r1 \n\t"
8303        "adc r24, r25 \n\t"
8304        "ld r0, z \n\t"
8305        "add r22, r0 \n\t"
8306        "adc r23, r25 \n\t"
8307        "adc r24, r25 \n\t"
8308        "st z+, r22 \n\t"
8309
8310        "ld r18, y+ \n\t"
8311        "ldi r22, 0 \n\t"
8312        "mul r10, r18 \n\t"
8313        "add r23, r0 \n\t"
8314        "adc r24, r1 \n\t"
8315        "adc r22, r25 \n\t"
8316        "mul r11, r17 \n\t"
8317        "add r23, r0 \n\t"
8318        "adc r24, r1 \n\t"
8319        "adc r22, r25 \n\t"
8320        "mul r2, r16 \n\t"
8321        "add r23, r0 \n\t"
8322        "adc r24, r1 \n\t"
8323        "adc r22, r25 \n\t"
8324        "mul r3, r15 \n\t"
8325        "add r23, r0 \n\t"
8326        "adc r24, r1 \n\t"
8327        "adc r22, r25 \n\t"
8328        "mul r4, r14 \n\t"
8329        "add r23, r0 \n\t"
8330        "adc r24, r1 \n\t"
8331        "adc r22, r25 \n\t"
8332        "mul r5, r13 \n\t"
8333        "add r23, r0 \n\t"
8334        "adc r24, r1 \n\t"
8335        "adc r22, r25 \n\t"
8336        "mul r6, r12 \n\t"
8337        "add r23, r0 \n\t"
8338        "adc r24, r1 \n\t"
8339        "adc r22, r25 \n\t"
8340        "mul r7, r21 \n\t"
8341        "add r23, r0 \n\t"
8342        "adc r24, r1 \n\t"
8343        "adc r22, r25 \n\t"
8344        "mul r8, r20 \n\t"
8345        "add r23, r0 \n\t"
8346        "adc r24, r1 \n\t"
8347        "adc r22, r25 \n\t"
8348        "mul r9, r19 \n\t"
8349        "add r23, r0 \n\t"
8350        "adc r24, r1 \n\t"
8351        "adc r22, r25 \n\t"
8352        "ld r0, z \n\t"
8353        "add r23, r0 \n\t"
8354        "adc r24, r25 \n\t"
8355        "adc r22, r25 \n\t"
8356        "st z+, r23 \n\t"
8357
8358        "ld r19, y+ \n\t"
8359        "ldi r23, 0 \n\t"
8360        "mul r10, r19 \n\t"
8361        "add r24, r0 \n\t"
8362        "adc r22, r1 \n\t"
8363        "adc r23, r25 \n\t"
8364        "mul r11, r18 \n\t"
8365        "add r24, r0 \n\t"
8366        "adc r22, r1 \n\t"
8367        "adc r23, r25 \n\t"
8368        "mul r2, r17 \n\t"
8369        "add r24, r0 \n\t"
8370        "adc r22, r1 \n\t"
8371        "adc r23, r25 \n\t"
8372        "mul r3, r16 \n\t"
8373        "add r24, r0 \n\t"
8374        "adc r22, r1 \n\t"
8375        "adc r23, r25 \n\t"
8376        "mul r4, r15 \n\t"
8377        "add r24, r0 \n\t"
8378        "adc r22, r1 \n\t"
8379        "adc r23, r25 \n\t"
8380        "mul r5, r14 \n\t"
8381        "add r24, r0 \n\t"
8382        "adc r22, r1 \n\t"
8383        "adc r23, r25 \n\t"
8384        "mul r6, r13 \n\t"
8385        "add r24, r0 \n\t"
8386        "adc r22, r1 \n\t"
8387        "adc r23, r25 \n\t"
8388        "mul r7, r12 \n\t"
8389        "add r24, r0 \n\t"
8390        "adc r22, r1 \n\t"
8391        "adc r23, r25 \n\t"
8392        "mul r8, r21 \n\t"
8393        "add r24, r0 \n\t"
8394        "adc r22, r1 \n\t"
8395        "adc r23, r25 \n\t"
8396        "mul r9, r20 \n\t"
8397        "add r24, r0 \n\t"
8398        "adc r22, r1 \n\t"
8399        "adc r23, r25 \n\t"
8400        "ld r0, z \n\t"
8401        "add r24, r0 \n\t"
8402        "adc r22, r25 \n\t"
8403        "adc r23, r25 \n\t"
8404        "st z+, r24 \n\t"
8405
8406        "ldi r24, 0 \n\t"
8407        "mul r11, r19 \n\t"
8408        "add r22, r0 \n\t"
8409        "adc r23, r1 \n\t"
8410        "adc r24, r25 \n\t"
8411        "mul r2, r18 \n\t"
8412        "add r22, r0 \n\t"
8413        "adc r23, r1 \n\t"
8414        "adc r24, r25 \n\t"
8415        "mul r3, r17 \n\t"
8416        "add r22, r0 \n\t"
8417        "adc r23, r1 \n\t"
8418        "adc r24, r25 \n\t"
8419        "mul r4, r16 \n\t"
8420        "add r22, r0 \n\t"
8421        "adc r23, r1 \n\t"
8422        "adc r24, r25 \n\t"
8423        "mul r5, r15 \n\t"
8424        "add r22, r0 \n\t"
8425        "adc r23, r1 \n\t"
8426        "adc r24, r25 \n\t"
8427        "mul r6, r14 \n\t"
8428        "add r22, r0 \n\t"
8429        "adc r23, r1 \n\t"
8430        "adc r24, r25 \n\t"
8431        "mul r7, r13 \n\t"
8432        "add r22, r0 \n\t"
8433        "adc r23, r1 \n\t"
8434        "adc r24, r25 \n\t"
8435        "mul r8, r12 \n\t"
8436        "add r22, r0 \n\t"
8437        "adc r23, r1 \n\t"
8438        "adc r24, r25 \n\t"
8439        "mul r9, r21 \n\t"
8440        "add r22, r0 \n\t"
8441        "adc r23, r1 \n\t"
8442        "adc r24, r25 \n\t"
8443        "st z+, r22 \n\t"
8444
8445        "ldi r22, 0 \n\t"
8446        "mul r2, r19 \n\t"
8447        "add r23, r0 \n\t"
8448        "adc r24, r1 \n\t"
8449        "adc r22, r25 \n\t"
8450        "mul r3, r18 \n\t"
8451        "add r23, r0 \n\t"
8452        "adc r24, r1 \n\t"
8453        "adc r22, r25 \n\t"
8454        "mul r4, r17 \n\t"
8455        "add r23, r0 \n\t"
8456        "adc r24, r1 \n\t"
8457        "adc r22, r25 \n\t"
8458        "mul r5, r16 \n\t"
8459        "add r23, r0 \n\t"
8460        "adc r24, r1 \n\t"
8461        "adc r22, r25 \n\t"
8462        "mul r6, r15 \n\t"
8463        "add r23, r0 \n\t"
8464        "adc r24, r1 \n\t"
8465        "adc r22, r25 \n\t"
8466        "mul r7, r14 \n\t"
8467        "add r23, r0 \n\t"
8468        "adc r24, r1 \n\t"
8469        "adc r22, r25 \n\t"
8470        "mul r8, r13 \n\t"
8471        "add r23, r0 \n\t"
8472        "adc r24, r1 \n\t"
8473        "adc r22, r25 \n\t"
8474        "mul r9, r12 \n\t"
8475        "add r23, r0 \n\t"
8476        "adc r24, r1 \n\t"
8477        "adc r22, r25 \n\t"
8478        "st z+, r23 \n\t"
8479
8480        "ldi r23, 0 \n\t"
8481        "mul r3, r19 \n\t"
8482        "add r24, r0 \n\t"
8483        "adc r22, r1 \n\t"
8484        "adc r23, r25 \n\t"
8485        "mul r4, r18 \n\t"
8486        "add r24, r0 \n\t"
8487        "adc r22, r1 \n\t"
8488        "adc r23, r25 \n\t"
8489        "mul r5, r17 \n\t"
8490        "add r24, r0 \n\t"
8491        "adc r22, r1 \n\t"
8492        "adc r23, r25 \n\t"
8493        "mul r6, r16 \n\t"
8494        "add r24, r0 \n\t"
8495        "adc r22, r1 \n\t"
8496        "adc r23, r25 \n\t"
8497        "mul r7, r15 \n\t"
8498        "add r24, r0 \n\t"
8499        "adc r22, r1 \n\t"
8500        "adc r23, r25 \n\t"
8501        "mul r8, r14 \n\t"
8502        "add r24, r0 \n\t"
8503        "adc r22, r1 \n\t"
8504        "adc r23, r25 \n\t"
8505        "mul r9, r13 \n\t"
8506        "add r24, r0 \n\t"
8507        "adc r22, r1 \n\t"
8508        "adc r23, r25 \n\t"
8509        "st z+, r24 \n\t"
8510
8511        "ldi r24, 0 \n\t"
8512        "mul r4, r19 \n\t"
8513        "add r22, r0 \n\t"
8514        "adc r23, r1 \n\t"
8515        "adc r24, r25 \n\t"
8516        "mul r5, r18 \n\t"
8517        "add r22, r0 \n\t"
8518        "adc r23, r1 \n\t"
8519        "adc r24, r25 \n\t"
8520        "mul r6, r17 \n\t"
8521        "add r22, r0 \n\t"
8522        "adc r23, r1 \n\t"
8523        "adc r24, r25 \n\t"
8524        "mul r7, r16 \n\t"
8525        "add r22, r0 \n\t"
8526        "adc r23, r1 \n\t"
8527        "adc r24, r25 \n\t"
8528        "mul r8, r15 \n\t"
8529        "add r22, r0 \n\t"
8530        "adc r23, r1 \n\t"
8531        "adc r24, r25 \n\t"
8532        "mul r9, r14 \n\t"
8533        "add r22, r0 \n\t"
8534        "adc r23, r1 \n\t"
8535        "adc r24, r25 \n\t"
8536        "st z+, r22 \n\t"
8537
8538        "ldi r22, 0 \n\t"
8539        "mul r5, r19 \n\t"
8540        "add r23, r0 \n\t"
8541        "adc r24, r1 \n\t"
8542        "adc r22, r25 \n\t"
8543        "mul r6, r18 \n\t"
8544        "add r23, r0 \n\t"
8545        "adc r24, r1 \n\t"
8546        "adc r22, r25 \n\t"
8547        "mul r7, r17 \n\t"
8548        "add r23, r0 \n\t"
8549        "adc r24, r1 \n\t"
8550        "adc r22, r25 \n\t"
8551        "mul r8, r16 \n\t"
8552        "add r23, r0 \n\t"
8553        "adc r24, r1 \n\t"
8554        "adc r22, r25 \n\t"
8555        "mul r9, r15 \n\t"
8556        "add r23, r0 \n\t"
8557        "adc r24, r1 \n\t"
8558        "adc r22, r25 \n\t"
8559        "st z+, r23 \n\t"
8560
8561        "ldi r23, 0 \n\t"
8562        "mul r6, r19 \n\t"
8563        "add r24, r0 \n\t"
8564        "adc r22, r1 \n\t"
8565        "adc r23, r25 \n\t"
8566        "mul r7, r18 \n\t"
8567        "add r24, r0 \n\t"
8568        "adc r22, r1 \n\t"
8569        "adc r23, r25 \n\t"
8570        "mul r8, r17 \n\t"
8571        "add r24, r0 \n\t"
8572        "adc r22, r1 \n\t"
8573        "adc r23, r25 \n\t"
8574        "mul r9, r16 \n\t"
8575        "add r24, r0 \n\t"
8576        "adc r22, r1 \n\t"
8577        "adc r23, r25 \n\t"
8578        "st z+, r24 \n\t"
8579
8580        "ldi r24, 0 \n\t"
8581        "mul r7, r19 \n\t"
8582        "add r22, r0 \n\t"
8583        "adc r23, r1 \n\t"
8584        "adc r24, r25 \n\t"
8585        "mul r8, r18 \n\t"
8586        "add r22, r0 \n\t"
8587        "adc r23, r1 \n\t"
8588        "adc r24, r25 \n\t"
8589        "mul r9, r17 \n\t"
8590        "add r22, r0 \n\t"
8591        "adc r23, r1 \n\t"
8592        "adc r24, r25 \n\t"
8593        "st z+, r22 \n\t"
8594
8595        "ldi r22, 0 \n\t"
8596        "mul r8, r19 \n\t"
8597        "add r23, r0 \n\t"
8598        "adc r24, r1 \n\t"
8599        "adc r22, r25 \n\t"
8600        "mul r9, r18 \n\t"
8601        "add r23, r0 \n\t"
8602        "adc r24, r1 \n\t"
8603        "adc r22, r25 \n\t"
8604        "st z+, r23 \n\t"
8605
8606        "mul r9, r19 \n\t"
8607        "add r24, r0 \n\t"
8608        "adc r22, r1 \n\t"
8609        "st z+, r24 \n\t"
8610        "st z+, r22 \n\t"
8611        "eor r1, r1 \n\t"
8612        : "+x" (left), "+y" (right), "+z" (result)
8613        :
8614        : "r0", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10",
8615          "r11", "r12", "r13", "r14", "r15", "r16", "r17", "r18", "r19", "r20",
8616          "r21", "r22", "r23", "r24", "r25", "cc", "memory"
8617    );
8618}
8619#define asm_mult 1
8620#elif (uECC_BYTES == 32)
8621__attribute((noinline))
8622static void vli_mult(uint8_t *result, const uint8_t *left, const uint8_t *right) {
8623    __asm__ volatile (
8624        "adiw r30, 30 \n\t"
8625        "adiw r28, 30 \n\t"
8626        "ld r2, x+ \n\t"
8627        "ld r3, x+ \n\t"
8628        "ld r12, y+ \n\t"
8629        "ld r13, y+ \n\t"
8630        "ldi r25, 0 \n\t"
8631
8632        "ldi r23, 0 \n\t"
8633        "mul r2, r12 \n\t"
8634        "st z+, r0 \n\t"
8635        "mov r22, r1 \n\t"
8636
8637        "ldi r24, 0 \n\t"
8638        "mul r2, r13 \n\t"
8639        "add r22, r0 \n\t"
8640        "adc r23, r1 \n\t"
8641        "mul r3, r12 \n\t"
8642        "add r22, r0 \n\t"
8643        "adc r23, r1 \n\t"
8644        "adc r24, r25 \n\t"
8645        "st z+, r22 \n\t"
8646
8647        "mul r3, r13 \n\t"
8648        "add r23, r0 \n\t"
8649        "adc r24, r1 \n\t"
8650        "st z+, r23 \n\t"
8651        "st z+, r24 \n\t"
8652
8653        "sbiw r30, 14 \n\t"
8654        "sbiw r28, 12 \n\t"
8655        "ld r12, y+ \n\t"
8656        "ld r13, y+ \n\t"
8657        "ld r14, y+ \n\t"
8658        "ld r15, y+ \n\t"
8659        "ld r16, y+ \n\t"
8660        "ld r17, y+ \n\t"
8661        "ld r18, y+ \n\t"
8662        "ld r19, y+ \n\t"
8663        "ld r20, y+ \n\t"
8664        "ld r21, y+ \n\t"
8665        "ld r4, x+ \n\t"
8666        "ld r5, x+ \n\t"
8667        "ld r6, x+ \n\t"
8668        "ld r7, x+ \n\t"
8669        "ld r8, x+ \n\t"
8670        "ld r9, x+ \n\t"
8671        "ld r10, x+ \n\t"
8672        "ld r11, x+ \n\t"
8673
8674        "ldi r23, 0 \n\t"
8675        "mul r2, r12 \n\t"
8676        "st z+, r0 \n\t"
8677        "mov r22, r1 \n\t"
8678
8679        "ldi r24, 0 \n\t"
8680        "mul r2, r13 \n\t"
8681        "add r22, r0 \n\t"
8682        "adc r23, r1 \n\t"
8683        "mul r3, r12 \n\t"
8684        "add r22, r0 \n\t"
8685        "adc r23, r1 \n\t"
8686        "adc r24, r25 \n\t"
8687        "st z+, r22 \n\t"
8688
8689        "ldi r22, 0 \n\t"
8690        "mul r2, r14 \n\t"
8691        "add r23, r0 \n\t"
8692        "adc r24, r1 \n\t"
8693        "adc r22, r25 \n\t"
8694        "mul r3, r13 \n\t"
8695        "add r23, r0 \n\t"
8696        "adc r24, r1 \n\t"
8697        "adc r22, r25 \n\t"
8698        "mul r4, r12 \n\t"
8699        "add r23, r0 \n\t"
8700        "adc r24, r1 \n\t"
8701        "adc r22, r25 \n\t"
8702        "st z+, r23 \n\t"
8703
8704        "ldi r23, 0 \n\t"
8705        "mul r2, r15 \n\t"
8706        "add r24, r0 \n\t"
8707        "adc r22, r1 \n\t"
8708        "adc r23, r25 \n\t"
8709        "mul r3, r14 \n\t"
8710        "add r24, r0 \n\t"
8711        "adc r22, r1 \n\t"
8712        "adc r23, r25 \n\t"
8713        "mul r4, r13 \n\t"
8714        "add r24, r0 \n\t"
8715        "adc r22, r1 \n\t"
8716        "adc r23, r25 \n\t"
8717        "mul r5, r12 \n\t"
8718        "add r24, r0 \n\t"
8719        "adc r22, r1 \n\t"
8720        "adc r23, r25 \n\t"
8721        "st z+, r24 \n\t"
8722
8723        "ldi r24, 0 \n\t"
8724        "mul r2, r16 \n\t"
8725        "add r22, r0 \n\t"
8726        "adc r23, r1 \n\t"
8727        "adc r24, r25 \n\t"
8728        "mul r3, r15 \n\t"
8729        "add r22, r0 \n\t"
8730        "adc r23, r1 \n\t"
8731        "adc r24, r25 \n\t"
8732        "mul r4, r14 \n\t"
8733        "add r22, r0 \n\t"
8734        "adc r23, r1 \n\t"
8735        "adc r24, r25 \n\t"
8736        "mul r5, r13 \n\t"
8737        "add r22, r0 \n\t"
8738        "adc r23, r1 \n\t"
8739        "adc r24, r25 \n\t"
8740        "mul r6, r12 \n\t"
8741        "add r22, r0 \n\t"
8742        "adc r23, r1 \n\t"
8743        "adc r24, r25 \n\t"
8744        "st z+, r22 \n\t"
8745
8746        "ldi r22, 0 \n\t"
8747        "mul r2, r17 \n\t"
8748        "add r23, r0 \n\t"
8749        "adc r24, r1 \n\t"
8750        "adc r22, r25 \n\t"
8751        "mul r3, r16 \n\t"
8752        "add r23, r0 \n\t"
8753        "adc r24, r1 \n\t"
8754        "adc r22, r25 \n\t"
8755        "mul r4, r15 \n\t"
8756        "add r23, r0 \n\t"
8757        "adc r24, r1 \n\t"
8758        "adc r22, r25 \n\t"
8759        "mul r5, r14 \n\t"
8760        "add r23, r0 \n\t"
8761        "adc r24, r1 \n\t"
8762        "adc r22, r25 \n\t"
8763        "mul r6, r13 \n\t"
8764        "add r23, r0 \n\t"
8765        "adc r24, r1 \n\t"
8766        "adc r22, r25 \n\t"
8767        "mul r7, r12 \n\t"
8768        "add r23, r0 \n\t"
8769        "adc r24, r1 \n\t"
8770        "adc r22, r25 \n\t"
8771        "st z+, r23 \n\t"
8772
8773        "ldi r23, 0 \n\t"
8774        "mul r2, r18 \n\t"
8775        "add r24, r0 \n\t"
8776        "adc r22, r1 \n\t"
8777        "adc r23, r25 \n\t"
8778        "mul r3, r17 \n\t"
8779        "add r24, r0 \n\t"
8780        "adc r22, r1 \n\t"
8781        "adc r23, r25 \n\t"
8782        "mul r4, r16 \n\t"
8783        "add r24, r0 \n\t"
8784        "adc r22, r1 \n\t"
8785        "adc r23, r25 \n\t"
8786        "mul r5, r15 \n\t"
8787        "add r24, r0 \n\t"
8788        "adc r22, r1 \n\t"
8789        "adc r23, r25 \n\t"
8790        "mul r6, r14 \n\t"
8791        "add r24, r0 \n\t"
8792        "adc r22, r1 \n\t"
8793        "adc r23, r25 \n\t"
8794        "mul r7, r13 \n\t"
8795        "add r24, r0 \n\t"
8796        "adc r22, r1 \n\t"
8797        "adc r23, r25 \n\t"
8798        "mul r8, r12 \n\t"
8799        "add r24, r0 \n\t"
8800        "adc r22, r1 \n\t"
8801        "adc r23, r25 \n\t"
8802        "st z+, r24 \n\t"
8803
8804        "ldi r24, 0 \n\t"
8805        "mul r2, r19 \n\t"
8806        "add r22, r0 \n\t"
8807        "adc r23, r1 \n\t"
8808        "adc r24, r25 \n\t"
8809        "mul r3, r18 \n\t"
8810        "add r22, r0 \n\t"
8811        "adc r23, r1 \n\t"
8812        "adc r24, r25 \n\t"
8813        "mul r4, r17 \n\t"
8814        "add r22, r0 \n\t"
8815        "adc r23, r1 \n\t"
8816        "adc r24, r25 \n\t"
8817        "mul r5, r16 \n\t"
8818        "add r22, r0 \n\t"
8819        "adc r23, r1 \n\t"
8820        "adc r24, r25 \n\t"
8821        "mul r6, r15 \n\t"
8822        "add r22, r0 \n\t"
8823        "adc r23, r1 \n\t"
8824        "adc r24, r25 \n\t"
8825        "mul r7, r14 \n\t"
8826        "add r22, r0 \n\t"
8827        "adc r23, r1 \n\t"
8828        "adc r24, r25 \n\t"
8829        "mul r8, r13 \n\t"
8830        "add r22, r0 \n\t"
8831        "adc r23, r1 \n\t"
8832        "adc r24, r25 \n\t"
8833        "mul r9, r12 \n\t"
8834        "add r22, r0 \n\t"
8835        "adc r23, r1 \n\t"
8836        "adc r24, r25 \n\t"
8837        "st z+, r22 \n\t"
8838
8839        "ldi r22, 0 \n\t"
8840        "mul r2, r20 \n\t"
8841        "add r23, r0 \n\t"
8842        "adc r24, r1 \n\t"
8843        "adc r22, r25 \n\t"
8844        "mul r3, r19 \n\t"
8845        "add r23, r0 \n\t"
8846        "adc r24, r1 \n\t"
8847        "adc r22, r25 \n\t"
8848        "mul r4, r18 \n\t"
8849        "add r23, r0 \n\t"
8850        "adc r24, r1 \n\t"
8851        "adc r22, r25 \n\t"
8852        "mul r5, r17 \n\t"
8853        "add r23, r0 \n\t"
8854        "adc r24, r1 \n\t"
8855        "adc r22, r25 \n\t"
8856        "mul r6, r16 \n\t"
8857        "add r23, r0 \n\t"
8858        "adc r24, r1 \n\t"
8859        "adc r22, r25 \n\t"
8860        "mul r7, r15 \n\t"
8861        "add r23, r0 \n\t"
8862        "adc r24, r1 \n\t"
8863        "adc r22, r25 \n\t"
8864        "mul r8, r14 \n\t"
8865        "add r23, r0 \n\t"
8866        "adc r24, r1 \n\t"
8867        "adc r22, r25 \n\t"
8868        "mul r9, r13 \n\t"
8869        "add r23, r0 \n\t"
8870        "adc r24, r1 \n\t"
8871        "adc r22, r25 \n\t"
8872        "mul r10, r12 \n\t"
8873        "add r23, r0 \n\t"
8874        "adc r24, r1 \n\t"
8875        "adc r22, r25 \n\t"
8876        "st z+, r23 \n\t"
8877
8878        "ldi r23, 0 \n\t"
8879        "mul r2, r21 \n\t"
8880        "add r24, r0 \n\t"
8881        "adc r22, r1 \n\t"
8882        "adc r23, r25 \n\t"
8883        "mul r3, r20 \n\t"
8884        "add r24, r0 \n\t"
8885        "adc r22, r1 \n\t"
8886        "adc r23, r25 \n\t"
8887        "mul r4, r19 \n\t"
8888        "add r24, r0 \n\t"
8889        "adc r22, r1 \n\t"
8890        "adc r23, r25 \n\t"
8891        "mul r5, r18 \n\t"
8892        "add r24, r0 \n\t"
8893        "adc r22, r1 \n\t"
8894        "adc r23, r25 \n\t"
8895        "mul r6, r17 \n\t"
8896        "add r24, r0 \n\t"
8897        "adc r22, r1 \n\t"
8898        "adc r23, r25 \n\t"
8899        "mul r7, r16 \n\t"
8900        "add r24, r0 \n\t"
8901        "adc r22, r1 \n\t"
8902        "adc r23, r25 \n\t"
8903        "mul r8, r15 \n\t"
8904        "add r24, r0 \n\t"
8905        "adc r22, r1 \n\t"
8906        "adc r23, r25 \n\t"
8907        "mul r9, r14 \n\t"
8908        "add r24, r0 \n\t"
8909        "adc r22, r1 \n\t"
8910        "adc r23, r25 \n\t"
8911        "mul r10, r13 \n\t"
8912        "add r24, r0 \n\t"
8913        "adc r22, r1 \n\t"
8914        "adc r23, r25 \n\t"
8915        "mul r11, r12 \n\t"
8916        "add r24, r0 \n\t"
8917        "adc r22, r1 \n\t"
8918        "adc r23, r25 \n\t"
8919        "st z+, r24 \n\t"
8920
8921        "ld r2, x+ \n\t"
8922        "ldi r24, 0 \n\t"
8923        "mul r3, r21 \n\t"
8924        "add r22, r0 \n\t"
8925        "adc r23, r1 \n\t"
8926        "adc r24, r25 \n\t"
8927        "mul r4, r20 \n\t"
8928        "add r22, r0 \n\t"
8929        "adc r23, r1 \n\t"
8930        "adc r24, r25 \n\t"
8931        "mul r5, r19 \n\t"
8932        "add r22, r0 \n\t"
8933        "adc r23, r1 \n\t"
8934        "adc r24, r25 \n\t"
8935        "mul r6, r18 \n\t"
8936        "add r22, r0 \n\t"
8937        "adc r23, r1 \n\t"
8938        "adc r24, r25 \n\t"
8939        "mul r7, r17 \n\t"
8940        "add r22, r0 \n\t"
8941        "adc r23, r1 \n\t"
8942        "adc r24, r25 \n\t"
8943        "mul r8, r16 \n\t"
8944        "add r22, r0 \n\t"
8945        "adc r23, r1 \n\t"
8946        "adc r24, r25 \n\t"
8947        "mul r9, r15 \n\t"
8948        "add r22, r0 \n\t"
8949        "adc r23, r1 \n\t"
8950        "adc r24, r25 \n\t"
8951        "mul r10, r14 \n\t"
8952        "add r22, r0 \n\t"
8953        "adc r23, r1 \n\t"
8954        "adc r24, r25 \n\t"
8955        "mul r11, r13 \n\t"
8956        "add r22, r0 \n\t"
8957        "adc r23, r1 \n\t"
8958        "adc r24, r25 \n\t"
8959        "mul r2, r12 \n\t"
8960        "add r22, r0 \n\t"
8961        "adc r23, r1 \n\t"
8962        "adc r24, r25 \n\t"
8963        "ld r0, z \n\t"
8964        "add r22, r0 \n\t"
8965        "adc r23, r25 \n\t"
8966        "adc r24, r25 \n\t"
8967        "st z+, r22 \n\t"
8968
8969        "ld r3, x+ \n\t"
8970        "ldi r22, 0 \n\t"
8971        "mul r4, r21 \n\t"
8972        "add r23, r0 \n\t"
8973        "adc r24, r1 \n\t"
8974        "adc r22, r25 \n\t"
8975        "mul r5, r20 \n\t"
8976        "add r23, r0 \n\t"
8977        "adc r24, r1 \n\t"
8978        "adc r22, r25 \n\t"
8979        "mul r6, r19 \n\t"
8980        "add r23, r0 \n\t"
8981        "adc r24, r1 \n\t"
8982        "adc r22, r25 \n\t"
8983        "mul r7, r18 \n\t"
8984        "add r23, r0 \n\t"
8985        "adc r24, r1 \n\t"
8986        "adc r22, r25 \n\t"
8987        "mul r8, r17 \n\t"
8988        "add r23, r0 \n\t"
8989        "adc r24, r1 \n\t"
8990        "adc r22, r25 \n\t"
8991        "mul r9, r16 \n\t"
8992        "add r23, r0 \n\t"
8993        "adc r24, r1 \n\t"
8994        "adc r22, r25 \n\t"
8995        "mul r10, r15 \n\t"
8996        "add r23, r0 \n\t"
8997        "adc r24, r1 \n\t"
8998        "adc r22, r25 \n\t"
8999        "mul r11, r14 \n\t"
9000        "add r23, r0 \n\t"
9001        "adc r24, r1 \n\t"
9002        "adc r22, r25 \n\t"
9003        "mul r2, r13 \n\t"
9004        "add r23, r0 \n\t"
9005        "adc r24, r1 \n\t"
9006        "adc r22, r25 \n\t"
9007        "mul r3, r12 \n\t"
9008        "add r23, r0 \n\t"
9009        "adc r24, r1 \n\t"
9010        "adc r22, r25 \n\t"
9011        "ld r0, z \n\t"
9012        "add r23, r0 \n\t"
9013        "adc r24, r25 \n\t"
9014        "adc r22, r25 \n\t"
9015        "st z+, r23 \n\t"
9016
9017        "ld r12, y+ \n\t"
9018        "ldi r23, 0 \n\t"
9019        "mul r4, r12 \n\t"
9020        "add r24, r0 \n\t"
9021        "adc r22, r1 \n\t"
9022        "adc r23, r25 \n\t"
9023        "mul r5, r21 \n\t"
9024        "add r24, r0 \n\t"
9025        "adc r22, r1 \n\t"
9026        "adc r23, r25 \n\t"
9027        "mul r6, r20 \n\t"
9028        "add r24, r0 \n\t"
9029        "adc r22, r1 \n\t"
9030        "adc r23, r25 \n\t"
9031        "mul r7, r19 \n\t"
9032        "add r24, r0 \n\t"
9033        "adc r22, r1 \n\t"
9034        "adc r23, r25 \n\t"
9035        "mul r8, r18 \n\t"
9036        "add r24, r0 \n\t"
9037        "adc r22, r1 \n\t"
9038        "adc r23, r25 \n\t"
9039        "mul r9, r17 \n\t"
9040        "add r24, r0 \n\t"
9041        "adc r22, r1 \n\t"
9042        "adc r23, r25 \n\t"
9043        "mul r10, r16 \n\t"
9044        "add r24, r0 \n\t"
9045        "adc r22, r1 \n\t"
9046        "adc r23, r25 \n\t"
9047        "mul r11, r15 \n\t"
9048        "add r24, r0 \n\t"
9049        "adc r22, r1 \n\t"
9050        "adc r23, r25 \n\t"
9051        "mul r2, r14 \n\t"
9052        "add r24, r0 \n\t"
9053        "adc r22, r1 \n\t"
9054        "adc r23, r25 \n\t"
9055        "mul r3, r13 \n\t"
9056        "add r24, r0 \n\t"
9057        "adc r22, r1 \n\t"
9058        "adc r23, r25 \n\t"
9059        "ld r0, z \n\t"
9060        "add r24, r0 \n\t"
9061        "adc r22, r25 \n\t"
9062        "adc r23, r25 \n\t"
9063        "st z+, r24 \n\t"
9064
9065        "ld r13, y+ \n\t"
9066        "ldi r24, 0 \n\t"
9067        "mul r4, r13 \n\t"
9068        "add r22, r0 \n\t"
9069        "adc r23, r1 \n\t"
9070        "adc r24, r25 \n\t"
9071        "mul r5, r12 \n\t"
9072        "add r22, r0 \n\t"
9073        "adc r23, r1 \n\t"
9074        "adc r24, r25 \n\t"
9075        "mul r6, r21 \n\t"
9076        "add r22, r0 \n\t"
9077        "adc r23, r1 \n\t"
9078        "adc r24, r25 \n\t"
9079        "mul r7, r20 \n\t"
9080        "add r22, r0 \n\t"
9081        "adc r23, r1 \n\t"
9082        "adc r24, r25 \n\t"
9083        "mul r8, r19 \n\t"
9084        "add r22, r0 \n\t"
9085        "adc r23, r1 \n\t"
9086        "adc r24, r25 \n\t"
9087        "mul r9, r18 \n\t"
9088        "add r22, r0 \n\t"
9089        "adc r23, r1 \n\t"
9090        "adc r24, r25 \n\t"
9091        "mul r10, r17 \n\t"
9092        "add r22, r0 \n\t"
9093        "adc r23, r1 \n\t"
9094        "adc r24, r25 \n\t"
9095        "mul r11, r16 \n\t"
9096        "add r22, r0 \n\t"
9097        "adc r23, r1 \n\t"
9098        "adc r24, r25 \n\t"
9099        "mul r2, r15 \n\t"
9100        "add r22, r0 \n\t"
9101        "adc r23, r1 \n\t"
9102        "adc r24, r25 \n\t"
9103        "mul r3, r14 \n\t"
9104        "add r22, r0 \n\t"
9105        "adc r23, r1 \n\t"
9106        "adc r24, r25 \n\t"
9107        "ld r0, z \n\t"
9108        "add r22, r0 \n\t"
9109        "adc r23, r25 \n\t"
9110        "adc r24, r25 \n\t"
9111        "st z+, r22 \n\t"
9112
9113        "ldi r22, 0 \n\t"
9114        "mul r5, r13 \n\t"
9115        "add r23, r0 \n\t"
9116        "adc r24, r1 \n\t"
9117        "adc r22, r25 \n\t"
9118        "mul r6, r12 \n\t"
9119        "add r23, r0 \n\t"
9120        "adc r24, r1 \n\t"
9121        "adc r22, r25 \n\t"
9122        "mul r7, r21 \n\t"
9123        "add r23, r0 \n\t"
9124        "adc r24, r1 \n\t"
9125        "adc r22, r25 \n\t"
9126        "mul r8, r20 \n\t"
9127        "add r23, r0 \n\t"
9128        "adc r24, r1 \n\t"
9129        "adc r22, r25 \n\t"
9130        "mul r9, r19 \n\t"
9131        "add r23, r0 \n\t"
9132        "adc r24, r1 \n\t"
9133        "adc r22, r25 \n\t"
9134        "mul r10, r18 \n\t"
9135        "add r23, r0 \n\t"
9136        "adc r24, r1 \n\t"
9137        "adc r22, r25 \n\t"
9138        "mul r11, r17 \n\t"
9139        "add r23, r0 \n\t"
9140        "adc r24, r1 \n\t"
9141        "adc r22, r25 \n\t"
9142        "mul r2, r16 \n\t"
9143        "add r23, r0 \n\t"
9144        "adc r24, r1 \n\t"
9145        "adc r22, r25 \n\t"
9146        "mul r3, r15 \n\t"
9147        "add r23, r0 \n\t"
9148        "adc r24, r1 \n\t"
9149        "adc r22, r25 \n\t"
9150        "st z+, r23 \n\t"
9151
9152        "ldi r23, 0 \n\t"
9153        "mul r6, r13 \n\t"
9154        "add r24, r0 \n\t"
9155        "adc r22, r1 \n\t"
9156        "adc r23, r25 \n\t"
9157        "mul r7, r12 \n\t"
9158        "add r24, r0 \n\t"
9159        "adc r22, r1 \n\t"
9160        "adc r23, r25 \n\t"
9161        "mul r8, r21 \n\t"
9162        "add r24, r0 \n\t"
9163        "adc r22, r1 \n\t"
9164        "adc r23, r25 \n\t"
9165        "mul r9, r20 \n\t"
9166        "add r24, r0 \n\t"
9167        "adc r22, r1 \n\t"
9168        "adc r23, r25 \n\t"
9169        "mul r10, r19 \n\t"
9170        "add r24, r0 \n\t"
9171        "adc r22, r1 \n\t"
9172        "adc r23, r25 \n\t"
9173        "mul r11, r18 \n\t"
9174        "add r24, r0 \n\t"
9175        "adc r22, r1 \n\t"
9176        "adc r23, r25 \n\t"
9177        "mul r2, r17 \n\t"
9178        "add r24, r0 \n\t"
9179        "adc r22, r1 \n\t"
9180        "adc r23, r25 \n\t"
9181        "mul r3, r16 \n\t"
9182        "add r24, r0 \n\t"
9183        "adc r22, r1 \n\t"
9184        "adc r23, r25 \n\t"
9185        "st z+, r24 \n\t"
9186
9187        "ldi r24, 0 \n\t"
9188        "mul r7, r13 \n\t"
9189        "add r22, r0 \n\t"
9190        "adc r23, r1 \n\t"
9191        "adc r24, r25 \n\t"
9192        "mul r8, r12 \n\t"
9193        "add r22, r0 \n\t"
9194        "adc r23, r1 \n\t"
9195        "adc r24, r25 \n\t"
9196        "mul r9, r21 \n\t"
9197        "add r22, r0 \n\t"
9198        "adc r23, r1 \n\t"
9199        "adc r24, r25 \n\t"
9200        "mul r10, r20 \n\t"
9201        "add r22, r0 \n\t"
9202        "adc r23, r1 \n\t"
9203        "adc r24, r25 \n\t"
9204        "mul r11, r19 \n\t"
9205        "add r22, r0 \n\t"
9206        "adc r23, r1 \n\t"
9207        "adc r24, r25 \n\t"
9208        "mul r2, r18 \n\t"
9209        "add r22, r0 \n\t"
9210        "adc r23, r1 \n\t"
9211        "adc r24, r25 \n\t"
9212        "mul r3, r17 \n\t"
9213        "add r22, r0 \n\t"
9214        "adc r23, r1 \n\t"
9215        "adc r24, r25 \n\t"
9216        "st z+, r22 \n\t"
9217
9218        "ldi r22, 0 \n\t"
9219        "mul r8, r13 \n\t"
9220        "add r23, r0 \n\t"
9221        "adc r24, r1 \n\t"
9222        "adc r22, r25 \n\t"
9223        "mul r9, r12 \n\t"
9224        "add r23, r0 \n\t"
9225        "adc r24, r1 \n\t"
9226        "adc r22, r25 \n\t"
9227        "mul r10, r21 \n\t"
9228        "add r23, r0 \n\t"
9229        "adc r24, r1 \n\t"
9230        "adc r22, r25 \n\t"
9231        "mul r11, r20 \n\t"
9232        "add r23, r0 \n\t"
9233        "adc r24, r1 \n\t"
9234        "adc r22, r25 \n\t"
9235        "mul r2, r19 \n\t"
9236        "add r23, r0 \n\t"
9237        "adc r24, r1 \n\t"
9238        "adc r22, r25 \n\t"
9239        "mul r3, r18 \n\t"
9240        "add r23, r0 \n\t"
9241        "adc r24, r1 \n\t"
9242        "adc r22, r25 \n\t"
9243        "st z+, r23 \n\t"
9244
9245        "ldi r23, 0 \n\t"
9246        "mul r9, r13 \n\t"
9247        "add r24, r0 \n\t"
9248        "adc r22, r1 \n\t"
9249        "adc r23, r25 \n\t"
9250        "mul r10, r12 \n\t"
9251        "add r24, r0 \n\t"
9252        "adc r22, r1 \n\t"
9253        "adc r23, r25 \n\t"
9254        "mul r11, r21 \n\t"
9255        "add r24, r0 \n\t"
9256        "adc r22, r1 \n\t"
9257        "adc r23, r25 \n\t"
9258        "mul r2, r20 \n\t"
9259        "add r24, r0 \n\t"
9260        "adc r22, r1 \n\t"
9261        "adc r23, r25 \n\t"
9262        "mul r3, r19 \n\t"
9263        "add r24, r0 \n\t"
9264        "adc r22, r1 \n\t"
9265        "adc r23, r25 \n\t"
9266        "st z+, r24 \n\t"
9267
9268        "ldi r24, 0 \n\t"
9269        "mul r10, r13 \n\t"
9270        "add r22, r0 \n\t"
9271        "adc r23, r1 \n\t"
9272        "adc r24, r25 \n\t"
9273        "mul r11, r12 \n\t"
9274        "add r22, r0 \n\t"
9275        "adc r23, r1 \n\t"
9276        "adc r24, r25 \n\t"
9277        "mul r2, r21 \n\t"
9278        "add r22, r0 \n\t"
9279        "adc r23, r1 \n\t"
9280        "adc r24, r25 \n\t"
9281        "mul r3, r20 \n\t"
9282        "add r22, r0 \n\t"
9283        "adc r23, r1 \n\t"
9284        "adc r24, r25 \n\t"
9285        "st z+, r22 \n\t"
9286
9287        "ldi r22, 0 \n\t"
9288        "mul r11, r13 \n\t"
9289        "add r23, r0 \n\t"
9290        "adc r24, r1 \n\t"
9291        "adc r22, r25 \n\t"
9292        "mul r2, r12 \n\t"
9293        "add r23, r0 \n\t"
9294        "adc r24, r1 \n\t"
9295        "adc r22, r25 \n\t"
9296        "mul r3, r21 \n\t"
9297        "add r23, r0 \n\t"
9298        "adc r24, r1 \n\t"
9299        "adc r22, r25 \n\t"
9300        "st z+, r23 \n\t"
9301
9302        "ldi r23, 0 \n\t"
9303        "mul r2, r13 \n\t"
9304        "add r24, r0 \n\t"
9305        "adc r22, r1 \n\t"
9306        "adc r23, r25 \n\t"
9307        "mul r3, r12 \n\t"
9308        "add r24, r0 \n\t"
9309        "adc r22, r1 \n\t"
9310        "adc r23, r25 \n\t"
9311        "st z+, r24 \n\t"
9312
9313        "mul r3, r13 \n\t"
9314        "add r22, r0 \n\t"
9315        "adc r23, r1 \n\t"
9316        "st z+, r22 \n\t"
9317        "st z+, r23 \n\t"
9318
9319        "sbiw r30, 34 \n\t"
9320        "sbiw r28, 22 \n\t"
9321        "sbiw r26, 12 \n\t"
9322        "ld r2, x+ \n\t"
9323        "ld r12, y+ \n\t"
9324        "ld r3, x+ \n\t"
9325        "ld r13, y+ \n\t"
9326        "ld r4, x+ \n\t"
9327        "ld r14, y+ \n\t"
9328        "ld r5, x+ \n\t"
9329        "ld r15, y+ \n\t"
9330        "ld r6, x+ \n\t"
9331        "ld r16, y+ \n\t"
9332        "ld r7, x+ \n\t"
9333        "ld r17, y+ \n\t"
9334        "ld r8, x+ \n\t"
9335        "ld r18, y+ \n\t"
9336        "ld r9, x+ \n\t"
9337        "ld r19, y+ \n\t"
9338        "ld r10, x+ \n\t"
9339        "ld r20, y+ \n\t"
9340        "ld r11, x+ \n\t"
9341        "ld r21, y+ \n\t"
9342
9343        "ldi r23, 0 \n\t"
9344        "mul r2, r12 \n\t"
9345        "st z+, r0 \n\t"
9346        "mov r22, r1 \n\t"
9347
9348        "ldi r24, 0 \n\t"
9349        "mul r2, r13 \n\t"
9350        "add r22, r0 \n\t"
9351        "adc r23, r1 \n\t"
9352        "mul r3, r12 \n\t"
9353        "add r22, r0 \n\t"
9354        "adc r23, r1 \n\t"
9355        "adc r24, r25 \n\t"
9356        "st z+, r22 \n\t"
9357
9358        "ldi r22, 0 \n\t"
9359        "mul r2, r14 \n\t"
9360        "add r23, r0 \n\t"
9361        "adc r24, r1 \n\t"
9362        "adc r22, r25 \n\t"
9363        "mul r3, r13 \n\t"
9364        "add r23, r0 \n\t"
9365        "adc r24, r1 \n\t"
9366        "adc r22, r25 \n\t"
9367        "mul r4, r12 \n\t"
9368        "add r23, r0 \n\t"
9369        "adc r24, r1 \n\t"
9370        "adc r22, r25 \n\t"
9371        "st z+, r23 \n\t"
9372
9373        "ldi r23, 0 \n\t"
9374        "mul r2, r15 \n\t"
9375        "add r24, r0 \n\t"
9376        "adc r22, r1 \n\t"
9377        "adc r23, r25 \n\t"
9378        "mul r3, r14 \n\t"
9379        "add r24, r0 \n\t"
9380        "adc r22, r1 \n\t"
9381        "adc r23, r25 \n\t"
9382        "mul r4, r13 \n\t"
9383        "add r24, r0 \n\t"
9384        "adc r22, r1 \n\t"
9385        "adc r23, r25 \n\t"
9386        "mul r5, r12 \n\t"
9387        "add r24, r0 \n\t"
9388        "adc r22, r1 \n\t"
9389        "adc r23, r25 \n\t"
9390        "st z+, r24 \n\t"
9391
9392        "ldi r24, 0 \n\t"
9393        "mul r2, r16 \n\t"
9394        "add r22, r0 \n\t"
9395        "adc r23, r1 \n\t"
9396        "adc r24, r25 \n\t"
9397        "mul r3, r15 \n\t"
9398        "add r22, r0 \n\t"
9399        "adc r23, r1 \n\t"
9400        "adc r24, r25 \n\t"
9401        "mul r4, r14 \n\t"
9402        "add r22, r0 \n\t"
9403        "adc r23, r1 \n\t"
9404        "adc r24, r25 \n\t"
9405        "mul r5, r13 \n\t"
9406        "add r22, r0 \n\t"
9407        "adc r23, r1 \n\t"
9408        "adc r24, r25 \n\t"
9409        "mul r6, r12 \n\t"
9410        "add r22, r0 \n\t"
9411        "adc r23, r1 \n\t"
9412        "adc r24, r25 \n\t"
9413        "st z+, r22 \n\t"
9414
9415        "ldi r22, 0 \n\t"
9416        "mul r2, r17 \n\t"
9417        "add r23, r0 \n\t"
9418        "adc r24, r1 \n\t"
9419        "adc r22, r25 \n\t"
9420        "mul r3, r16 \n\t"
9421        "add r23, r0 \n\t"
9422        "adc r24, r1 \n\t"
9423        "adc r22, r25 \n\t"
9424        "mul r4, r15 \n\t"
9425        "add r23, r0 \n\t"
9426        "adc r24, r1 \n\t"
9427        "adc r22, r25 \n\t"
9428        "mul r5, r14 \n\t"
9429        "add r23, r0 \n\t"
9430        "adc r24, r1 \n\t"
9431        "adc r22, r25 \n\t"
9432        "mul r6, r13 \n\t"
9433        "add r23, r0 \n\t"
9434        "adc r24, r1 \n\t"
9435        "adc r22, r25 \n\t"
9436        "mul r7, r12 \n\t"
9437        "add r23, r0 \n\t"
9438        "adc r24, r1 \n\t"
9439        "adc r22, r25 \n\t"
9440        "st z+, r23 \n\t"
9441
9442        "ldi r23, 0 \n\t"
9443        "mul r2, r18 \n\t"
9444        "add r24, r0 \n\t"
9445        "adc r22, r1 \n\t"
9446        "adc r23, r25 \n\t"
9447        "mul r3, r17 \n\t"
9448        "add r24, r0 \n\t"
9449        "adc r22, r1 \n\t"
9450        "adc r23, r25 \n\t"
9451        "mul r4, r16 \n\t"
9452        "add r24, r0 \n\t"
9453        "adc r22, r1 \n\t"
9454        "adc r23, r25 \n\t"
9455        "mul r5, r15 \n\t"
9456        "add r24, r0 \n\t"
9457        "adc r22, r1 \n\t"
9458        "adc r23, r25 \n\t"
9459        "mul r6, r14 \n\t"
9460        "add r24, r0 \n\t"
9461        "adc r22, r1 \n\t"
9462        "adc r23, r25 \n\t"
9463        "mul r7, r13 \n\t"
9464        "add r24, r0 \n\t"
9465        "adc r22, r1 \n\t"
9466        "adc r23, r25 \n\t"
9467        "mul r8, r12 \n\t"
9468        "add r24, r0 \n\t"
9469        "adc r22, r1 \n\t"
9470        "adc r23, r25 \n\t"
9471        "st z+, r24 \n\t"
9472
9473        "ldi r24, 0 \n\t"
9474        "mul r2, r19 \n\t"
9475        "add r22, r0 \n\t"
9476        "adc r23, r1 \n\t"
9477        "adc r24, r25 \n\t"
9478        "mul r3, r18 \n\t"
9479        "add r22, r0 \n\t"
9480        "adc r23, r1 \n\t"
9481        "adc r24, r25 \n\t"
9482        "mul r4, r17 \n\t"
9483        "add r22, r0 \n\t"
9484        "adc r23, r1 \n\t"
9485        "adc r24, r25 \n\t"
9486        "mul r5, r16 \n\t"
9487        "add r22, r0 \n\t"
9488        "adc r23, r1 \n\t"
9489        "adc r24, r25 \n\t"
9490        "mul r6, r15 \n\t"
9491        "add r22, r0 \n\t"
9492        "adc r23, r1 \n\t"
9493        "adc r24, r25 \n\t"
9494        "mul r7, r14 \n\t"
9495        "add r22, r0 \n\t"
9496        "adc r23, r1 \n\t"
9497        "adc r24, r25 \n\t"
9498        "mul r8, r13 \n\t"
9499        "add r22, r0 \n\t"
9500        "adc r23, r1 \n\t"
9501        "adc r24, r25 \n\t"
9502        "mul r9, r12 \n\t"
9503        "add r22, r0 \n\t"
9504        "adc r23, r1 \n\t"
9505        "adc r24, r25 \n\t"
9506        "st z+, r22 \n\t"
9507
9508        "ldi r22, 0 \n\t"
9509        "mul r2, r20 \n\t"
9510        "add r23, r0 \n\t"
9511        "adc r24, r1 \n\t"
9512        "adc r22, r25 \n\t"
9513        "mul r3, r19 \n\t"
9514        "add r23, r0 \n\t"
9515        "adc r24, r1 \n\t"
9516        "adc r22, r25 \n\t"
9517        "mul r4, r18 \n\t"
9518        "add r23, r0 \n\t"
9519        "adc r24, r1 \n\t"
9520        "adc r22, r25 \n\t"
9521        "mul r5, r17 \n\t"
9522        "add r23, r0 \n\t"
9523        "adc r24, r1 \n\t"
9524        "adc r22, r25 \n\t"
9525        "mul r6, r16 \n\t"
9526        "add r23, r0 \n\t"
9527        "adc r24, r1 \n\t"
9528        "adc r22, r25 \n\t"
9529        "mul r7, r15 \n\t"
9530        "add r23, r0 \n\t"
9531        "adc r24, r1 \n\t"
9532        "adc r22, r25 \n\t"
9533        "mul r8, r14 \n\t"
9534        "add r23, r0 \n\t"
9535        "adc r24, r1 \n\t"
9536        "adc r22, r25 \n\t"
9537        "mul r9, r13 \n\t"
9538        "add r23, r0 \n\t"
9539        "adc r24, r1 \n\t"
9540        "adc r22, r25 \n\t"
9541        "mul r10, r12 \n\t"
9542        "add r23, r0 \n\t"
9543        "adc r24, r1 \n\t"
9544        "adc r22, r25 \n\t"
9545        "st z+, r23 \n\t"
9546
9547        "ldi r23, 0 \n\t"
9548        "mul r2, r21 \n\t"
9549        "add r24, r0 \n\t"
9550        "adc r22, r1 \n\t"
9551        "adc r23, r25 \n\t"
9552        "mul r3, r20 \n\t"
9553        "add r24, r0 \n\t"
9554        "adc r22, r1 \n\t"
9555        "adc r23, r25 \n\t"
9556        "mul r4, r19 \n\t"
9557        "add r24, r0 \n\t"
9558        "adc r22, r1 \n\t"
9559        "adc r23, r25 \n\t"
9560        "mul r5, r18 \n\t"
9561        "add r24, r0 \n\t"
9562        "adc r22, r1 \n\t"
9563        "adc r23, r25 \n\t"
9564        "mul r6, r17 \n\t"
9565        "add r24, r0 \n\t"
9566        "adc r22, r1 \n\t"
9567        "adc r23, r25 \n\t"
9568        "mul r7, r16 \n\t"
9569        "add r24, r0 \n\t"
9570        "adc r22, r1 \n\t"
9571        "adc r23, r25 \n\t"
9572        "mul r8, r15 \n\t"
9573        "add r24, r0 \n\t"
9574        "adc r22, r1 \n\t"
9575        "adc r23, r25 \n\t"
9576        "mul r9, r14 \n\t"
9577        "add r24, r0 \n\t"
9578        "adc r22, r1 \n\t"
9579        "adc r23, r25 \n\t"
9580        "mul r10, r13 \n\t"
9581        "add r24, r0 \n\t"
9582        "adc r22, r1 \n\t"
9583        "adc r23, r25 \n\t"
9584        "mul r11, r12 \n\t"
9585        "add r24, r0 \n\t"
9586        "adc r22, r1 \n\t"
9587        "adc r23, r25 \n\t"
9588        "st z+, r24 \n\t"
9589
9590        "ld r2, x+ \n\t"
9591        "ldi r24, 0 \n\t"
9592        "mul r3, r21 \n\t"
9593        "add r22, r0 \n\t"
9594        "adc r23, r1 \n\t"
9595        "adc r24, r25 \n\t"
9596        "mul r4, r20 \n\t"
9597        "add r22, r0 \n\t"
9598        "adc r23, r1 \n\t"
9599        "adc r24, r25 \n\t"
9600        "mul r5, r19 \n\t"
9601        "add r22, r0 \n\t"
9602        "adc r23, r1 \n\t"
9603        "adc r24, r25 \n\t"
9604        "mul r6, r18 \n\t"
9605        "add r22, r0 \n\t"
9606        "adc r23, r1 \n\t"
9607        "adc r24, r25 \n\t"
9608        "mul r7, r17 \n\t"
9609        "add r22, r0 \n\t"
9610        "adc r23, r1 \n\t"
9611        "adc r24, r25 \n\t"
9612        "mul r8, r16 \n\t"
9613        "add r22, r0 \n\t"
9614        "adc r23, r1 \n\t"
9615        "adc r24, r25 \n\t"
9616        "mul r9, r15 \n\t"
9617        "add r22, r0 \n\t"
9618        "adc r23, r1 \n\t"
9619        "adc r24, r25 \n\t"
9620        "mul r10, r14 \n\t"
9621        "add r22, r0 \n\t"
9622        "adc r23, r1 \n\t"
9623        "adc r24, r25 \n\t"
9624        "mul r11, r13 \n\t"
9625        "add r22, r0 \n\t"
9626        "adc r23, r1 \n\t"
9627        "adc r24, r25 \n\t"
9628        "mul r2, r12 \n\t"
9629        "add r22, r0 \n\t"
9630        "adc r23, r1 \n\t"
9631        "adc r24, r25 \n\t"
9632        "ld r0, z \n\t"
9633        "add r22, r0 \n\t"
9634        "adc r23, r25 \n\t"
9635        "adc r24, r25 \n\t"
9636        "st z+, r22 \n\t"
9637
9638        "ld r3, x+ \n\t"
9639        "ldi r22, 0 \n\t"
9640        "mul r4, r21 \n\t"
9641        "add r23, r0 \n\t"
9642        "adc r24, r1 \n\t"
9643        "adc r22, r25 \n\t"
9644        "mul r5, r20 \n\t"
9645        "add r23, r0 \n\t"
9646        "adc r24, r1 \n\t"
9647        "adc r22, r25 \n\t"
9648        "mul r6, r19 \n\t"
9649        "add r23, r0 \n\t"
9650        "adc r24, r1 \n\t"
9651        "adc r22, r25 \n\t"
9652        "mul r7, r18 \n\t"
9653        "add r23, r0 \n\t"
9654        "adc r24, r1 \n\t"
9655        "adc r22, r25 \n\t"
9656        "mul r8, r17 \n\t"
9657        "add r23, r0 \n\t"
9658        "adc r24, r1 \n\t"
9659        "adc r22, r25 \n\t"
9660        "mul r9, r16 \n\t"
9661        "add r23, r0 \n\t"
9662        "adc r24, r1 \n\t"
9663        "adc r22, r25 \n\t"
9664        "mul r10, r15 \n\t"
9665        "add r23, r0 \n\t"
9666        "adc r24, r1 \n\t"
9667        "adc r22, r25 \n\t"
9668        "mul r11, r14 \n\t"
9669        "add r23, r0 \n\t"
9670        "adc r24, r1 \n\t"
9671        "adc r22, r25 \n\t"
9672        "mul r2, r13 \n\t"
9673        "add r23, r0 \n\t"
9674        "adc r24, r1 \n\t"
9675        "adc r22, r25 \n\t"
9676        "mul r3, r12 \n\t"
9677        "add r23, r0 \n\t"
9678        "adc r24, r1 \n\t"
9679        "adc r22, r25 \n\t"
9680        "ld r0, z \n\t"
9681        "add r23, r0 \n\t"
9682        "adc r24, r25 \n\t"
9683        "adc r22, r25 \n\t"
9684        "st z+, r23 \n\t"
9685
9686        "ld r4, x+ \n\t"
9687        "ldi r23, 0 \n\t"
9688        "mul r5, r21 \n\t"
9689        "add r24, r0 \n\t"
9690        "adc r22, r1 \n\t"
9691        "adc r23, r25 \n\t"
9692        "mul r6, r20 \n\t"
9693        "add r24, r0 \n\t"
9694        "adc r22, r1 \n\t"
9695        "adc r23, r25 \n\t"
9696        "mul r7, r19 \n\t"
9697        "add r24, r0 \n\t"
9698        "adc r22, r1 \n\t"
9699        "adc r23, r25 \n\t"
9700        "mul r8, r18 \n\t"
9701        "add r24, r0 \n\t"
9702        "adc r22, r1 \n\t"
9703        "adc r23, r25 \n\t"
9704        "mul r9, r17 \n\t"
9705        "add r24, r0 \n\t"
9706        "adc r22, r1 \n\t"
9707        "adc r23, r25 \n\t"
9708        "mul r10, r16 \n\t"
9709        "add r24, r0 \n\t"
9710        "adc r22, r1 \n\t"
9711        "adc r23, r25 \n\t"
9712        "mul r11, r15 \n\t"
9713        "add r24, r0 \n\t"
9714        "adc r22, r1 \n\t"
9715        "adc r23, r25 \n\t"
9716        "mul r2, r14 \n\t"
9717        "add r24, r0 \n\t"
9718        "adc r22, r1 \n\t"
9719        "adc r23, r25 \n\t"
9720        "mul r3, r13 \n\t"
9721        "add r24, r0 \n\t"
9722        "adc r22, r1 \n\t"
9723        "adc r23, r25 \n\t"
9724        "mul r4, r12 \n\t"
9725        "add r24, r0 \n\t"
9726        "adc r22, r1 \n\t"
9727        "adc r23, r25 \n\t"
9728        "ld r0, z \n\t"
9729        "add r24, r0 \n\t"
9730        "adc r22, r25 \n\t"
9731        "adc r23, r25 \n\t"
9732        "st z+, r24 \n\t"
9733
9734        "ld r5, x+ \n\t"
9735        "ldi r24, 0 \n\t"
9736        "mul r6, r21 \n\t"
9737        "add r22, r0 \n\t"
9738        "adc r23, r1 \n\t"
9739        "adc r24, r25 \n\t"
9740        "mul r7, r20 \n\t"
9741        "add r22, r0 \n\t"
9742        "adc r23, r1 \n\t"
9743        "adc r24, r25 \n\t"
9744        "mul r8, r19 \n\t"
9745        "add r22, r0 \n\t"
9746        "adc r23, r1 \n\t"
9747        "adc r24, r25 \n\t"
9748        "mul r9, r18 \n\t"
9749        "add r22, r0 \n\t"
9750        "adc r23, r1 \n\t"
9751        "adc r24, r25 \n\t"
9752        "mul r10, r17 \n\t"
9753        "add r22, r0 \n\t"
9754        "adc r23, r1 \n\t"
9755        "adc r24, r25 \n\t"
9756        "mul r11, r16 \n\t"
9757        "add r22, r0 \n\t"
9758        "adc r23, r1 \n\t"
9759        "adc r24, r25 \n\t"
9760        "mul r2, r15 \n\t"
9761        "add r22, r0 \n\t"
9762        "adc r23, r1 \n\t"
9763        "adc r24, r25 \n\t"
9764        "mul r3, r14 \n\t"
9765        "add r22, r0 \n\t"
9766        "adc r23, r1 \n\t"
9767        "adc r24, r25 \n\t"
9768        "mul r4, r13 \n\t"
9769        "add r22, r0 \n\t"
9770        "adc r23, r1 \n\t"
9771        "adc r24, r25 \n\t"
9772        "mul r5, r12 \n\t"
9773        "add r22, r0 \n\t"
9774        "adc r23, r1 \n\t"
9775        "adc r24, r25 \n\t"
9776        "ld r0, z \n\t"
9777        "add r22, r0 \n\t"
9778        "adc r23, r25 \n\t"
9779        "adc r24, r25 \n\t"
9780        "st z+, r22 \n\t"
9781
9782        "ld r6, x+ \n\t"
9783        "ldi r22, 0 \n\t"
9784        "mul r7, r21 \n\t"
9785        "add r23, r0 \n\t"
9786        "adc r24, r1 \n\t"
9787        "adc r22, r25 \n\t"
9788        "mul r8, r20 \n\t"
9789        "add r23, r0 \n\t"
9790        "adc r24, r1 \n\t"
9791        "adc r22, r25 \n\t"
9792        "mul r9, r19 \n\t"
9793        "add r23, r0 \n\t"
9794        "adc r24, r1 \n\t"
9795        "adc r22, r25 \n\t"
9796        "mul r10, r18 \n\t"
9797        "add r23, r0 \n\t"
9798        "adc r24, r1 \n\t"
9799        "adc r22, r25 \n\t"
9800        "mul r11, r17 \n\t"
9801        "add r23, r0 \n\t"
9802        "adc r24, r1 \n\t"
9803        "adc r22, r25 \n\t"
9804        "mul r2, r16 \n\t"
9805        "add r23, r0 \n\t"
9806        "adc r24, r1 \n\t"
9807        "adc r22, r25 \n\t"
9808        "mul r3, r15 \n\t"
9809        "add r23, r0 \n\t"
9810        "adc r24, r1 \n\t"
9811        "adc r22, r25 \n\t"
9812        "mul r4, r14 \n\t"
9813        "add r23, r0 \n\t"
9814        "adc r24, r1 \n\t"
9815        "adc r22, r25 \n\t"
9816        "mul r5, r13 \n\t"
9817        "add r23, r0 \n\t"
9818        "adc r24, r1 \n\t"
9819        "adc r22, r25 \n\t"
9820        "mul r6, r12 \n\t"
9821        "add r23, r0 \n\t"
9822        "adc r24, r1 \n\t"
9823        "adc r22, r25 \n\t"
9824        "ld r0, z \n\t"
9825        "add r23, r0 \n\t"
9826        "adc r24, r25 \n\t"
9827        "adc r22, r25 \n\t"
9828        "st z+, r23 \n\t"
9829
9830        "ld r7, x+ \n\t"
9831        "ldi r23, 0 \n\t"
9832        "mul r8, r21 \n\t"
9833        "add r24, r0 \n\t"
9834        "adc r22, r1 \n\t"
9835        "adc r23, r25 \n\t"
9836        "mul r9, r20 \n\t"
9837        "add r24, r0 \n\t"
9838        "adc r22, r1 \n\t"
9839        "adc r23, r25 \n\t"
9840        "mul r10, r19 \n\t"
9841        "add r24, r0 \n\t"
9842        "adc r22, r1 \n\t"
9843        "adc r23, r25 \n\t"
9844        "mul r11, r18 \n\t"
9845        "add r24, r0 \n\t"
9846        "adc r22, r1 \n\t"
9847        "adc r23, r25 \n\t"
9848        "mul r2, r17 \n\t"
9849        "add r24, r0 \n\t"
9850        "adc r22, r1 \n\t"
9851        "adc r23, r25 \n\t"
9852        "mul r3, r16 \n\t"
9853        "add r24, r0 \n\t"
9854        "adc r22, r1 \n\t"
9855        "adc r23, r25 \n\t"
9856        "mul r4, r15 \n\t"
9857        "add r24, r0 \n\t"
9858        "adc r22, r1 \n\t"
9859        "adc r23, r25 \n\t"
9860        "mul r5, r14 \n\t"
9861        "add r24, r0 \n\t"
9862        "adc r22, r1 \n\t"
9863        "adc r23, r25 \n\t"
9864        "mul r6, r13 \n\t"
9865        "add r24, r0 \n\t"
9866        "adc r22, r1 \n\t"
9867        "adc r23, r25 \n\t"
9868        "mul r7, r12 \n\t"
9869        "add r24, r0 \n\t"
9870        "adc r22, r1 \n\t"
9871        "adc r23, r25 \n\t"
9872        "ld r0, z \n\t"
9873        "add r24, r0 \n\t"
9874        "adc r22, r25 \n\t"
9875        "adc r23, r25 \n\t"
9876        "st z+, r24 \n\t"
9877
9878        "ld r8, x+ \n\t"
9879        "ldi r24, 0 \n\t"
9880        "mul r9, r21 \n\t"
9881        "add r22, r0 \n\t"
9882        "adc r23, r1 \n\t"
9883        "adc r24, r25 \n\t"
9884        "mul r10, r20 \n\t"
9885        "add r22, r0 \n\t"
9886        "adc r23, r1 \n\t"
9887        "adc r24, r25 \n\t"
9888        "mul r11, r19 \n\t"
9889        "add r22, r0 \n\t"
9890        "adc r23, r1 \n\t"
9891        "adc r24, r25 \n\t"
9892        "mul r2, r18 \n\t"
9893        "add r22, r0 \n\t"
9894        "adc r23, r1 \n\t"
9895        "adc r24, r25 \n\t"
9896        "mul r3, r17 \n\t"
9897        "add r22, r0 \n\t"
9898        "adc r23, r1 \n\t"
9899        "adc r24, r25 \n\t"
9900        "mul r4, r16 \n\t"
9901        "add r22, r0 \n\t"
9902        "adc r23, r1 \n\t"
9903        "adc r24, r25 \n\t"
9904        "mul r5, r15 \n\t"
9905        "add r22, r0 \n\t"
9906        "adc r23, r1 \n\t"
9907        "adc r24, r25 \n\t"
9908        "mul r6, r14 \n\t"
9909        "add r22, r0 \n\t"
9910        "adc r23, r1 \n\t"
9911        "adc r24, r25 \n\t"
9912        "mul r7, r13 \n\t"
9913        "add r22, r0 \n\t"
9914        "adc r23, r1 \n\t"
9915        "adc r24, r25 \n\t"
9916        "mul r8, r12 \n\t"
9917        "add r22, r0 \n\t"
9918        "adc r23, r1 \n\t"
9919        "adc r24, r25 \n\t"
9920        "ld r0, z \n\t"
9921        "add r22, r0 \n\t"
9922        "adc r23, r25 \n\t"
9923        "adc r24, r25 \n\t"
9924        "st z+, r22 \n\t"
9925
9926        "ld r9, x+ \n\t"
9927        "ldi r22, 0 \n\t"
9928        "mul r10, r21 \n\t"
9929        "add r23, r0 \n\t"
9930        "adc r24, r1 \n\t"
9931        "adc r22, r25 \n\t"
9932        "mul r11, r20 \n\t"
9933        "add r23, r0 \n\t"
9934        "adc r24, r1 \n\t"
9935        "adc r22, r25 \n\t"
9936        "mul r2, r19 \n\t"
9937        "add r23, r0 \n\t"
9938        "adc r24, r1 \n\t"
9939        "adc r22, r25 \n\t"
9940        "mul r3, r18 \n\t"
9941        "add r23, r0 \n\t"
9942        "adc r24, r1 \n\t"
9943        "adc r22, r25 \n\t"
9944        "mul r4, r17 \n\t"
9945        "add r23, r0 \n\t"
9946        "adc r24, r1 \n\t"
9947        "adc r22, r25 \n\t"
9948        "mul r5, r16 \n\t"
9949        "add r23, r0 \n\t"
9950        "adc r24, r1 \n\t"
9951        "adc r22, r25 \n\t"
9952        "mul r6, r15 \n\t"
9953        "add r23, r0 \n\t"
9954        "adc r24, r1 \n\t"
9955        "adc r22, r25 \n\t"
9956        "mul r7, r14 \n\t"
9957        "add r23, r0 \n\t"
9958        "adc r24, r1 \n\t"
9959        "adc r22, r25 \n\t"
9960        "mul r8, r13 \n\t"
9961        "add r23, r0 \n\t"
9962        "adc r24, r1 \n\t"
9963        "adc r22, r25 \n\t"
9964        "mul r9, r12 \n\t"
9965        "add r23, r0 \n\t"
9966        "adc r24, r1 \n\t"
9967        "adc r22, r25 \n\t"
9968        "ld r0, z \n\t"
9969        "add r23, r0 \n\t"
9970        "adc r24, r25 \n\t"
9971        "adc r22, r25 \n\t"
9972        "st z+, r23 \n\t"
9973
9974        "ld r10, x+ \n\t"
9975        "ldi r23, 0 \n\t"
9976        "mul r11, r21 \n\t"
9977        "add r24, r0 \n\t"
9978        "adc r22, r1 \n\t"
9979        "adc r23, r25 \n\t"
9980        "mul r2, r20 \n\t"
9981        "add r24, r0 \n\t"
9982        "adc r22, r1 \n\t"
9983        "adc r23, r25 \n\t"
9984        "mul r3, r19 \n\t"
9985        "add r24, r0 \n\t"
9986        "adc r22, r1 \n\t"
9987        "adc r23, r25 \n\t"
9988        "mul r4, r18 \n\t"
9989        "add r24, r0 \n\t"
9990        "adc r22, r1 \n\t"
9991        "adc r23, r25 \n\t"
9992        "mul r5, r17 \n\t"
9993        "add r24, r0 \n\t"
9994        "adc r22, r1 \n\t"
9995        "adc r23, r25 \n\t"
9996        "mul r6, r16 \n\t"
9997        "add r24, r0 \n\t"
9998        "adc r22, r1 \n\t"
9999        "adc r23, r25 \n\t"
10000        "mul r7, r15 \n\t"
10001        "add r24, r0 \n\t"
10002        "adc r22, r1 \n\t"
10003        "adc r23, r25 \n\t"
10004        "mul r8, r14 \n\t"
10005        "add r24, r0 \n\t"
10006        "adc r22, r1 \n\t"
10007        "adc r23, r25 \n\t"
10008        "mul r9, r13 \n\t"
10009        "add r24, r0 \n\t"
10010        "adc r22, r1 \n\t"
10011        "adc r23, r25 \n\t"
10012        "mul r10, r12 \n\t"
10013        "add r24, r0 \n\t"
10014        "adc r22, r1 \n\t"
10015        "adc r23, r25 \n\t"
10016        "ld r0, z \n\t"
10017        "add r24, r0 \n\t"
10018        "adc r22, r25 \n\t"
10019        "adc r23, r25 \n\t"
10020        "st z+, r24 \n\t"
10021
10022        "ld r11, x+ \n\t"
10023        "ldi r24, 0 \n\t"
10024        "mul r2, r21 \n\t"
10025        "add r22, r0 \n\t"
10026        "adc r23, r1 \n\t"
10027        "adc r24, r25 \n\t"
10028        "mul r3, r20 \n\t"
10029        "add r22, r0 \n\t"
10030        "adc r23, r1 \n\t"
10031        "adc r24, r25 \n\t"
10032        "mul r4, r19 \n\t"
10033        "add r22, r0 \n\t"
10034        "adc r23, r1 \n\t"
10035        "adc r24, r25 \n\t"
10036        "mul r5, r18 \n\t"
10037        "add r22, r0 \n\t"
10038        "adc r23, r1 \n\t"
10039        "adc r24, r25 \n\t"
10040        "mul r6, r17 \n\t"
10041        "add r22, r0 \n\t"
10042        "adc r23, r1 \n\t"
10043        "adc r24, r25 \n\t"
10044        "mul r7, r16 \n\t"
10045        "add r22, r0 \n\t"
10046        "adc r23, r1 \n\t"
10047        "adc r24, r25 \n\t"
10048        "mul r8, r15 \n\t"
10049        "add r22, r0 \n\t"
10050        "adc r23, r1 \n\t"
10051        "adc r24, r25 \n\t"
10052        "mul r9, r14 \n\t"
10053        "add r22, r0 \n\t"
10054        "adc r23, r1 \n\t"
10055        "adc r24, r25 \n\t"
10056        "mul r10, r13 \n\t"
10057        "add r22, r0 \n\t"
10058        "adc r23, r1 \n\t"
10059        "adc r24, r25 \n\t"
10060        "mul r11, r12 \n\t"
10061        "add r22, r0 \n\t"
10062        "adc r23, r1 \n\t"
10063        "adc r24, r25 \n\t"
10064        "ld r0, z \n\t"
10065        "add r22, r0 \n\t"
10066        "adc r23, r25 \n\t"
10067        "adc r24, r25 \n\t"
10068        "st z+, r22 \n\t"
10069
10070        "ld r2, x+ \n\t"
10071        "ldi r22, 0 \n\t"
10072        "mul r3, r21 \n\t"
10073        "add r23, r0 \n\t"
10074        "adc r24, r1 \n\t"
10075        "adc r22, r25 \n\t"
10076        "mul r4, r20 \n\t"
10077        "add r23, r0 \n\t"
10078        "adc r24, r1 \n\t"
10079        "adc r22, r25 \n\t"
10080        "mul r5, r19 \n\t"
10081        "add r23, r0 \n\t"
10082        "adc r24, r1 \n\t"
10083        "adc r22, r25 \n\t"
10084        "mul r6, r18 \n\t"
10085        "add r23, r0 \n\t"
10086        "adc r24, r1 \n\t"
10087        "adc r22, r25 \n\t"
10088        "mul r7, r17 \n\t"
10089        "add r23, r0 \n\t"
10090        "adc r24, r1 \n\t"
10091        "adc r22, r25 \n\t"
10092        "mul r8, r16 \n\t"
10093        "add r23, r0 \n\t"
10094        "adc r24, r1 \n\t"
10095        "adc r22, r25 \n\t"
10096        "mul r9, r15 \n\t"
10097        "add r23, r0 \n\t"
10098        "adc r24, r1 \n\t"
10099        "adc r22, r25 \n\t"
10100        "mul r10, r14 \n\t"
10101        "add r23, r0 \n\t"
10102        "adc r24, r1 \n\t"
10103        "adc r22, r25 \n\t"
10104        "mul r11, r13 \n\t"
10105        "add r23, r0 \n\t"
10106        "adc r24, r1 \n\t"
10107        "adc r22, r25 \n\t"
10108        "mul r2, r12 \n\t"
10109        "add r23, r0 \n\t"
10110        "adc r24, r1 \n\t"
10111        "adc r22, r25 \n\t"
10112        "ld r0, z \n\t"
10113        "add r23, r0 \n\t"
10114        "adc r24, r25 \n\t"
10115        "adc r22, r25 \n\t"
10116        "st z+, r23 \n\t"
10117
10118        "ld r3, x+ \n\t"
10119        "ldi r23, 0 \n\t"
10120        "mul r4, r21 \n\t"
10121        "add r24, r0 \n\t"
10122        "adc r22, r1 \n\t"
10123        "adc r23, r25 \n\t"
10124        "mul r5, r20 \n\t"
10125        "add r24, r0 \n\t"
10126        "adc r22, r1 \n\t"
10127        "adc r23, r25 \n\t"
10128        "mul r6, r19 \n\t"
10129        "add r24, r0 \n\t"
10130        "adc r22, r1 \n\t"
10131        "adc r23, r25 \n\t"
10132        "mul r7, r18 \n\t"
10133        "add r24, r0 \n\t"
10134        "adc r22, r1 \n\t"
10135        "adc r23, r25 \n\t"
10136        "mul r8, r17 \n\t"
10137        "add r24, r0 \n\t"
10138        "adc r22, r1 \n\t"
10139        "adc r23, r25 \n\t"
10140        "mul r9, r16 \n\t"
10141        "add r24, r0 \n\t"
10142        "adc r22, r1 \n\t"
10143        "adc r23, r25 \n\t"
10144        "mul r10, r15 \n\t"
10145        "add r24, r0 \n\t"
10146        "adc r22, r1 \n\t"
10147        "adc r23, r25 \n\t"
10148        "mul r11, r14 \n\t"
10149        "add r24, r0 \n\t"
10150        "adc r22, r1 \n\t"
10151        "adc r23, r25 \n\t"
10152        "mul r2, r13 \n\t"
10153        "add r24, r0 \n\t"
10154        "adc r22, r1 \n\t"
10155        "adc r23, r25 \n\t"
10156        "mul r3, r12 \n\t"
10157        "add r24, r0 \n\t"
10158        "adc r22, r1 \n\t"
10159        "adc r23, r25 \n\t"
10160        "ld r0, z \n\t"
10161        "add r24, r0 \n\t"
10162        "adc r22, r25 \n\t"
10163        "adc r23, r25 \n\t"
10164        "st z+, r24 \n\t"
10165
10166        "ld r12, y+ \n\t"
10167        "ldi r24, 0 \n\t"
10168        "mul r4, r12 \n\t"
10169        "add r22, r0 \n\t"
10170        "adc r23, r1 \n\t"
10171        "adc r24, r25 \n\t"
10172        "mul r5, r21 \n\t"
10173        "add r22, r0 \n\t"
10174        "adc r23, r1 \n\t"
10175        "adc r24, r25 \n\t"
10176        "mul r6, r20 \n\t"
10177        "add r22, r0 \n\t"
10178        "adc r23, r1 \n\t"
10179        "adc r24, r25 \n\t"
10180        "mul r7, r19 \n\t"
10181        "add r22, r0 \n\t"
10182        "adc r23, r1 \n\t"
10183        "adc r24, r25 \n\t"
10184        "mul r8, r18 \n\t"
10185        "add r22, r0 \n\t"
10186        "adc r23, r1 \n\t"
10187        "adc r24, r25 \n\t"
10188        "mul r9, r17 \n\t"
10189        "add r22, r0 \n\t"
10190        "adc r23, r1 \n\t"
10191        "adc r24, r25 \n\t"
10192        "mul r10, r16 \n\t"
10193        "add r22, r0 \n\t"
10194        "adc r23, r1 \n\t"
10195        "adc r24, r25 \n\t"
10196        "mul r11, r15 \n\t"
10197        "add r22, r0 \n\t"
10198        "adc r23, r1 \n\t"
10199        "adc r24, r25 \n\t"
10200        "mul r2, r14 \n\t"
10201        "add r22, r0 \n\t"
10202        "adc r23, r1 \n\t"
10203        "adc r24, r25 \n\t"
10204        "mul r3, r13 \n\t"
10205        "add r22, r0 \n\t"
10206        "adc r23, r1 \n\t"
10207        "adc r24, r25 \n\t"
10208        "ld r0, z \n\t"
10209        "add r22, r0 \n\t"
10210        "adc r23, r25 \n\t"
10211        "adc r24, r25 \n\t"
10212        "st z+, r22 \n\t"
10213
10214        "ld r13, y+ \n\t"
10215        "ldi r22, 0 \n\t"
10216        "mul r4, r13 \n\t"
10217        "add r23, r0 \n\t"
10218        "adc r24, r1 \n\t"
10219        "adc r22, r25 \n\t"
10220        "mul r5, r12 \n\t"
10221        "add r23, r0 \n\t"
10222        "adc r24, r1 \n\t"
10223        "adc r22, r25 \n\t"
10224        "mul r6, r21 \n\t"
10225        "add r23, r0 \n\t"
10226        "adc r24, r1 \n\t"
10227        "adc r22, r25 \n\t"
10228        "mul r7, r20 \n\t"
10229        "add r23, r0 \n\t"
10230        "adc r24, r1 \n\t"
10231        "adc r22, r25 \n\t"
10232        "mul r8, r19 \n\t"
10233        "add r23, r0 \n\t"
10234        "adc r24, r1 \n\t"
10235        "adc r22, r25 \n\t"
10236        "mul r9, r18 \n\t"
10237        "add r23, r0 \n\t"
10238        "adc r24, r1 \n\t"
10239        "adc r22, r25 \n\t"
10240        "mul r10, r17 \n\t"
10241        "add r23, r0 \n\t"
10242        "adc r24, r1 \n\t"
10243        "adc r22, r25 \n\t"
10244        "mul r11, r16 \n\t"
10245        "add r23, r0 \n\t"
10246        "adc r24, r1 \n\t"
10247        "adc r22, r25 \n\t"
10248        "mul r2, r15 \n\t"
10249        "add r23, r0 \n\t"
10250        "adc r24, r1 \n\t"
10251        "adc r22, r25 \n\t"
10252        "mul r3, r14 \n\t"
10253        "add r23, r0 \n\t"
10254        "adc r24, r1 \n\t"
10255        "adc r22, r25 \n\t"
10256        "ld r0, z \n\t"
10257        "add r23, r0 \n\t"
10258        "adc r24, r25 \n\t"
10259        "adc r22, r25 \n\t"
10260        "st z+, r23 \n\t"
10261
10262        "ld r14, y+ \n\t"
10263        "ldi r23, 0 \n\t"
10264        "mul r4, r14 \n\t"
10265        "add r24, r0 \n\t"
10266        "adc r22, r1 \n\t"
10267        "adc r23, r25 \n\t"
10268        "mul r5, r13 \n\t"
10269        "add r24, r0 \n\t"
10270        "adc r22, r1 \n\t"
10271        "adc r23, r25 \n\t"
10272        "mul r6, r12 \n\t"
10273        "add r24, r0 \n\t"
10274        "adc r22, r1 \n\t"
10275        "adc r23, r25 \n\t"
10276        "mul r7, r21 \n\t"
10277        "add r24, r0 \n\t"
10278        "adc r22, r1 \n\t"
10279        "adc r23, r25 \n\t"
10280        "mul r8, r20 \n\t"
10281        "add r24, r0 \n\t"
10282        "adc r22, r1 \n\t"
10283        "adc r23, r25 \n\t"
10284        "mul r9, r19 \n\t"
10285        "add r24, r0 \n\t"
10286        "adc r22, r1 \n\t"
10287        "adc r23, r25 \n\t"
10288        "mul r10, r18 \n\t"
10289        "add r24, r0 \n\t"
10290        "adc r22, r1 \n\t"
10291        "adc r23, r25 \n\t"
10292        "mul r11, r17 \n\t"
10293        "add r24, r0 \n\t"
10294        "adc r22, r1 \n\t"
10295        "adc r23, r25 \n\t"
10296        "mul r2, r16 \n\t"
10297        "add r24, r0 \n\t"
10298        "adc r22, r1 \n\t"
10299        "adc r23, r25 \n\t"
10300        "mul r3, r15 \n\t"
10301        "add r24, r0 \n\t"
10302        "adc r22, r1 \n\t"
10303        "adc r23, r25 \n\t"
10304        "ld r0, z \n\t"
10305        "add r24, r0 \n\t"
10306        "adc r22, r25 \n\t"
10307        "adc r23, r25 \n\t"
10308        "st z+, r24 \n\t"
10309
10310        "ld r15, y+ \n\t"
10311        "ldi r24, 0 \n\t"
10312        "mul r4, r15 \n\t"
10313        "add r22, r0 \n\t"
10314        "adc r23, r1 \n\t"
10315        "adc r24, r25 \n\t"
10316        "mul r5, r14 \n\t"
10317        "add r22, r0 \n\t"
10318        "adc r23, r1 \n\t"
10319        "adc r24, r25 \n\t"
10320        "mul r6, r13 \n\t"
10321        "add r22, r0 \n\t"
10322        "adc r23, r1 \n\t"
10323        "adc r24, r25 \n\t"
10324        "mul r7, r12 \n\t"
10325        "add r22, r0 \n\t"
10326        "adc r23, r1 \n\t"
10327        "adc r24, r25 \n\t"
10328        "mul r8, r21 \n\t"
10329        "add r22, r0 \n\t"
10330        "adc r23, r1 \n\t"
10331        "adc r24, r25 \n\t"
10332        "mul r9, r20 \n\t"
10333        "add r22, r0 \n\t"
10334        "adc r23, r1 \n\t"
10335        "adc r24, r25 \n\t"
10336        "mul r10, r19 \n\t"
10337        "add r22, r0 \n\t"
10338        "adc r23, r1 \n\t"
10339        "adc r24, r25 \n\t"
10340        "mul r11, r18 \n\t"
10341        "add r22, r0 \n\t"
10342        "adc r23, r1 \n\t"
10343        "adc r24, r25 \n\t"
10344        "mul r2, r17 \n\t"
10345        "add r22, r0 \n\t"
10346        "adc r23, r1 \n\t"
10347        "adc r24, r25 \n\t"
10348        "mul r3, r16 \n\t"
10349        "add r22, r0 \n\t"
10350        "adc r23, r1 \n\t"
10351        "adc r24, r25 \n\t"
10352        "ld r0, z \n\t"
10353        "add r22, r0 \n\t"
10354        "adc r23, r25 \n\t"
10355        "adc r24, r25 \n\t"
10356        "st z+, r22 \n\t"
10357
10358        "ld r16, y+ \n\t"
10359        "ldi r22, 0 \n\t"
10360        "mul r4, r16 \n\t"
10361        "add r23, r0 \n\t"
10362        "adc r24, r1 \n\t"
10363        "adc r22, r25 \n\t"
10364        "mul r5, r15 \n\t"
10365        "add r23, r0 \n\t"
10366        "adc r24, r1 \n\t"
10367        "adc r22, r25 \n\t"
10368        "mul r6, r14 \n\t"
10369        "add r23, r0 \n\t"
10370        "adc r24, r1 \n\t"
10371        "adc r22, r25 \n\t"
10372        "mul r7, r13 \n\t"
10373        "add r23, r0 \n\t"
10374        "adc r24, r1 \n\t"
10375        "adc r22, r25 \n\t"
10376        "mul r8, r12 \n\t"
10377        "add r23, r0 \n\t"
10378        "adc r24, r1 \n\t"
10379        "adc r22, r25 \n\t"
10380        "mul r9, r21 \n\t"
10381        "add r23, r0 \n\t"
10382        "adc r24, r1 \n\t"
10383        "adc r22, r25 \n\t"
10384        "mul r10, r20 \n\t"
10385        "add r23, r0 \n\t"
10386        "adc r24, r1 \n\t"
10387        "adc r22, r25 \n\t"
10388        "mul r11, r19 \n\t"
10389        "add r23, r0 \n\t"
10390        "adc r24, r1 \n\t"
10391        "adc r22, r25 \n\t"
10392        "mul r2, r18 \n\t"
10393        "add r23, r0 \n\t"
10394        "adc r24, r1 \n\t"
10395        "adc r22, r25 \n\t"
10396        "mul r3, r17 \n\t"
10397        "add r23, r0 \n\t"
10398        "adc r24, r1 \n\t"
10399        "adc r22, r25 \n\t"
10400        "ld r0, z \n\t"
10401        "add r23, r0 \n\t"
10402        "adc r24, r25 \n\t"
10403        "adc r22, r25 \n\t"
10404        "st z+, r23 \n\t"
10405
10406        "ld r17, y+ \n\t"
10407        "ldi r23, 0 \n\t"
10408        "mul r4, r17 \n\t"
10409        "add r24, r0 \n\t"
10410        "adc r22, r1 \n\t"
10411        "adc r23, r25 \n\t"
10412        "mul r5, r16 \n\t"
10413        "add r24, r0 \n\t"
10414        "adc r22, r1 \n\t"
10415        "adc r23, r25 \n\t"
10416        "mul r6, r15 \n\t"
10417        "add r24, r0 \n\t"
10418        "adc r22, r1 \n\t"
10419        "adc r23, r25 \n\t"
10420        "mul r7, r14 \n\t"
10421        "add r24, r0 \n\t"
10422        "adc r22, r1 \n\t"
10423        "adc r23, r25 \n\t"
10424        "mul r8, r13 \n\t"
10425        "add r24, r0 \n\t"
10426        "adc r22, r1 \n\t"
10427        "adc r23, r25 \n\t"
10428        "mul r9, r12 \n\t"
10429        "add r24, r0 \n\t"
10430        "adc r22, r1 \n\t"
10431        "adc r23, r25 \n\t"
10432        "mul r10, r21 \n\t"
10433        "add r24, r0 \n\t"
10434        "adc r22, r1 \n\t"
10435        "adc r23, r25 \n\t"
10436        "mul r11, r20 \n\t"
10437        "add r24, r0 \n\t"
10438        "adc r22, r1 \n\t"
10439        "adc r23, r25 \n\t"
10440        "mul r2, r19 \n\t"
10441        "add r24, r0 \n\t"
10442        "adc r22, r1 \n\t"
10443        "adc r23, r25 \n\t"
10444        "mul r3, r18 \n\t"
10445        "add r24, r0 \n\t"
10446        "adc r22, r1 \n\t"
10447        "adc r23, r25 \n\t"
10448        "ld r0, z \n\t"
10449        "add r24, r0 \n\t"
10450        "adc r22, r25 \n\t"
10451        "adc r23, r25 \n\t"
10452        "st z+, r24 \n\t"
10453
10454        "ld r18, y+ \n\t"
10455        "ldi r24, 0 \n\t"
10456        "mul r4, r18 \n\t"
10457        "add r22, r0 \n\t"
10458        "adc r23, r1 \n\t"
10459        "adc r24, r25 \n\t"
10460        "mul r5, r17 \n\t"
10461        "add r22, r0 \n\t"
10462        "adc r23, r1 \n\t"
10463        "adc r24, r25 \n\t"
10464        "mul r6, r16 \n\t"
10465        "add r22, r0 \n\t"
10466        "adc r23, r1 \n\t"
10467        "adc r24, r25 \n\t"
10468        "mul r7, r15 \n\t"
10469        "add r22, r0 \n\t"
10470        "adc r23, r1 \n\t"
10471        "adc r24, r25 \n\t"
10472        "mul r8, r14 \n\t"
10473        "add r22, r0 \n\t"
10474        "adc r23, r1 \n\t"
10475        "adc r24, r25 \n\t"
10476        "mul r9, r13 \n\t"
10477        "add r22, r0 \n\t"
10478        "adc r23, r1 \n\t"
10479        "adc r24, r25 \n\t"
10480        "mul r10, r12 \n\t"
10481        "add r22, r0 \n\t"
10482        "adc r23, r1 \n\t"
10483        "adc r24, r25 \n\t"
10484        "mul r11, r21 \n\t"
10485        "add r22, r0 \n\t"
10486        "adc r23, r1 \n\t"
10487        "adc r24, r25 \n\t"
10488        "mul r2, r20 \n\t"
10489        "add r22, r0 \n\t"
10490        "adc r23, r1 \n\t"
10491        "adc r24, r25 \n\t"
10492        "mul r3, r19 \n\t"
10493        "add r22, r0 \n\t"
10494        "adc r23, r1 \n\t"
10495        "adc r24, r25 \n\t"
10496        "ld r0, z \n\t"
10497        "add r22, r0 \n\t"
10498        "adc r23, r25 \n\t"
10499        "adc r24, r25 \n\t"
10500        "st z+, r22 \n\t"
10501
10502        "ld r19, y+ \n\t"
10503        "ldi r22, 0 \n\t"
10504        "mul r4, r19 \n\t"
10505        "add r23, r0 \n\t"
10506        "adc r24, r1 \n\t"
10507        "adc r22, r25 \n\t"
10508        "mul r5, r18 \n\t"
10509        "add r23, r0 \n\t"
10510        "adc r24, r1 \n\t"
10511        "adc r22, r25 \n\t"
10512        "mul r6, r17 \n\t"
10513        "add r23, r0 \n\t"
10514        "adc r24, r1 \n\t"
10515        "adc r22, r25 \n\t"
10516        "mul r7, r16 \n\t"
10517        "add r23, r0 \n\t"
10518        "adc r24, r1 \n\t"
10519        "adc r22, r25 \n\t"
10520        "mul r8, r15 \n\t"
10521        "add r23, r0 \n\t"
10522        "adc r24, r1 \n\t"
10523        "adc r22, r25 \n\t"
10524        "mul r9, r14 \n\t"
10525        "add r23, r0 \n\t"
10526        "adc r24, r1 \n\t"
10527        "adc r22, r25 \n\t"
10528        "mul r10, r13 \n\t"
10529        "add r23, r0 \n\t"
10530        "adc r24, r1 \n\t"
10531        "adc r22, r25 \n\t"
10532        "mul r11, r12 \n\t"
10533        "add r23, r0 \n\t"
10534        "adc r24, r1 \n\t"
10535        "adc r22, r25 \n\t"
10536        "mul r2, r21 \n\t"
10537        "add r23, r0 \n\t"
10538        "adc r24, r1 \n\t"
10539        "adc r22, r25 \n\t"
10540        "mul r3, r20 \n\t"
10541        "add r23, r0 \n\t"
10542        "adc r24, r1 \n\t"
10543        "adc r22, r25 \n\t"
10544        "ld r0, z \n\t"
10545        "add r23, r0 \n\t"
10546        "adc r24, r25 \n\t"
10547        "adc r22, r25 \n\t"
10548        "st z+, r23 \n\t"
10549
10550        "ld r20, y+ \n\t"
10551        "ldi r23, 0 \n\t"
10552        "mul r4, r20 \n\t"
10553        "add r24, r0 \n\t"
10554        "adc r22, r1 \n\t"
10555        "adc r23, r25 \n\t"
10556        "mul r5, r19 \n\t"
10557        "add r24, r0 \n\t"
10558        "adc r22, r1 \n\t"
10559        "adc r23, r25 \n\t"
10560        "mul r6, r18 \n\t"
10561        "add r24, r0 \n\t"
10562        "adc r22, r1 \n\t"
10563        "adc r23, r25 \n\t"
10564        "mul r7, r17 \n\t"
10565        "add r24, r0 \n\t"
10566        "adc r22, r1 \n\t"
10567        "adc r23, r25 \n\t"
10568        "mul r8, r16 \n\t"
10569        "add r24, r0 \n\t"
10570        "adc r22, r1 \n\t"
10571        "adc r23, r25 \n\t"
10572        "mul r9, r15 \n\t"
10573        "add r24, r0 \n\t"
10574        "adc r22, r1 \n\t"
10575        "adc r23, r25 \n\t"
10576        "mul r10, r14 \n\t"
10577        "add r24, r0 \n\t"
10578        "adc r22, r1 \n\t"
10579        "adc r23, r25 \n\t"
10580        "mul r11, r13 \n\t"
10581        "add r24, r0 \n\t"
10582        "adc r22, r1 \n\t"
10583        "adc r23, r25 \n\t"
10584        "mul r2, r12 \n\t"
10585        "add r24, r0 \n\t"
10586        "adc r22, r1 \n\t"
10587        "adc r23, r25 \n\t"
10588        "mul r3, r21 \n\t"
10589        "add r24, r0 \n\t"
10590        "adc r22, r1 \n\t"
10591        "adc r23, r25 \n\t"
10592        "ld r0, z \n\t"
10593        "add r24, r0 \n\t"
10594        "adc r22, r25 \n\t"
10595        "adc r23, r25 \n\t"
10596        "st z+, r24 \n\t"
10597
10598        "ld r21, y+ \n\t"
10599        "ldi r24, 0 \n\t"
10600        "mul r4, r21 \n\t"
10601        "add r22, r0 \n\t"
10602        "adc r23, r1 \n\t"
10603        "adc r24, r25 \n\t"
10604        "mul r5, r20 \n\t"
10605        "add r22, r0 \n\t"
10606        "adc r23, r1 \n\t"
10607        "adc r24, r25 \n\t"
10608        "mul r6, r19 \n\t"
10609        "add r22, r0 \n\t"
10610        "adc r23, r1 \n\t"
10611        "adc r24, r25 \n\t"
10612        "mul r7, r18 \n\t"
10613        "add r22, r0 \n\t"
10614        "adc r23, r1 \n\t"
10615        "adc r24, r25 \n\t"
10616        "mul r8, r17 \n\t"
10617        "add r22, r0 \n\t"
10618        "adc r23, r1 \n\t"
10619        "adc r24, r25 \n\t"
10620        "mul r9, r16 \n\t"
10621        "add r22, r0 \n\t"
10622        "adc r23, r1 \n\t"
10623        "adc r24, r25 \n\t"
10624        "mul r10, r15 \n\t"
10625        "add r22, r0 \n\t"
10626        "adc r23, r1 \n\t"
10627        "adc r24, r25 \n\t"
10628        "mul r11, r14 \n\t"
10629        "add r22, r0 \n\t"
10630        "adc r23, r1 \n\t"
10631        "adc r24, r25 \n\t"
10632        "mul r2, r13 \n\t"
10633        "add r22, r0 \n\t"
10634        "adc r23, r1 \n\t"
10635        "adc r24, r25 \n\t"
10636        "mul r3, r12 \n\t"
10637        "add r22, r0 \n\t"
10638        "adc r23, r1 \n\t"
10639        "adc r24, r25 \n\t"
10640        "ld r0, z \n\t"
10641        "add r22, r0 \n\t"
10642        "adc r23, r25 \n\t"
10643        "adc r24, r25 \n\t"
10644        "st z+, r22 \n\t"
10645
10646        "ld r12, y+ \n\t"
10647        "ldi r22, 0 \n\t"
10648        "mul r4, r12 \n\t"
10649        "add r23, r0 \n\t"
10650        "adc r24, r1 \n\t"
10651        "adc r22, r25 \n\t"
10652        "mul r5, r21 \n\t"
10653        "add r23, r0 \n\t"
10654        "adc r24, r1 \n\t"
10655        "adc r22, r25 \n\t"
10656        "mul r6, r20 \n\t"
10657        "add r23, r0 \n\t"
10658        "adc r24, r1 \n\t"
10659        "adc r22, r25 \n\t"
10660        "mul r7, r19 \n\t"
10661        "add r23, r0 \n\t"
10662        "adc r24, r1 \n\t"
10663        "adc r22, r25 \n\t"
10664        "mul r8, r18 \n\t"
10665        "add r23, r0 \n\t"
10666        "adc r24, r1 \n\t"
10667        "adc r22, r25 \n\t"
10668        "mul r9, r17 \n\t"
10669        "add r23, r0 \n\t"
10670        "adc r24, r1 \n\t"
10671        "adc r22, r25 \n\t"
10672        "mul r10, r16 \n\t"
10673        "add r23, r0 \n\t"
10674        "adc r24, r1 \n\t"
10675        "adc r22, r25 \n\t"
10676        "mul r11, r15 \n\t"
10677        "add r23, r0 \n\t"
10678        "adc r24, r1 \n\t"
10679        "adc r22, r25 \n\t"
10680        "mul r2, r14 \n\t"
10681        "add r23, r0 \n\t"
10682        "adc r24, r1 \n\t"
10683        "adc r22, r25 \n\t"
10684        "mul r3, r13 \n\t"
10685        "add r23, r0 \n\t"
10686        "adc r24, r1 \n\t"
10687        "adc r22, r25 \n\t"
10688        "ld r0, z \n\t"
10689        "add r23, r0 \n\t"
10690        "adc r24, r25 \n\t"
10691        "adc r22, r25 \n\t"
10692        "st z+, r23 \n\t"
10693
10694        "ld r13, y+ \n\t"
10695        "ldi r23, 0 \n\t"
10696        "mul r4, r13 \n\t"
10697        "add r24, r0 \n\t"
10698        "adc r22, r1 \n\t"
10699        "adc r23, r25 \n\t"
10700        "mul r5, r12 \n\t"
10701        "add r24, r0 \n\t"
10702        "adc r22, r1 \n\t"
10703        "adc r23, r25 \n\t"
10704        "mul r6, r21 \n\t"
10705        "add r24, r0 \n\t"
10706        "adc r22, r1 \n\t"
10707        "adc r23, r25 \n\t"
10708        "mul r7, r20 \n\t"
10709        "add r24, r0 \n\t"
10710        "adc r22, r1 \n\t"
10711        "adc r23, r25 \n\t"
10712        "mul r8, r19 \n\t"
10713        "add r24, r0 \n\t"
10714        "adc r22, r1 \n\t"
10715        "adc r23, r25 \n\t"
10716        "mul r9, r18 \n\t"
10717        "add r24, r0 \n\t"
10718        "adc r22, r1 \n\t"
10719        "adc r23, r25 \n\t"
10720        "mul r10, r17 \n\t"
10721        "add r24, r0 \n\t"
10722        "adc r22, r1 \n\t"
10723        "adc r23, r25 \n\t"
10724        "mul r11, r16 \n\t"
10725        "add r24, r0 \n\t"
10726        "adc r22, r1 \n\t"
10727        "adc r23, r25 \n\t"
10728        "mul r2, r15 \n\t"
10729        "add r24, r0 \n\t"
10730        "adc r22, r1 \n\t"
10731        "adc r23, r25 \n\t"
10732        "mul r3, r14 \n\t"
10733        "add r24, r0 \n\t"
10734        "adc r22, r1 \n\t"
10735        "adc r23, r25 \n\t"
10736        "ld r0, z \n\t"
10737        "add r24, r0 \n\t"
10738        "adc r22, r25 \n\t"
10739        "adc r23, r25 \n\t"
10740        "st z+, r24 \n\t"
10741
10742        "ldi r24, 0 \n\t"
10743        "mul r5, r13 \n\t"
10744        "add r22, r0 \n\t"
10745        "adc r23, r1 \n\t"
10746        "adc r24, r25 \n\t"
10747        "mul r6, r12 \n\t"
10748        "add r22, r0 \n\t"
10749        "adc r23, r1 \n\t"
10750        "adc r24, r25 \n\t"
10751        "mul r7, r21 \n\t"
10752        "add r22, r0 \n\t"
10753        "adc r23, r1 \n\t"
10754        "adc r24, r25 \n\t"
10755        "mul r8, r20 \n\t"
10756        "add r22, r0 \n\t"
10757        "adc r23, r1 \n\t"
10758        "adc r24, r25 \n\t"
10759        "mul r9, r19 \n\t"
10760        "add r22, r0 \n\t"
10761        "adc r23, r1 \n\t"
10762        "adc r24, r25 \n\t"
10763        "mul r10, r18 \n\t"
10764        "add r22, r0 \n\t"
10765        "adc r23, r1 \n\t"
10766        "adc r24, r25 \n\t"
10767        "mul r11, r17 \n\t"
10768        "add r22, r0 \n\t"
10769        "adc r23, r1 \n\t"
10770        "adc r24, r25 \n\t"
10771        "mul r2, r16 \n\t"
10772        "add r22, r0 \n\t"
10773        "adc r23, r1 \n\t"
10774        "adc r24, r25 \n\t"
10775        "mul r3, r15 \n\t"
10776        "add r22, r0 \n\t"
10777        "adc r23, r1 \n\t"
10778        "adc r24, r25 \n\t"
10779        "st z+, r22 \n\t"
10780
10781        "ldi r22, 0 \n\t"
10782        "mul r6, r13 \n\t"
10783        "add r23, r0 \n\t"
10784        "adc r24, r1 \n\t"
10785        "adc r22, r25 \n\t"
10786        "mul r7, r12 \n\t"
10787        "add r23, r0 \n\t"
10788        "adc r24, r1 \n\t"
10789        "adc r22, r25 \n\t"
10790        "mul r8, r21 \n\t"
10791        "add r23, r0 \n\t"
10792        "adc r24, r1 \n\t"
10793        "adc r22, r25 \n\t"
10794        "mul r9, r20 \n\t"
10795        "add r23, r0 \n\t"
10796        "adc r24, r1 \n\t"
10797        "adc r22, r25 \n\t"
10798        "mul r10, r19 \n\t"
10799        "add r23, r0 \n\t"
10800        "adc r24, r1 \n\t"
10801        "adc r22, r25 \n\t"
10802        "mul r11, r18 \n\t"
10803        "add r23, r0 \n\t"
10804        "adc r24, r1 \n\t"
10805        "adc r22, r25 \n\t"
10806        "mul r2, r17 \n\t"
10807        "add r23, r0 \n\t"
10808        "adc r24, r1 \n\t"
10809        "adc r22, r25 \n\t"
10810        "mul r3, r16 \n\t"
10811        "add r23, r0 \n\t"
10812        "adc r24, r1 \n\t"
10813        "adc r22, r25 \n\t"
10814        "st z+, r23 \n\t"
10815
10816        "ldi r23, 0 \n\t"
10817        "mul r7, r13 \n\t"
10818        "add r24, r0 \n\t"
10819        "adc r22, r1 \n\t"
10820        "adc r23, r25 \n\t"
10821        "mul r8, r12 \n\t"
10822        "add r24, r0 \n\t"
10823        "adc r22, r1 \n\t"
10824        "adc r23, r25 \n\t"
10825        "mul r9, r21 \n\t"
10826        "add r24, r0 \n\t"
10827        "adc r22, r1 \n\t"
10828        "adc r23, r25 \n\t"
10829        "mul r10, r20 \n\t"
10830        "add r24, r0 \n\t"
10831        "adc r22, r1 \n\t"
10832        "adc r23, r25 \n\t"
10833        "mul r11, r19 \n\t"
10834        "add r24, r0 \n\t"
10835        "adc r22, r1 \n\t"
10836        "adc r23, r25 \n\t"
10837        "mul r2, r18 \n\t"
10838        "add r24, r0 \n\t"
10839        "adc r22, r1 \n\t"
10840        "adc r23, r25 \n\t"
10841        "mul r3, r17 \n\t"
10842        "add r24, r0 \n\t"
10843        "adc r22, r1 \n\t"
10844        "adc r23, r25 \n\t"
10845        "st z+, r24 \n\t"
10846
10847        "ldi r24, 0 \n\t"
10848        "mul r8, r13 \n\t"
10849        "add r22, r0 \n\t"
10850        "adc r23, r1 \n\t"
10851        "adc r24, r25 \n\t"
10852        "mul r9, r12 \n\t"
10853        "add r22, r0 \n\t"
10854        "adc r23, r1 \n\t"
10855        "adc r24, r25 \n\t"
10856        "mul r10, r21 \n\t"
10857        "add r22, r0 \n\t"
10858        "adc r23, r1 \n\t"
10859        "adc r24, r25 \n\t"
10860        "mul r11, r20 \n\t"
10861        "add r22, r0 \n\t"
10862        "adc r23, r1 \n\t"
10863        "adc r24, r25 \n\t"
10864        "mul r2, r19 \n\t"
10865        "add r22, r0 \n\t"
10866        "adc r23, r1 \n\t"
10867        "adc r24, r25 \n\t"
10868        "mul r3, r18 \n\t"
10869        "add r22, r0 \n\t"
10870        "adc r23, r1 \n\t"
10871        "adc r24, r25 \n\t"
10872        "st z+, r22 \n\t"
10873
10874        "ldi r22, 0 \n\t"
10875        "mul r9, r13 \n\t"
10876        "add r23, r0 \n\t"
10877        "adc r24, r1 \n\t"
10878        "adc r22, r25 \n\t"
10879        "mul r10, r12 \n\t"
10880        "add r23, r0 \n\t"
10881        "adc r24, r1 \n\t"
10882        "adc r22, r25 \n\t"
10883        "mul r11, r21 \n\t"
10884        "add r23, r0 \n\t"
10885        "adc r24, r1 \n\t"
10886        "adc r22, r25 \n\t"
10887        "mul r2, r20 \n\t"
10888        "add r23, r0 \n\t"
10889        "adc r24, r1 \n\t"
10890        "adc r22, r25 \n\t"
10891        "mul r3, r19 \n\t"
10892        "add r23, r0 \n\t"
10893        "adc r24, r1 \n\t"
10894        "adc r22, r25 \n\t"
10895        "st z+, r23 \n\t"
10896
10897        "ldi r23, 0 \n\t"
10898        "mul r10, r13 \n\t"
10899        "add r24, r0 \n\t"
10900        "adc r22, r1 \n\t"
10901        "adc r23, r25 \n\t"
10902        "mul r11, r12 \n\t"
10903        "add r24, r0 \n\t"
10904        "adc r22, r1 \n\t"
10905        "adc r23, r25 \n\t"
10906        "mul r2, r21 \n\t"
10907        "add r24, r0 \n\t"
10908        "adc r22, r1 \n\t"
10909        "adc r23, r25 \n\t"
10910        "mul r3, r20 \n\t"
10911        "add r24, r0 \n\t"
10912        "adc r22, r1 \n\t"
10913        "adc r23, r25 \n\t"
10914        "st z+, r24 \n\t"
10915
10916        "ldi r24, 0 \n\t"
10917        "mul r11, r13 \n\t"
10918        "add r22, r0 \n\t"
10919        "adc r23, r1 \n\t"
10920        "adc r24, r25 \n\t"
10921        "mul r2, r12 \n\t"
10922        "add r22, r0 \n\t"
10923        "adc r23, r1 \n\t"
10924        "adc r24, r25 \n\t"
10925        "mul r3, r21 \n\t"
10926        "add r22, r0 \n\t"
10927        "adc r23, r1 \n\t"
10928        "adc r24, r25 \n\t"
10929        "st z+, r22 \n\t"
10930
10931        "ldi r22, 0 \n\t"
10932        "mul r2, r13 \n\t"
10933        "add r23, r0 \n\t"
10934        "adc r24, r1 \n\t"
10935        "adc r22, r25 \n\t"
10936        "mul r3, r12 \n\t"
10937        "add r23, r0 \n\t"
10938        "adc r24, r1 \n\t"
10939        "adc r22, r25 \n\t"
10940        "st z+, r23 \n\t"
10941
10942        "mul r3, r13 \n\t"
10943        "add r24, r0 \n\t"
10944        "adc r22, r1 \n\t"
10945        "st z+, r24 \n\t"
10946        "st z+, r22 \n\t"
10947
10948        "sbiw r30, 54 \n\t"
10949        "sbiw r28, 32 \n\t"
10950        "sbiw r26, 22 \n\t"
10951        "ld r2, x+ \n\t"
10952        "ld r12, y+ \n\t"
10953        "ld r3, x+ \n\t"
10954        "ld r13, y+ \n\t"
10955        "ld r4, x+ \n\t"
10956        "ld r14, y+ \n\t"
10957        "ld r5, x+ \n\t"
10958        "ld r15, y+ \n\t"
10959        "ld r6, x+ \n\t"
10960        "ld r16, y+ \n\t"
10961        "ld r7, x+ \n\t"
10962        "ld r17, y+ \n\t"
10963        "ld r8, x+ \n\t"
10964        "ld r18, y+ \n\t"
10965        "ld r9, x+ \n\t"
10966        "ld r19, y+ \n\t"
10967        "ld r10, x+ \n\t"
10968        "ld r20, y+ \n\t"
10969        "ld r11, x+ \n\t"
10970        "ld r21, y+ \n\t"
10971
10972        "ldi r23, 0 \n\t"
10973        "mul r2, r12 \n\t"
10974        "st z+, r0 \n\t"
10975        "mov r22, r1 \n\t"
10976
10977        "ldi r24, 0 \n\t"
10978        "mul r2, r13 \n\t"
10979        "add r22, r0 \n\t"
10980        "adc r23, r1 \n\t"
10981        "mul r3, r12 \n\t"
10982        "add r22, r0 \n\t"
10983        "adc r23, r1 \n\t"
10984        "adc r24, r25 \n\t"
10985        "st z+, r22 \n\t"
10986
10987        "ldi r22, 0 \n\t"
10988        "mul r2, r14 \n\t"
10989        "add r23, r0 \n\t"
10990        "adc r24, r1 \n\t"
10991        "adc r22, r25 \n\t"
10992        "mul r3, r13 \n\t"
10993        "add r23, r0 \n\t"
10994        "adc r24, r1 \n\t"
10995        "adc r22, r25 \n\t"
10996        "mul r4, r12 \n\t"
10997        "add r23, r0 \n\t"
10998        "adc r24, r1 \n\t"
10999        "adc r22, r25 \n\t"
11000        "st z+, r23 \n\t"
11001
11002        "ldi r23, 0 \n\t"
11003        "mul r2, r15 \n\t"
11004        "add r24, r0 \n\t"
11005        "adc r22, r1 \n\t"
11006        "adc r23, r25 \n\t"
11007        "mul r3, r14 \n\t"
11008        "add r24, r0 \n\t"
11009        "adc r22, r1 \n\t"
11010        "adc r23, r25 \n\t"
11011        "mul r4, r13 \n\t"
11012        "add r24, r0 \n\t"
11013        "adc r22, r1 \n\t"
11014        "adc r23, r25 \n\t"
11015        "mul r5, r12 \n\t"
11016        "add r24, r0 \n\t"
11017        "adc r22, r1 \n\t"
11018        "adc r23, r25 \n\t"
11019        "st z+, r24 \n\t"
11020
11021        "ldi r24, 0 \n\t"
11022        "mul r2, r16 \n\t"
11023        "add r22, r0 \n\t"
11024        "adc r23, r1 \n\t"
11025        "adc r24, r25 \n\t"
11026        "mul r3, r15 \n\t"
11027        "add r22, r0 \n\t"
11028        "adc r23, r1 \n\t"
11029        "adc r24, r25 \n\t"
11030        "mul r4, r14 \n\t"
11031        "add r22, r0 \n\t"
11032        "adc r23, r1 \n\t"
11033        "adc r24, r25 \n\t"
11034        "mul r5, r13 \n\t"
11035        "add r22, r0 \n\t"
11036        "adc r23, r1 \n\t"
11037        "adc r24, r25 \n\t"
11038        "mul r6, r12 \n\t"
11039        "add r22, r0 \n\t"
11040        "adc r23, r1 \n\t"
11041        "adc r24, r25 \n\t"
11042        "st z+, r22 \n\t"
11043
11044        "ldi r22, 0 \n\t"
11045        "mul r2, r17 \n\t"
11046        "add r23, r0 \n\t"
11047        "adc r24, r1 \n\t"
11048        "adc r22, r25 \n\t"
11049        "mul r3, r16 \n\t"
11050        "add r23, r0 \n\t"
11051        "adc r24, r1 \n\t"
11052        "adc r22, r25 \n\t"
11053        "mul r4, r15 \n\t"
11054        "add r23, r0 \n\t"
11055        "adc r24, r1 \n\t"
11056        "adc r22, r25 \n\t"
11057        "mul r5, r14 \n\t"
11058        "add r23, r0 \n\t"
11059        "adc r24, r1 \n\t"
11060        "adc r22, r25 \n\t"
11061        "mul r6, r13 \n\t"
11062        "add r23, r0 \n\t"
11063        "adc r24, r1 \n\t"
11064        "adc r22, r25 \n\t"
11065        "mul r7, r12 \n\t"
11066        "add r23, r0 \n\t"
11067        "adc r24, r1 \n\t"
11068        "adc r22, r25 \n\t"
11069        "st z+, r23 \n\t"
11070
11071        "ldi r23, 0 \n\t"
11072        "mul r2, r18 \n\t"
11073        "add r24, r0 \n\t"
11074        "adc r22, r1 \n\t"
11075        "adc r23, r25 \n\t"
11076        "mul r3, r17 \n\t"
11077        "add r24, r0 \n\t"
11078        "adc r22, r1 \n\t"
11079        "adc r23, r25 \n\t"
11080        "mul r4, r16 \n\t"
11081        "add r24, r0 \n\t"
11082        "adc r22, r1 \n\t"
11083        "adc r23, r25 \n\t"
11084        "mul r5, r15 \n\t"
11085        "add r24, r0 \n\t"
11086        "adc r22, r1 \n\t"
11087        "adc r23, r25 \n\t"
11088        "mul r6, r14 \n\t"
11089        "add r24, r0 \n\t"
11090        "adc r22, r1 \n\t"
11091        "adc r23, r25 \n\t"
11092        "mul r7, r13 \n\t"
11093        "add r24, r0 \n\t"
11094        "adc r22, r1 \n\t"
11095        "adc r23, r25 \n\t"
11096        "mul r8, r12 \n\t"
11097        "add r24, r0 \n\t"
11098        "adc r22, r1 \n\t"
11099        "adc r23, r25 \n\t"
11100        "st z+, r24 \n\t"
11101
11102        "ldi r24, 0 \n\t"
11103        "mul r2, r19 \n\t"
11104        "add r22, r0 \n\t"
11105        "adc r23, r1 \n\t"
11106        "adc r24, r25 \n\t"
11107        "mul r3, r18 \n\t"
11108        "add r22, r0 \n\t"
11109        "adc r23, r1 \n\t"
11110        "adc r24, r25 \n\t"
11111        "mul r4, r17 \n\t"
11112        "add r22, r0 \n\t"
11113        "adc r23, r1 \n\t"
11114        "adc r24, r25 \n\t"
11115        "mul r5, r16 \n\t"
11116        "add r22, r0 \n\t"
11117        "adc r23, r1 \n\t"
11118        "adc r24, r25 \n\t"
11119        "mul r6, r15 \n\t"
11120        "add r22, r0 \n\t"
11121        "adc r23, r1 \n\t"
11122        "adc r24, r25 \n\t"
11123        "mul r7, r14 \n\t"
11124        "add r22, r0 \n\t"
11125        "adc r23, r1 \n\t"
11126        "adc r24, r25 \n\t"
11127        "mul r8, r13 \n\t"
11128        "add r22, r0 \n\t"
11129        "adc r23, r1 \n\t"
11130        "adc r24, r25 \n\t"
11131        "mul r9, r12 \n\t"
11132        "add r22, r0 \n\t"
11133        "adc r23, r1 \n\t"
11134        "adc r24, r25 \n\t"
11135        "st z+, r22 \n\t"
11136
11137        "ldi r22, 0 \n\t"
11138        "mul r2, r20 \n\t"
11139        "add r23, r0 \n\t"
11140        "adc r24, r1 \n\t"
11141        "adc r22, r25 \n\t"
11142        "mul r3, r19 \n\t"
11143        "add r23, r0 \n\t"
11144        "adc r24, r1 \n\t"
11145        "adc r22, r25 \n\t"
11146        "mul r4, r18 \n\t"
11147        "add r23, r0 \n\t"
11148        "adc r24, r1 \n\t"
11149        "adc r22, r25 \n\t"
11150        "mul r5, r17 \n\t"
11151        "add r23, r0 \n\t"
11152        "adc r24, r1 \n\t"
11153        "adc r22, r25 \n\t"
11154        "mul r6, r16 \n\t"
11155        "add r23, r0 \n\t"
11156        "adc r24, r1 \n\t"
11157        "adc r22, r25 \n\t"
11158        "mul r7, r15 \n\t"
11159        "add r23, r0 \n\t"
11160        "adc r24, r1 \n\t"
11161        "adc r22, r25 \n\t"
11162        "mul r8, r14 \n\t"
11163        "add r23, r0 \n\t"
11164        "adc r24, r1 \n\t"
11165        "adc r22, r25 \n\t"
11166        "mul r9, r13 \n\t"
11167        "add r23, r0 \n\t"
11168        "adc r24, r1 \n\t"
11169        "adc r22, r25 \n\t"
11170        "mul r10, r12 \n\t"
11171        "add r23, r0 \n\t"
11172        "adc r24, r1 \n\t"
11173        "adc r22, r25 \n\t"
11174        "st z+, r23 \n\t"
11175
11176        "ldi r23, 0 \n\t"
11177        "mul r2, r21 \n\t"
11178        "add r24, r0 \n\t"
11179        "adc r22, r1 \n\t"
11180        "adc r23, r25 \n\t"
11181        "mul r3, r20 \n\t"
11182        "add r24, r0 \n\t"
11183        "adc r22, r1 \n\t"
11184        "adc r23, r25 \n\t"
11185        "mul r4, r19 \n\t"
11186        "add r24, r0 \n\t"
11187        "adc r22, r1 \n\t"
11188        "adc r23, r25 \n\t"
11189        "mul r5, r18 \n\t"
11190        "add r24, r0 \n\t"
11191        "adc r22, r1 \n\t"
11192        "adc r23, r25 \n\t"
11193        "mul r6, r17 \n\t"
11194        "add r24, r0 \n\t"
11195        "adc r22, r1 \n\t"
11196        "adc r23, r25 \n\t"
11197        "mul r7, r16 \n\t"
11198        "add r24, r0 \n\t"
11199        "adc r22, r1 \n\t"
11200        "adc r23, r25 \n\t"
11201        "mul r8, r15 \n\t"
11202        "add r24, r0 \n\t"
11203        "adc r22, r1 \n\t"
11204        "adc r23, r25 \n\t"
11205        "mul r9, r14 \n\t"
11206        "add r24, r0 \n\t"
11207        "adc r22, r1 \n\t"
11208        "adc r23, r25 \n\t"
11209        "mul r10, r13 \n\t"
11210        "add r24, r0 \n\t"
11211        "adc r22, r1 \n\t"
11212        "adc r23, r25 \n\t"
11213        "mul r11, r12 \n\t"
11214        "add r24, r0 \n\t"
11215        "adc r22, r1 \n\t"
11216        "adc r23, r25 \n\t"
11217        "st z+, r24 \n\t"
11218
11219        "ld r2, x+ \n\t"
11220        "ldi r24, 0 \n\t"
11221        "mul r3, r21 \n\t"
11222        "add r22, r0 \n\t"
11223        "adc r23, r1 \n\t"
11224        "adc r24, r25 \n\t"
11225        "mul r4, r20 \n\t"
11226        "add r22, r0 \n\t"
11227        "adc r23, r1 \n\t"
11228        "adc r24, r25 \n\t"
11229        "mul r5, r19 \n\t"
11230        "add r22, r0 \n\t"
11231        "adc r23, r1 \n\t"
11232        "adc r24, r25 \n\t"
11233        "mul r6, r18 \n\t"
11234        "add r22, r0 \n\t"
11235        "adc r23, r1 \n\t"
11236        "adc r24, r25 \n\t"
11237        "mul r7, r17 \n\t"
11238        "add r22, r0 \n\t"
11239        "adc r23, r1 \n\t"
11240        "adc r24, r25 \n\t"
11241        "mul r8, r16 \n\t"
11242        "add r22, r0 \n\t"
11243        "adc r23, r1 \n\t"
11244        "adc r24, r25 \n\t"
11245        "mul r9, r15 \n\t"
11246        "add r22, r0 \n\t"
11247        "adc r23, r1 \n\t"
11248        "adc r24, r25 \n\t"
11249        "mul r10, r14 \n\t"
11250        "add r22, r0 \n\t"
11251        "adc r23, r1 \n\t"
11252        "adc r24, r25 \n\t"
11253        "mul r11, r13 \n\t"
11254        "add r22, r0 \n\t"
11255        "adc r23, r1 \n\t"
11256        "adc r24, r25 \n\t"
11257        "mul r2, r12 \n\t"
11258        "add r22, r0 \n\t"
11259        "adc r23, r1 \n\t"
11260        "adc r24, r25 \n\t"
11261        "ld r0, z \n\t"
11262        "add r22, r0 \n\t"
11263        "adc r23, r25 \n\t"
11264        "adc r24, r25 \n\t"
11265        "st z+, r22 \n\t"
11266
11267        "ld r3, x+ \n\t"
11268        "ldi r22, 0 \n\t"
11269        "mul r4, r21 \n\t"
11270        "add r23, r0 \n\t"
11271        "adc r24, r1 \n\t"
11272        "adc r22, r25 \n\t"
11273        "mul r5, r20 \n\t"
11274        "add r23, r0 \n\t"
11275        "adc r24, r1 \n\t"
11276        "adc r22, r25 \n\t"
11277        "mul r6, r19 \n\t"
11278        "add r23, r0 \n\t"
11279        "adc r24, r1 \n\t"
11280        "adc r22, r25 \n\t"
11281        "mul r7, r18 \n\t"
11282        "add r23, r0 \n\t"
11283        "adc r24, r1 \n\t"
11284        "adc r22, r25 \n\t"
11285        "mul r8, r17 \n\t"
11286        "add r23, r0 \n\t"
11287        "adc r24, r1 \n\t"
11288        "adc r22, r25 \n\t"
11289        "mul r9, r16 \n\t"
11290        "add r23, r0 \n\t"
11291        "adc r24, r1 \n\t"
11292        "adc r22, r25 \n\t"
11293        "mul r10, r15 \n\t"
11294        "add r23, r0 \n\t"
11295        "adc r24, r1 \n\t"
11296        "adc r22, r25 \n\t"
11297        "mul r11, r14 \n\t"
11298        "add r23, r0 \n\t"
11299        "adc r24, r1 \n\t"
11300        "adc r22, r25 \n\t"
11301        "mul r2, r13 \n\t"
11302        "add r23, r0 \n\t"
11303        "adc r24, r1 \n\t"
11304        "adc r22, r25 \n\t"
11305        "mul r3, r12 \n\t"
11306        "add r23, r0 \n\t"
11307        "adc r24, r1 \n\t"
11308        "adc r22, r25 \n\t"
11309        "ld r0, z \n\t"
11310        "add r23, r0 \n\t"
11311        "adc r24, r25 \n\t"
11312        "adc r22, r25 \n\t"
11313        "st z+, r23 \n\t"
11314
11315        "ld r4, x+ \n\t"
11316        "ldi r23, 0 \n\t"
11317        "mul r5, r21 \n\t"
11318        "add r24, r0 \n\t"
11319        "adc r22, r1 \n\t"
11320        "adc r23, r25 \n\t"
11321        "mul r6, r20 \n\t"
11322        "add r24, r0 \n\t"
11323        "adc r22, r1 \n\t"
11324        "adc r23, r25 \n\t"
11325        "mul r7, r19 \n\t"
11326        "add r24, r0 \n\t"
11327        "adc r22, r1 \n\t"
11328        "adc r23, r25 \n\t"
11329        "mul r8, r18 \n\t"
11330        "add r24, r0 \n\t"
11331        "adc r22, r1 \n\t"
11332        "adc r23, r25 \n\t"
11333        "mul r9, r17 \n\t"
11334        "add r24, r0 \n\t"
11335        "adc r22, r1 \n\t"
11336        "adc r23, r25 \n\t"
11337        "mul r10, r16 \n\t"
11338        "add r24, r0 \n\t"
11339        "adc r22, r1 \n\t"
11340        "adc r23, r25 \n\t"
11341        "mul r11, r15 \n\t"
11342        "add r24, r0 \n\t"
11343        "adc r22, r1 \n\t"
11344        "adc r23, r25 \n\t"
11345        "mul r2, r14 \n\t"
11346        "add r24, r0 \n\t"
11347        "adc r22, r1 \n\t"
11348        "adc r23, r25 \n\t"
11349        "mul r3, r13 \n\t"
11350        "add r24, r0 \n\t"
11351        "adc r22, r1 \n\t"
11352        "adc r23, r25 \n\t"
11353        "mul r4, r12 \n\t"
11354        "add r24, r0 \n\t"
11355        "adc r22, r1 \n\t"
11356        "adc r23, r25 \n\t"
11357        "ld r0, z \n\t"
11358        "add r24, r0 \n\t"
11359        "adc r22, r25 \n\t"
11360        "adc r23, r25 \n\t"
11361        "st z+, r24 \n\t"
11362
11363        "ld r5, x+ \n\t"
11364        "ldi r24, 0 \n\t"
11365        "mul r6, r21 \n\t"
11366        "add r22, r0 \n\t"
11367        "adc r23, r1 \n\t"
11368        "adc r24, r25 \n\t"
11369        "mul r7, r20 \n\t"
11370        "add r22, r0 \n\t"
11371        "adc r23, r1 \n\t"
11372        "adc r24, r25 \n\t"
11373        "mul r8, r19 \n\t"
11374        "add r22, r0 \n\t"
11375        "adc r23, r1 \n\t"
11376        "adc r24, r25 \n\t"
11377        "mul r9, r18 \n\t"
11378        "add r22, r0 \n\t"
11379        "adc r23, r1 \n\t"
11380        "adc r24, r25 \n\t"
11381        "mul r10, r17 \n\t"
11382        "add r22, r0 \n\t"
11383        "adc r23, r1 \n\t"
11384        "adc r24, r25 \n\t"
11385        "mul r11, r16 \n\t"
11386        "add r22, r0 \n\t"
11387        "adc r23, r1 \n\t"
11388        "adc r24, r25 \n\t"
11389        "mul r2, r15 \n\t"
11390        "add r22, r0 \n\t"
11391        "adc r23, r1 \n\t"
11392        "adc r24, r25 \n\t"
11393        "mul r3, r14 \n\t"
11394        "add r22, r0 \n\t"
11395        "adc r23, r1 \n\t"
11396        "adc r24, r25 \n\t"
11397        "mul r4, r13 \n\t"
11398        "add r22, r0 \n\t"
11399        "adc r23, r1 \n\t"
11400        "adc r24, r25 \n\t"
11401        "mul r5, r12 \n\t"
11402        "add r22, r0 \n\t"
11403        "adc r23, r1 \n\t"
11404        "adc r24, r25 \n\t"
11405        "ld r0, z \n\t"
11406        "add r22, r0 \n\t"
11407        "adc r23, r25 \n\t"
11408        "adc r24, r25 \n\t"
11409        "st z+, r22 \n\t"
11410
11411        "ld r6, x+ \n\t"
11412        "ldi r22, 0 \n\t"
11413        "mul r7, r21 \n\t"
11414        "add r23, r0 \n\t"
11415        "adc r24, r1 \n\t"
11416        "adc r22, r25 \n\t"
11417        "mul r8, r20 \n\t"
11418        "add r23, r0 \n\t"
11419        "adc r24, r1 \n\t"
11420        "adc r22, r25 \n\t"
11421        "mul r9, r19 \n\t"
11422        "add r23, r0 \n\t"
11423        "adc r24, r1 \n\t"
11424        "adc r22, r25 \n\t"
11425        "mul r10, r18 \n\t"
11426        "add r23, r0 \n\t"
11427        "adc r24, r1 \n\t"
11428        "adc r22, r25 \n\t"
11429        "mul r11, r17 \n\t"
11430        "add r23, r0 \n\t"
11431        "adc r24, r1 \n\t"
11432        "adc r22, r25 \n\t"
11433        "mul r2, r16 \n\t"
11434        "add r23, r0 \n\t"
11435        "adc r24, r1 \n\t"
11436        "adc r22, r25 \n\t"
11437        "mul r3, r15 \n\t"
11438        "add r23, r0 \n\t"
11439        "adc r24, r1 \n\t"
11440        "adc r22, r25 \n\t"
11441        "mul r4, r14 \n\t"
11442        "add r23, r0 \n\t"
11443        "adc r24, r1 \n\t"
11444        "adc r22, r25 \n\t"
11445        "mul r5, r13 \n\t"
11446        "add r23, r0 \n\t"
11447        "adc r24, r1 \n\t"
11448        "adc r22, r25 \n\t"
11449        "mul r6, r12 \n\t"
11450        "add r23, r0 \n\t"
11451        "adc r24, r1 \n\t"
11452        "adc r22, r25 \n\t"
11453        "ld r0, z \n\t"
11454        "add r23, r0 \n\t"
11455        "adc r24, r25 \n\t"
11456        "adc r22, r25 \n\t"
11457        "st z+, r23 \n\t"
11458
11459        "ld r7, x+ \n\t"
11460        "ldi r23, 0 \n\t"
11461        "mul r8, r21 \n\t"
11462        "add r24, r0 \n\t"
11463        "adc r22, r1 \n\t"
11464        "adc r23, r25 \n\t"
11465        "mul r9, r20 \n\t"
11466        "add r24, r0 \n\t"
11467        "adc r22, r1 \n\t"
11468        "adc r23, r25 \n\t"
11469        "mul r10, r19 \n\t"
11470        "add r24, r0 \n\t"
11471        "adc r22, r1 \n\t"
11472        "adc r23, r25 \n\t"
11473        "mul r11, r18 \n\t"
11474        "add r24, r0 \n\t"
11475        "adc r22, r1 \n\t"
11476        "adc r23, r25 \n\t"
11477        "mul r2, r17 \n\t"
11478        "add r24, r0 \n\t"
11479        "adc r22, r1 \n\t"
11480        "adc r23, r25 \n\t"
11481        "mul r3, r16 \n\t"
11482        "add r24, r0 \n\t"
11483        "adc r22, r1 \n\t"
11484        "adc r23, r25 \n\t"
11485        "mul r4, r15 \n\t"
11486        "add r24, r0 \n\t"
11487        "adc r22, r1 \n\t"
11488        "adc r23, r25 \n\t"
11489        "mul r5, r14 \n\t"
11490        "add r24, r0 \n\t"
11491        "adc r22, r1 \n\t"
11492        "adc r23, r25 \n\t"
11493        "mul r6, r13 \n\t"
11494        "add r24, r0 \n\t"
11495        "adc r22, r1 \n\t"
11496        "adc r23, r25 \n\t"
11497        "mul r7, r12 \n\t"
11498        "add r24, r0 \n\t"
11499        "adc r22, r1 \n\t"
11500        "adc r23, r25 \n\t"
11501        "ld r0, z \n\t"
11502        "add r24, r0 \n\t"
11503        "adc r22, r25 \n\t"
11504        "adc r23, r25 \n\t"
11505        "st z+, r24 \n\t"
11506
11507        "ld r8, x+ \n\t"
11508        "ldi r24, 0 \n\t"
11509        "mul r9, r21 \n\t"
11510        "add r22, r0 \n\t"
11511        "adc r23, r1 \n\t"
11512        "adc r24, r25 \n\t"
11513        "mul r10, r20 \n\t"
11514        "add r22, r0 \n\t"
11515        "adc r23, r1 \n\t"
11516        "adc r24, r25 \n\t"
11517        "mul r11, r19 \n\t"
11518        "add r22, r0 \n\t"
11519        "adc r23, r1 \n\t"
11520        "adc r24, r25 \n\t"
11521        "mul r2, r18 \n\t"
11522        "add r22, r0 \n\t"
11523        "adc r23, r1 \n\t"
11524        "adc r24, r25 \n\t"
11525        "mul r3, r17 \n\t"
11526        "add r22, r0 \n\t"
11527        "adc r23, r1 \n\t"
11528        "adc r24, r25 \n\t"
11529        "mul r4, r16 \n\t"
11530        "add r22, r0 \n\t"
11531        "adc r23, r1 \n\t"
11532        "adc r24, r25 \n\t"
11533        "mul r5, r15 \n\t"
11534        "add r22, r0 \n\t"
11535        "adc r23, r1 \n\t"
11536        "adc r24, r25 \n\t"
11537        "mul r6, r14 \n\t"
11538        "add r22, r0 \n\t"
11539        "adc r23, r1 \n\t"
11540        "adc r24, r25 \n\t"
11541        "mul r7, r13 \n\t"
11542        "add r22, r0 \n\t"
11543        "adc r23, r1 \n\t"
11544        "adc r24, r25 \n\t"
11545        "mul r8, r12 \n\t"
11546        "add r22, r0 \n\t"
11547        "adc r23, r1 \n\t"
11548        "adc r24, r25 \n\t"
11549        "ld r0, z \n\t"
11550        "add r22, r0 \n\t"
11551        "adc r23, r25 \n\t"
11552        "adc r24, r25 \n\t"
11553        "st z+, r22 \n\t"
11554
11555        "ld r9, x+ \n\t"
11556        "ldi r22, 0 \n\t"
11557        "mul r10, r21 \n\t"
11558        "add r23, r0 \n\t"
11559        "adc r24, r1 \n\t"
11560        "adc r22, r25 \n\t"
11561        "mul r11, r20 \n\t"
11562        "add r23, r0 \n\t"
11563        "adc r24, r1 \n\t"
11564        "adc r22, r25 \n\t"
11565        "mul r2, r19 \n\t"
11566        "add r23, r0 \n\t"
11567        "adc r24, r1 \n\t"
11568        "adc r22, r25 \n\t"
11569        "mul r3, r18 \n\t"
11570        "add r23, r0 \n\t"
11571        "adc r24, r1 \n\t"
11572        "adc r22, r25 \n\t"
11573        "mul r4, r17 \n\t"
11574        "add r23, r0 \n\t"
11575        "adc r24, r1 \n\t"
11576        "adc r22, r25 \n\t"
11577        "mul r5, r16 \n\t"
11578        "add r23, r0 \n\t"
11579        "adc r24, r1 \n\t"
11580        "adc r22, r25 \n\t"
11581        "mul r6, r15 \n\t"
11582        "add r23, r0 \n\t"
11583        "adc r24, r1 \n\t"
11584        "adc r22, r25 \n\t"
11585        "mul r7, r14 \n\t"
11586        "add r23, r0 \n\t"
11587        "adc r24, r1 \n\t"
11588        "adc r22, r25 \n\t"
11589        "mul r8, r13 \n\t"
11590        "add r23, r0 \n\t"
11591        "adc r24, r1 \n\t"
11592        "adc r22, r25 \n\t"
11593        "mul r9, r12 \n\t"
11594        "add r23, r0 \n\t"
11595        "adc r24, r1 \n\t"
11596        "adc r22, r25 \n\t"
11597        "ld r0, z \n\t"
11598        "add r23, r0 \n\t"
11599        "adc r24, r25 \n\t"
11600        "adc r22, r25 \n\t"
11601        "st z+, r23 \n\t"
11602
11603        "ld r10, x+ \n\t"
11604        "ldi r23, 0 \n\t"
11605        "mul r11, r21 \n\t"
11606        "add r24, r0 \n\t"
11607        "adc r22, r1 \n\t"
11608        "adc r23, r25 \n\t"
11609        "mul r2, r20 \n\t"
11610        "add r24, r0 \n\t"
11611        "adc r22, r1 \n\t"
11612        "adc r23, r25 \n\t"
11613        "mul r3, r19 \n\t"
11614        "add r24, r0 \n\t"
11615        "adc r22, r1 \n\t"
11616        "adc r23, r25 \n\t"
11617        "mul r4, r18 \n\t"
11618        "add r24, r0 \n\t"
11619        "adc r22, r1 \n\t"
11620        "adc r23, r25 \n\t"
11621        "mul r5, r17 \n\t"
11622        "add r24, r0 \n\t"
11623        "adc r22, r1 \n\t"
11624        "adc r23, r25 \n\t"
11625        "mul r6, r16 \n\t"
11626        "add r24, r0 \n\t"
11627        "adc r22, r1 \n\t"
11628        "adc r23, r25 \n\t"
11629        "mul r7, r15 \n\t"
11630        "add r24, r0 \n\t"
11631        "adc r22, r1 \n\t"
11632        "adc r23, r25 \n\t"
11633        "mul r8, r14 \n\t"
11634        "add r24, r0 \n\t"
11635        "adc r22, r1 \n\t"
11636        "adc r23, r25 \n\t"
11637        "mul r9, r13 \n\t"
11638        "add r24, r0 \n\t"
11639        "adc r22, r1 \n\t"
11640        "adc r23, r25 \n\t"
11641        "mul r10, r12 \n\t"
11642        "add r24, r0 \n\t"
11643        "adc r22, r1 \n\t"
11644        "adc r23, r25 \n\t"
11645        "ld r0, z \n\t"
11646        "add r24, r0 \n\t"
11647        "adc r22, r25 \n\t"
11648        "adc r23, r25 \n\t"
11649        "st z+, r24 \n\t"
11650
11651        "ld r11, x+ \n\t"
11652        "ldi r24, 0 \n\t"
11653        "mul r2, r21 \n\t"
11654        "add r22, r0 \n\t"
11655        "adc r23, r1 \n\t"
11656        "adc r24, r25 \n\t"
11657        "mul r3, r20 \n\t"
11658        "add r22, r0 \n\t"
11659        "adc r23, r1 \n\t"
11660        "adc r24, r25 \n\t"
11661        "mul r4, r19 \n\t"
11662        "add r22, r0 \n\t"
11663        "adc r23, r1 \n\t"
11664        "adc r24, r25 \n\t"
11665        "mul r5, r18 \n\t"
11666        "add r22, r0 \n\t"
11667        "adc r23, r1 \n\t"
11668        "adc r24, r25 \n\t"
11669        "mul r6, r17 \n\t"
11670        "add r22, r0 \n\t"
11671        "adc r23, r1 \n\t"
11672        "adc r24, r25 \n\t"
11673        "mul r7, r16 \n\t"
11674        "add r22, r0 \n\t"
11675        "adc r23, r1 \n\t"
11676        "adc r24, r25 \n\t"
11677        "mul r8, r15 \n\t"
11678        "add r22, r0 \n\t"
11679        "adc r23, r1 \n\t"
11680        "adc r24, r25 \n\t"
11681        "mul r9, r14 \n\t"
11682        "add r22, r0 \n\t"
11683        "adc r23, r1 \n\t"
11684        "adc r24, r25 \n\t"
11685        "mul r10, r13 \n\t"
11686        "add r22, r0 \n\t"
11687        "adc r23, r1 \n\t"
11688        "adc r24, r25 \n\t"
11689        "mul r11, r12 \n\t"
11690        "add r22, r0 \n\t"
11691        "adc r23, r1 \n\t"
11692        "adc r24, r25 \n\t"
11693        "ld r0, z \n\t"
11694        "add r22, r0 \n\t"
11695        "adc r23, r25 \n\t"
11696        "adc r24, r25 \n\t"
11697        "st z+, r22 \n\t"
11698
11699        "ld r2, x+ \n\t"
11700        "ldi r22, 0 \n\t"
11701        "mul r3, r21 \n\t"
11702        "add r23, r0 \n\t"
11703        "adc r24, r1 \n\t"
11704        "adc r22, r25 \n\t"
11705        "mul r4, r20 \n\t"
11706        "add r23, r0 \n\t"
11707        "adc r24, r1 \n\t"
11708        "adc r22, r25 \n\t"
11709        "mul r5, r19 \n\t"
11710        "add r23, r0 \n\t"
11711        "adc r24, r1 \n\t"
11712        "adc r22, r25 \n\t"
11713        "mul r6, r18 \n\t"
11714        "add r23, r0 \n\t"
11715        "adc r24, r1 \n\t"
11716        "adc r22, r25 \n\t"
11717        "mul r7, r17 \n\t"
11718        "add r23, r0 \n\t"
11719        "adc r24, r1 \n\t"
11720        "adc r22, r25 \n\t"
11721        "mul r8, r16 \n\t"
11722        "add r23, r0 \n\t"
11723        "adc r24, r1 \n\t"
11724        "adc r22, r25 \n\t"
11725        "mul r9, r15 \n\t"
11726        "add r23, r0 \n\t"
11727        "adc r24, r1 \n\t"
11728        "adc r22, r25 \n\t"
11729        "mul r10, r14 \n\t"
11730        "add r23, r0 \n\t"
11731        "adc r24, r1 \n\t"
11732        "adc r22, r25 \n\t"
11733        "mul r11, r13 \n\t"
11734        "add r23, r0 \n\t"
11735        "adc r24, r1 \n\t"
11736        "adc r22, r25 \n\t"
11737        "mul r2, r12 \n\t"
11738        "add r23, r0 \n\t"
11739        "adc r24, r1 \n\t"
11740        "adc r22, r25 \n\t"
11741        "ld r0, z \n\t"
11742        "add r23, r0 \n\t"
11743        "adc r24, r25 \n\t"
11744        "adc r22, r25 \n\t"
11745        "st z+, r23 \n\t"
11746
11747        "ld r3, x+ \n\t"
11748        "ldi r23, 0 \n\t"
11749        "mul r4, r21 \n\t"
11750        "add r24, r0 \n\t"
11751        "adc r22, r1 \n\t"
11752        "adc r23, r25 \n\t"
11753        "mul r5, r20 \n\t"
11754        "add r24, r0 \n\t"
11755        "adc r22, r1 \n\t"
11756        "adc r23, r25 \n\t"
11757        "mul r6, r19 \n\t"
11758        "add r24, r0 \n\t"
11759        "adc r22, r1 \n\t"
11760        "adc r23, r25 \n\t"
11761        "mul r7, r18 \n\t"
11762        "add r24, r0 \n\t"
11763        "adc r22, r1 \n\t"
11764        "adc r23, r25 \n\t"
11765        "mul r8, r17 \n\t"
11766        "add r24, r0 \n\t"
11767        "adc r22, r1 \n\t"
11768        "adc r23, r25 \n\t"
11769        "mul r9, r16 \n\t"
11770        "add r24, r0 \n\t"
11771        "adc r22, r1 \n\t"
11772        "adc r23, r25 \n\t"
11773        "mul r10, r15 \n\t"
11774        "add r24, r0 \n\t"
11775        "adc r22, r1 \n\t"
11776        "adc r23, r25 \n\t"
11777        "mul r11, r14 \n\t"
11778        "add r24, r0 \n\t"
11779        "adc r22, r1 \n\t"
11780        "adc r23, r25 \n\t"
11781        "mul r2, r13 \n\t"
11782        "add r24, r0 \n\t"
11783        "adc r22, r1 \n\t"
11784        "adc r23, r25 \n\t"
11785        "mul r3, r12 \n\t"
11786        "add r24, r0 \n\t"
11787        "adc r22, r1 \n\t"
11788        "adc r23, r25 \n\t"
11789        "ld r0, z \n\t"
11790        "add r24, r0 \n\t"
11791        "adc r22, r25 \n\t"
11792        "adc r23, r25 \n\t"
11793        "st z+, r24 \n\t"
11794
11795        "ld r4, x+ \n\t"
11796        "ldi r24, 0 \n\t"
11797        "mul r5, r21 \n\t"
11798        "add r22, r0 \n\t"
11799        "adc r23, r1 \n\t"
11800        "adc r24, r25 \n\t"
11801        "mul r6, r20 \n\t"
11802        "add r22, r0 \n\t"
11803        "adc r23, r1 \n\t"
11804        "adc r24, r25 \n\t"
11805        "mul r7, r19 \n\t"
11806        "add r22, r0 \n\t"
11807        "adc r23, r1 \n\t"
11808        "adc r24, r25 \n\t"
11809        "mul r8, r18 \n\t"
11810        "add r22, r0 \n\t"
11811        "adc r23, r1 \n\t"
11812        "adc r24, r25 \n\t"
11813        "mul r9, r17 \n\t"
11814        "add r22, r0 \n\t"
11815        "adc r23, r1 \n\t"
11816        "adc r24, r25 \n\t"
11817        "mul r10, r16 \n\t"
11818        "add r22, r0 \n\t"
11819        "adc r23, r1 \n\t"
11820        "adc r24, r25 \n\t"
11821        "mul r11, r15 \n\t"
11822        "add r22, r0 \n\t"
11823        "adc r23, r1 \n\t"
11824        "adc r24, r25 \n\t"
11825        "mul r2, r14 \n\t"
11826        "add r22, r0 \n\t"
11827        "adc r23, r1 \n\t"
11828        "adc r24, r25 \n\t"
11829        "mul r3, r13 \n\t"
11830        "add r22, r0 \n\t"
11831        "adc r23, r1 \n\t"
11832        "adc r24, r25 \n\t"
11833        "mul r4, r12 \n\t"
11834        "add r22, r0 \n\t"
11835        "adc r23, r1 \n\t"
11836        "adc r24, r25 \n\t"
11837        "ld r0, z \n\t"
11838        "add r22, r0 \n\t"
11839        "adc r23, r25 \n\t"
11840        "adc r24, r25 \n\t"
11841        "st z+, r22 \n\t"
11842
11843        "ld r5, x+ \n\t"
11844        "ldi r22, 0 \n\t"
11845        "mul r6, r21 \n\t"
11846        "add r23, r0 \n\t"
11847        "adc r24, r1 \n\t"
11848        "adc r22, r25 \n\t"
11849        "mul r7, r20 \n\t"
11850        "add r23, r0 \n\t"
11851        "adc r24, r1 \n\t"
11852        "adc r22, r25 \n\t"
11853        "mul r8, r19 \n\t"
11854        "add r23, r0 \n\t"
11855        "adc r24, r1 \n\t"
11856        "adc r22, r25 \n\t"
11857        "mul r9, r18 \n\t"
11858        "add r23, r0 \n\t"
11859        "adc r24, r1 \n\t"
11860        "adc r22, r25 \n\t"
11861        "mul r10, r17 \n\t"
11862        "add r23, r0 \n\t"
11863        "adc r24, r1 \n\t"
11864        "adc r22, r25 \n\t"
11865        "mul r11, r16 \n\t"
11866        "add r23, r0 \n\t"
11867        "adc r24, r1 \n\t"
11868        "adc r22, r25 \n\t"
11869        "mul r2, r15 \n\t"
11870        "add r23, r0 \n\t"
11871        "adc r24, r1 \n\t"
11872        "adc r22, r25 \n\t"
11873        "mul r3, r14 \n\t"
11874        "add r23, r0 \n\t"
11875        "adc r24, r1 \n\t"
11876        "adc r22, r25 \n\t"
11877        "mul r4, r13 \n\t"
11878        "add r23, r0 \n\t"
11879        "adc r24, r1 \n\t"
11880        "adc r22, r25 \n\t"
11881        "mul r5, r12 \n\t"
11882        "add r23, r0 \n\t"
11883        "adc r24, r1 \n\t"
11884        "adc r22, r25 \n\t"
11885        "ld r0, z \n\t"
11886        "add r23, r0 \n\t"
11887        "adc r24, r25 \n\t"
11888        "adc r22, r25 \n\t"
11889        "st z+, r23 \n\t"
11890
11891        "ld r6, x+ \n\t"
11892        "ldi r23, 0 \n\t"
11893        "mul r7, r21 \n\t"
11894        "add r24, r0 \n\t"
11895        "adc r22, r1 \n\t"
11896        "adc r23, r25 \n\t"
11897        "mul r8, r20 \n\t"
11898        "add r24, r0 \n\t"
11899        "adc r22, r1 \n\t"
11900        "adc r23, r25 \n\t"
11901        "mul r9, r19 \n\t"
11902        "add r24, r0 \n\t"
11903        "adc r22, r1 \n\t"
11904        "adc r23, r25 \n\t"
11905        "mul r10, r18 \n\t"
11906        "add r24, r0 \n\t"
11907        "adc r22, r1 \n\t"
11908        "adc r23, r25 \n\t"
11909        "mul r11, r17 \n\t"
11910        "add r24, r0 \n\t"
11911        "adc r22, r1 \n\t"
11912        "adc r23, r25 \n\t"
11913        "mul r2, r16 \n\t"
11914        "add r24, r0 \n\t"
11915        "adc r22, r1 \n\t"
11916        "adc r23, r25 \n\t"
11917        "mul r3, r15 \n\t"
11918        "add r24, r0 \n\t"
11919        "adc r22, r1 \n\t"
11920        "adc r23, r25 \n\t"
11921        "mul r4, r14 \n\t"
11922        "add r24, r0 \n\t"
11923        "adc r22, r1 \n\t"
11924        "adc r23, r25 \n\t"
11925        "mul r5, r13 \n\t"
11926        "add r24, r0 \n\t"
11927        "adc r22, r1 \n\t"
11928        "adc r23, r25 \n\t"
11929        "mul r6, r12 \n\t"
11930        "add r24, r0 \n\t"
11931        "adc r22, r1 \n\t"
11932        "adc r23, r25 \n\t"
11933        "ld r0, z \n\t"
11934        "add r24, r0 \n\t"
11935        "adc r22, r25 \n\t"
11936        "adc r23, r25 \n\t"
11937        "st z+, r24 \n\t"
11938
11939        "ld r7, x+ \n\t"
11940        "ldi r24, 0 \n\t"
11941        "mul r8, r21 \n\t"
11942        "add r22, r0 \n\t"
11943        "adc r23, r1 \n\t"
11944        "adc r24, r25 \n\t"
11945        "mul r9, r20 \n\t"
11946        "add r22, r0 \n\t"
11947        "adc r23, r1 \n\t"
11948        "adc r24, r25 \n\t"
11949        "mul r10, r19 \n\t"
11950        "add r22, r0 \n\t"
11951        "adc r23, r1 \n\t"
11952        "adc r24, r25 \n\t"
11953        "mul r11, r18 \n\t"
11954        "add r22, r0 \n\t"
11955        "adc r23, r1 \n\t"
11956        "adc r24, r25 \n\t"
11957        "mul r2, r17 \n\t"
11958        "add r22, r0 \n\t"
11959        "adc r23, r1 \n\t"
11960        "adc r24, r25 \n\t"
11961        "mul r3, r16 \n\t"
11962        "add r22, r0 \n\t"
11963        "adc r23, r1 \n\t"
11964        "adc r24, r25 \n\t"
11965        "mul r4, r15 \n\t"
11966        "add r22, r0 \n\t"
11967        "adc r23, r1 \n\t"
11968        "adc r24, r25 \n\t"
11969        "mul r5, r14 \n\t"
11970        "add r22, r0 \n\t"
11971        "adc r23, r1 \n\t"
11972        "adc r24, r25 \n\t"
11973        "mul r6, r13 \n\t"
11974        "add r22, r0 \n\t"
11975        "adc r23, r1 \n\t"
11976        "adc r24, r25 \n\t"
11977        "mul r7, r12 \n\t"
11978        "add r22, r0 \n\t"
11979        "adc r23, r1 \n\t"
11980        "adc r24, r25 \n\t"
11981        "ld r0, z \n\t"
11982        "add r22, r0 \n\t"
11983        "adc r23, r25 \n\t"
11984        "adc r24, r25 \n\t"
11985        "st z+, r22 \n\t"
11986
11987        "ld r8, x+ \n\t"
11988        "ldi r22, 0 \n\t"
11989        "mul r9, r21 \n\t"
11990        "add r23, r0 \n\t"
11991        "adc r24, r1 \n\t"
11992        "adc r22, r25 \n\t"
11993        "mul r10, r20 \n\t"
11994        "add r23, r0 \n\t"
11995        "adc r24, r1 \n\t"
11996        "adc r22, r25 \n\t"
11997        "mul r11, r19 \n\t"
11998        "add r23, r0 \n\t"
11999        "adc r24, r1 \n\t"
12000        "adc r22, r25 \n\t"
12001        "mul r2, r18 \n\t"
12002        "add r23, r0 \n\t"
12003        "adc r24, r1 \n\t"
12004        "adc r22, r25 \n\t"
12005        "mul r3, r17 \n\t"
12006        "add r23, r0 \n\t"
12007        "adc r24, r1 \n\t"
12008        "adc r22, r25 \n\t"
12009        "mul r4, r16 \n\t"
12010        "add r23, r0 \n\t"
12011        "adc r24, r1 \n\t"
12012        "adc r22, r25 \n\t"
12013        "mul r5, r15 \n\t"
12014        "add r23, r0 \n\t"
12015        "adc r24, r1 \n\t"
12016        "adc r22, r25 \n\t"
12017        "mul r6, r14 \n\t"
12018        "add r23, r0 \n\t"
12019        "adc r24, r1 \n\t"
12020        "adc r22, r25 \n\t"
12021        "mul r7, r13 \n\t"
12022        "add r23, r0 \n\t"
12023        "adc r24, r1 \n\t"
12024        "adc r22, r25 \n\t"
12025        "mul r8, r12 \n\t"
12026        "add r23, r0 \n\t"
12027        "adc r24, r1 \n\t"
12028        "adc r22, r25 \n\t"
12029        "ld r0, z \n\t"
12030        "add r23, r0 \n\t"
12031        "adc r24, r25 \n\t"
12032        "adc r22, r25 \n\t"
12033        "st z+, r23 \n\t"
12034
12035        "ld r9, x+ \n\t"
12036        "ldi r23, 0 \n\t"
12037        "mul r10, r21 \n\t"
12038        "add r24, r0 \n\t"
12039        "adc r22, r1 \n\t"
12040        "adc r23, r25 \n\t"
12041        "mul r11, r20 \n\t"
12042        "add r24, r0 \n\t"
12043        "adc r22, r1 \n\t"
12044        "adc r23, r25 \n\t"
12045        "mul r2, r19 \n\t"
12046        "add r24, r0 \n\t"
12047        "adc r22, r1 \n\t"
12048        "adc r23, r25 \n\t"
12049        "mul r3, r18 \n\t"
12050        "add r24, r0 \n\t"
12051        "adc r22, r1 \n\t"
12052        "adc r23, r25 \n\t"
12053        "mul r4, r17 \n\t"
12054        "add r24, r0 \n\t"
12055        "adc r22, r1 \n\t"
12056        "adc r23, r25 \n\t"
12057        "mul r5, r16 \n\t"
12058        "add r24, r0 \n\t"
12059        "adc r22, r1 \n\t"
12060        "adc r23, r25 \n\t"
12061        "mul r6, r15 \n\t"
12062        "add r24, r0 \n\t"
12063        "adc r22, r1 \n\t"
12064        "adc r23, r25 \n\t"
12065        "mul r7, r14 \n\t"
12066        "add r24, r0 \n\t"
12067        "adc r22, r1 \n\t"
12068        "adc r23, r25 \n\t"
12069        "mul r8, r13 \n\t"
12070        "add r24, r0 \n\t"
12071        "adc r22, r1 \n\t"
12072        "adc r23, r25 \n\t"
12073        "mul r9, r12 \n\t"
12074        "add r24, r0 \n\t"
12075        "adc r22, r1 \n\t"
12076        "adc r23, r25 \n\t"
12077        "ld r0, z \n\t"
12078        "add r24, r0 \n\t"
12079        "adc r22, r25 \n\t"
12080        "adc r23, r25 \n\t"
12081        "st z+, r24 \n\t"
12082
12083        "ld r10, x+ \n\t"
12084        "ldi r24, 0 \n\t"
12085        "mul r11, r21 \n\t"
12086        "add r22, r0 \n\t"
12087        "adc r23, r1 \n\t"
12088        "adc r24, r25 \n\t"
12089        "mul r2, r20 \n\t"
12090        "add r22, r0 \n\t"
12091        "adc r23, r1 \n\t"
12092        "adc r24, r25 \n\t"
12093        "mul r3, r19 \n\t"
12094        "add r22, r0 \n\t"
12095        "adc r23, r1 \n\t"
12096        "adc r24, r25 \n\t"
12097        "mul r4, r18 \n\t"
12098        "add r22, r0 \n\t"
12099        "adc r23, r1 \n\t"
12100        "adc r24, r25 \n\t"
12101        "mul r5, r17 \n\t"
12102        "add r22, r0 \n\t"
12103        "adc r23, r1 \n\t"
12104        "adc r24, r25 \n\t"
12105        "mul r6, r16 \n\t"
12106        "add r22, r0 \n\t"
12107        "adc r23, r1 \n\t"
12108        "adc r24, r25 \n\t"
12109        "mul r7, r15 \n\t"
12110        "add r22, r0 \n\t"
12111        "adc r23, r1 \n\t"
12112        "adc r24, r25 \n\t"
12113        "mul r8, r14 \n\t"
12114        "add r22, r0 \n\t"
12115        "adc r23, r1 \n\t"
12116        "adc r24, r25 \n\t"
12117        "mul r9, r13 \n\t"
12118        "add r22, r0 \n\t"
12119        "adc r23, r1 \n\t"
12120        "adc r24, r25 \n\t"
12121        "mul r10, r12 \n\t"
12122        "add r22, r0 \n\t"
12123        "adc r23, r1 \n\t"
12124        "adc r24, r25 \n\t"
12125        "ld r0, z \n\t"
12126        "add r22, r0 \n\t"
12127        "adc r23, r25 \n\t"
12128        "adc r24, r25 \n\t"
12129        "st z+, r22 \n\t"
12130
12131        "ld r11, x+ \n\t"
12132        "ldi r22, 0 \n\t"
12133        "mul r2, r21 \n\t"
12134        "add r23, r0 \n\t"
12135        "adc r24, r1 \n\t"
12136        "adc r22, r25 \n\t"
12137        "mul r3, r20 \n\t"
12138        "add r23, r0 \n\t"
12139        "adc r24, r1 \n\t"
12140        "adc r22, r25 \n\t"
12141        "mul r4, r19 \n\t"
12142        "add r23, r0 \n\t"
12143        "adc r24, r1 \n\t"
12144        "adc r22, r25 \n\t"
12145        "mul r5, r18 \n\t"
12146        "add r23, r0 \n\t"
12147        "adc r24, r1 \n\t"
12148        "adc r22, r25 \n\t"
12149        "mul r6, r17 \n\t"
12150        "add r23, r0 \n\t"
12151        "adc r24, r1 \n\t"
12152        "adc r22, r25 \n\t"
12153        "mul r7, r16 \n\t"
12154        "add r23, r0 \n\t"
12155        "adc r24, r1 \n\t"
12156        "adc r22, r25 \n\t"
12157        "mul r8, r15 \n\t"
12158        "add r23, r0 \n\t"
12159        "adc r24, r1 \n\t"
12160        "adc r22, r25 \n\t"
12161        "mul r9, r14 \n\t"
12162        "add r23, r0 \n\t"
12163        "adc r24, r1 \n\t"
12164        "adc r22, r25 \n\t"
12165        "mul r10, r13 \n\t"
12166        "add r23, r0 \n\t"
12167        "adc r24, r1 \n\t"
12168        "adc r22, r25 \n\t"
12169        "mul r11, r12 \n\t"
12170        "add r23, r0 \n\t"
12171        "adc r24, r1 \n\t"
12172        "adc r22, r25 \n\t"
12173        "ld r0, z \n\t"
12174        "add r23, r0 \n\t"
12175        "adc r24, r25 \n\t"
12176        "adc r22, r25 \n\t"
12177        "st z+, r23 \n\t"
12178
12179        "ld r2, x+ \n\t"
12180        "ldi r23, 0 \n\t"
12181        "mul r3, r21 \n\t"
12182        "add r24, r0 \n\t"
12183        "adc r22, r1 \n\t"
12184        "adc r23, r25 \n\t"
12185        "mul r4, r20 \n\t"
12186        "add r24, r0 \n\t"
12187        "adc r22, r1 \n\t"
12188        "adc r23, r25 \n\t"
12189        "mul r5, r19 \n\t"
12190        "add r24, r0 \n\t"
12191        "adc r22, r1 \n\t"
12192        "adc r23, r25 \n\t"
12193        "mul r6, r18 \n\t"
12194        "add r24, r0 \n\t"
12195        "adc r22, r1 \n\t"
12196        "adc r23, r25 \n\t"
12197        "mul r7, r17 \n\t"
12198        "add r24, r0 \n\t"
12199        "adc r22, r1 \n\t"
12200        "adc r23, r25 \n\t"
12201        "mul r8, r16 \n\t"
12202        "add r24, r0 \n\t"
12203        "adc r22, r1 \n\t"
12204        "adc r23, r25 \n\t"
12205        "mul r9, r15 \n\t"
12206        "add r24, r0 \n\t"
12207        "adc r22, r1 \n\t"
12208        "adc r23, r25 \n\t"
12209        "mul r10, r14 \n\t"
12210        "add r24, r0 \n\t"
12211        "adc r22, r1 \n\t"
12212        "adc r23, r25 \n\t"
12213        "mul r11, r13 \n\t"
12214        "add r24, r0 \n\t"
12215        "adc r22, r1 \n\t"
12216        "adc r23, r25 \n\t"
12217        "mul r2, r12 \n\t"
12218        "add r24, r0 \n\t"
12219        "adc r22, r1 \n\t"
12220        "adc r23, r25 \n\t"
12221        "ld r0, z \n\t"
12222        "add r24, r0 \n\t"
12223        "adc r22, r25 \n\t"
12224        "adc r23, r25 \n\t"
12225        "st z+, r24 \n\t"
12226
12227        "ld r3, x+ \n\t"
12228        "ldi r24, 0 \n\t"
12229        "mul r4, r21 \n\t"
12230        "add r22, r0 \n\t"
12231        "adc r23, r1 \n\t"
12232        "adc r24, r25 \n\t"
12233        "mul r5, r20 \n\t"
12234        "add r22, r0 \n\t"
12235        "adc r23, r1 \n\t"
12236        "adc r24, r25 \n\t"
12237        "mul r6, r19 \n\t"
12238        "add r22, r0 \n\t"
12239        "adc r23, r1 \n\t"
12240        "adc r24, r25 \n\t"
12241        "mul r7, r18 \n\t"
12242        "add r22, r0 \n\t"
12243        "adc r23, r1 \n\t"
12244        "adc r24, r25 \n\t"
12245        "mul r8, r17 \n\t"
12246        "add r22, r0 \n\t"
12247        "adc r23, r1 \n\t"
12248        "adc r24, r25 \n\t"
12249        "mul r9, r16 \n\t"
12250        "add r22, r0 \n\t"
12251        "adc r23, r1 \n\t"
12252        "adc r24, r25 \n\t"
12253        "mul r10, r15 \n\t"
12254        "add r22, r0 \n\t"
12255        "adc r23, r1 \n\t"
12256        "adc r24, r25 \n\t"
12257        "mul r11, r14 \n\t"
12258        "add r22, r0 \n\t"
12259        "adc r23, r1 \n\t"
12260        "adc r24, r25 \n\t"
12261        "mul r2, r13 \n\t"
12262        "add r22, r0 \n\t"
12263        "adc r23, r1 \n\t"
12264        "adc r24, r25 \n\t"
12265        "mul r3, r12 \n\t"
12266        "add r22, r0 \n\t"
12267        "adc r23, r1 \n\t"
12268        "adc r24, r25 \n\t"
12269        "ld r0, z \n\t"
12270        "add r22, r0 \n\t"
12271        "adc r23, r25 \n\t"
12272        "adc r24, r25 \n\t"
12273        "st z+, r22 \n\t"
12274
12275        "ld r12, y+ \n\t"
12276        "ldi r22, 0 \n\t"
12277        "mul r4, r12 \n\t"
12278        "add r23, r0 \n\t"
12279        "adc r24, r1 \n\t"
12280        "adc r22, r25 \n\t"
12281        "mul r5, r21 \n\t"
12282        "add r23, r0 \n\t"
12283        "adc r24, r1 \n\t"
12284        "adc r22, r25 \n\t"
12285        "mul r6, r20 \n\t"
12286        "add r23, r0 \n\t"
12287        "adc r24, r1 \n\t"
12288        "adc r22, r25 \n\t"
12289        "mul r7, r19 \n\t"
12290        "add r23, r0 \n\t"
12291        "adc r24, r1 \n\t"
12292        "adc r22, r25 \n\t"
12293        "mul r8, r18 \n\t"
12294        "add r23, r0 \n\t"
12295        "adc r24, r1 \n\t"
12296        "adc r22, r25 \n\t"
12297        "mul r9, r17 \n\t"
12298        "add r23, r0 \n\t"
12299        "adc r24, r1 \n\t"
12300        "adc r22, r25 \n\t"
12301        "mul r10, r16 \n\t"
12302        "add r23, r0 \n\t"
12303        "adc r24, r1 \n\t"
12304        "adc r22, r25 \n\t"
12305        "mul r11, r15 \n\t"
12306        "add r23, r0 \n\t"
12307        "adc r24, r1 \n\t"
12308        "adc r22, r25 \n\t"
12309        "mul r2, r14 \n\t"
12310        "add r23, r0 \n\t"
12311        "adc r24, r1 \n\t"
12312        "adc r22, r25 \n\t"
12313        "mul r3, r13 \n\t"
12314        "add r23, r0 \n\t"
12315        "adc r24, r1 \n\t"
12316        "adc r22, r25 \n\t"
12317        "ld r0, z \n\t"
12318        "add r23, r0 \n\t"
12319        "adc r24, r25 \n\t"
12320        "adc r22, r25 \n\t"
12321        "st z+, r23 \n\t"
12322
12323        "ld r13, y+ \n\t"
12324        "ldi r23, 0 \n\t"
12325        "mul r4, r13 \n\t"
12326        "add r24, r0 \n\t"
12327        "adc r22, r1 \n\t"
12328        "adc r23, r25 \n\t"
12329        "mul r5, r12 \n\t"
12330        "add r24, r0 \n\t"
12331        "adc r22, r1 \n\t"
12332        "adc r23, r25 \n\t"
12333        "mul r6, r21 \n\t"
12334        "add r24, r0 \n\t"
12335        "adc r22, r1 \n\t"
12336        "adc r23, r25 \n\t"
12337        "mul r7, r20 \n\t"
12338        "add r24, r0 \n\t"
12339        "adc r22, r1 \n\t"
12340        "adc r23, r25 \n\t"
12341        "mul r8, r19 \n\t"
12342        "add r24, r0 \n\t"
12343        "adc r22, r1 \n\t"
12344        "adc r23, r25 \n\t"
12345        "mul r9, r18 \n\t"
12346        "add r24, r0 \n\t"
12347        "adc r22, r1 \n\t"
12348        "adc r23, r25 \n\t"
12349        "mul r10, r17 \n\t"
12350        "add r24, r0 \n\t"
12351        "adc r22, r1 \n\t"
12352        "adc r23, r25 \n\t"
12353        "mul r11, r16 \n\t"
12354        "add r24, r0 \n\t"
12355        "adc r22, r1 \n\t"
12356        "adc r23, r25 \n\t"
12357        "mul r2, r15 \n\t"
12358        "add r24, r0 \n\t"
12359        "adc r22, r1 \n\t"
12360        "adc r23, r25 \n\t"
12361        "mul r3, r14 \n\t"
12362        "add r24, r0 \n\t"
12363        "adc r22, r1 \n\t"
12364        "adc r23, r25 \n\t"
12365        "ld r0, z \n\t"
12366        "add r24, r0 \n\t"
12367        "adc r22, r25 \n\t"
12368        "adc r23, r25 \n\t"
12369        "st z+, r24 \n\t"
12370
12371        "ld r14, y+ \n\t"
12372        "ldi r24, 0 \n\t"
12373        "mul r4, r14 \n\t"
12374        "add r22, r0 \n\t"
12375        "adc r23, r1 \n\t"
12376        "adc r24, r25 \n\t"
12377        "mul r5, r13 \n\t"
12378        "add r22, r0 \n\t"
12379        "adc r23, r1 \n\t"
12380        "adc r24, r25 \n\t"
12381        "mul r6, r12 \n\t"
12382        "add r22, r0 \n\t"
12383        "adc r23, r1 \n\t"
12384        "adc r24, r25 \n\t"
12385        "mul r7, r21 \n\t"
12386        "add r22, r0 \n\t"
12387        "adc r23, r1 \n\t"
12388        "adc r24, r25 \n\t"
12389        "mul r8, r20 \n\t"
12390        "add r22, r0 \n\t"
12391        "adc r23, r1 \n\t"
12392        "adc r24, r25 \n\t"
12393        "mul r9, r19 \n\t"
12394        "add r22, r0 \n\t"
12395        "adc r23, r1 \n\t"
12396        "adc r24, r25 \n\t"
12397        "mul r10, r18 \n\t"
12398        "add r22, r0 \n\t"
12399        "adc r23, r1 \n\t"
12400        "adc r24, r25 \n\t"
12401        "mul r11, r17 \n\t"
12402        "add r22, r0 \n\t"
12403        "adc r23, r1 \n\t"
12404        "adc r24, r25 \n\t"
12405        "mul r2, r16 \n\t"
12406        "add r22, r0 \n\t"
12407        "adc r23, r1 \n\t"
12408        "adc r24, r25 \n\t"
12409        "mul r3, r15 \n\t"
12410        "add r22, r0 \n\t"
12411        "adc r23, r1 \n\t"
12412        "adc r24, r25 \n\t"
12413        "ld r0, z \n\t"
12414        "add r22, r0 \n\t"
12415        "adc r23, r25 \n\t"
12416        "adc r24, r25 \n\t"
12417        "st z+, r22 \n\t"
12418
12419        "ld r15, y+ \n\t"
12420        "ldi r22, 0 \n\t"
12421        "mul r4, r15 \n\t"
12422        "add r23, r0 \n\t"
12423        "adc r24, r1 \n\t"
12424        "adc r22, r25 \n\t"
12425        "mul r5, r14 \n\t"
12426        "add r23, r0 \n\t"
12427        "adc r24, r1 \n\t"
12428        "adc r22, r25 \n\t"
12429        "mul r6, r13 \n\t"
12430        "add r23, r0 \n\t"
12431        "adc r24, r1 \n\t"
12432        "adc r22, r25 \n\t"
12433        "mul r7, r12 \n\t"
12434        "add r23, r0 \n\t"
12435        "adc r24, r1 \n\t"
12436        "adc r22, r25 \n\t"
12437        "mul r8, r21 \n\t"
12438        "add r23, r0 \n\t"
12439        "adc r24, r1 \n\t"
12440        "adc r22, r25 \n\t"
12441        "mul r9, r20 \n\t"
12442        "add r23, r0 \n\t"
12443        "adc r24, r1 \n\t"
12444        "adc r22, r25 \n\t"
12445        "mul r10, r19 \n\t"
12446        "add r23, r0 \n\t"
12447        "adc r24, r1 \n\t"
12448        "adc r22, r25 \n\t"
12449        "mul r11, r18 \n\t"
12450        "add r23, r0 \n\t"
12451        "adc r24, r1 \n\t"
12452        "adc r22, r25 \n\t"
12453        "mul r2, r17 \n\t"
12454        "add r23, r0 \n\t"
12455        "adc r24, r1 \n\t"
12456        "adc r22, r25 \n\t"
12457        "mul r3, r16 \n\t"
12458        "add r23, r0 \n\t"
12459        "adc r24, r1 \n\t"
12460        "adc r22, r25 \n\t"
12461        "ld r0, z \n\t"
12462        "add r23, r0 \n\t"
12463        "adc r24, r25 \n\t"
12464        "adc r22, r25 \n\t"
12465        "st z+, r23 \n\t"
12466
12467        "ld r16, y+ \n\t"
12468        "ldi r23, 0 \n\t"
12469        "mul r4, r16 \n\t"
12470        "add r24, r0 \n\t"
12471        "adc r22, r1 \n\t"
12472        "adc r23, r25 \n\t"
12473        "mul r5, r15 \n\t"
12474        "add r24, r0 \n\t"
12475        "adc r22, r1 \n\t"
12476        "adc r23, r25 \n\t"
12477        "mul r6, r14 \n\t"
12478        "add r24, r0 \n\t"
12479        "adc r22, r1 \n\t"
12480        "adc r23, r25 \n\t"
12481        "mul r7, r13 \n\t"
12482        "add r24, r0 \n\t"
12483        "adc r22, r1 \n\t"
12484        "adc r23, r25 \n\t"
12485        "mul r8, r12 \n\t"
12486        "add r24, r0 \n\t"
12487        "adc r22, r1 \n\t"
12488        "adc r23, r25 \n\t"
12489        "mul r9, r21 \n\t"
12490        "add r24, r0 \n\t"
12491        "adc r22, r1 \n\t"
12492        "adc r23, r25 \n\t"
12493        "mul r10, r20 \n\t"
12494        "add r24, r0 \n\t"
12495        "adc r22, r1 \n\t"
12496        "adc r23, r25 \n\t"
12497        "mul r11, r19 \n\t"
12498        "add r24, r0 \n\t"
12499        "adc r22, r1 \n\t"
12500        "adc r23, r25 \n\t"
12501        "mul r2, r18 \n\t"
12502        "add r24, r0 \n\t"
12503        "adc r22, r1 \n\t"
12504        "adc r23, r25 \n\t"
12505        "mul r3, r17 \n\t"
12506        "add r24, r0 \n\t"
12507        "adc r22, r1 \n\t"
12508        "adc r23, r25 \n\t"
12509        "ld r0, z \n\t"
12510        "add r24, r0 \n\t"
12511        "adc r22, r25 \n\t"
12512        "adc r23, r25 \n\t"
12513        "st z+, r24 \n\t"
12514
12515        "ld r17, y+ \n\t"
12516        "ldi r24, 0 \n\t"
12517        "mul r4, r17 \n\t"
12518        "add r22, r0 \n\t"
12519        "adc r23, r1 \n\t"
12520        "adc r24, r25 \n\t"
12521        "mul r5, r16 \n\t"
12522        "add r22, r0 \n\t"
12523        "adc r23, r1 \n\t"
12524        "adc r24, r25 \n\t"
12525        "mul r6, r15 \n\t"
12526        "add r22, r0 \n\t"
12527        "adc r23, r1 \n\t"
12528        "adc r24, r25 \n\t"
12529        "mul r7, r14 \n\t"
12530        "add r22, r0 \n\t"
12531        "adc r23, r1 \n\t"
12532        "adc r24, r25 \n\t"
12533        "mul r8, r13 \n\t"
12534        "add r22, r0 \n\t"
12535        "adc r23, r1 \n\t"
12536        "adc r24, r25 \n\t"
12537        "mul r9, r12 \n\t"
12538        "add r22, r0 \n\t"
12539        "adc r23, r1 \n\t"
12540        "adc r24, r25 \n\t"
12541        "mul r10, r21 \n\t"
12542        "add r22, r0 \n\t"
12543        "adc r23, r1 \n\t"
12544        "adc r24, r25 \n\t"
12545        "mul r11, r20 \n\t"
12546        "add r22, r0 \n\t"
12547        "adc r23, r1 \n\t"
12548        "adc r24, r25 \n\t"
12549        "mul r2, r19 \n\t"
12550        "add r22, r0 \n\t"
12551        "adc r23, r1 \n\t"
12552        "adc r24, r25 \n\t"
12553        "mul r3, r18 \n\t"
12554        "add r22, r0 \n\t"
12555        "adc r23, r1 \n\t"
12556        "adc r24, r25 \n\t"
12557        "ld r0, z \n\t"
12558        "add r22, r0 \n\t"
12559        "adc r23, r25 \n\t"
12560        "adc r24, r25 \n\t"
12561        "st z+, r22 \n\t"
12562
12563        "ld r18, y+ \n\t"
12564        "ldi r22, 0 \n\t"
12565        "mul r4, r18 \n\t"
12566        "add r23, r0 \n\t"
12567        "adc r24, r1 \n\t"
12568        "adc r22, r25 \n\t"
12569        "mul r5, r17 \n\t"
12570        "add r23, r0 \n\t"
12571        "adc r24, r1 \n\t"
12572        "adc r22, r25 \n\t"
12573        "mul r6, r16 \n\t"
12574        "add r23, r0 \n\t"
12575        "adc r24, r1 \n\t"
12576        "adc r22, r25 \n\t"
12577        "mul r7, r15 \n\t"
12578        "add r23, r0 \n\t"
12579        "adc r24, r1 \n\t"
12580        "adc r22, r25 \n\t"
12581        "mul r8, r14 \n\t"
12582        "add r23, r0 \n\t"
12583        "adc r24, r1 \n\t"
12584        "adc r22, r25 \n\t"
12585        "mul r9, r13 \n\t"
12586        "add r23, r0 \n\t"
12587        "adc r24, r1 \n\t"
12588        "adc r22, r25 \n\t"
12589        "mul r10, r12 \n\t"
12590        "add r23, r0 \n\t"
12591        "adc r24, r1 \n\t"
12592        "adc r22, r25 \n\t"
12593        "mul r11, r21 \n\t"
12594        "add r23, r0 \n\t"
12595        "adc r24, r1 \n\t"
12596        "adc r22, r25 \n\t"
12597        "mul r2, r20 \n\t"
12598        "add r23, r0 \n\t"
12599        "adc r24, r1 \n\t"
12600        "adc r22, r25 \n\t"
12601        "mul r3, r19 \n\t"
12602        "add r23, r0 \n\t"
12603        "adc r24, r1 \n\t"
12604        "adc r22, r25 \n\t"
12605        "ld r0, z \n\t"
12606        "add r23, r0 \n\t"
12607        "adc r24, r25 \n\t"
12608        "adc r22, r25 \n\t"
12609        "st z+, r23 \n\t"
12610
12611        "ld r19, y+ \n\t"
12612        "ldi r23, 0 \n\t"
12613        "mul r4, r19 \n\t"
12614        "add r24, r0 \n\t"
12615        "adc r22, r1 \n\t"
12616        "adc r23, r25 \n\t"
12617        "mul r5, r18 \n\t"
12618        "add r24, r0 \n\t"
12619        "adc r22, r1 \n\t"
12620        "adc r23, r25 \n\t"
12621        "mul r6, r17 \n\t"
12622        "add r24, r0 \n\t"
12623        "adc r22, r1 \n\t"
12624        "adc r23, r25 \n\t"
12625        "mul r7, r16 \n\t"
12626        "add r24, r0 \n\t"
12627        "adc r22, r1 \n\t"
12628        "adc r23, r25 \n\t"
12629        "mul r8, r15 \n\t"
12630        "add r24, r0 \n\t"
12631        "adc r22, r1 \n\t"
12632        "adc r23, r25 \n\t"
12633        "mul r9, r14 \n\t"
12634        "add r24, r0 \n\t"
12635        "adc r22, r1 \n\t"
12636        "adc r23, r25 \n\t"
12637        "mul r10, r13 \n\t"
12638        "add r24, r0 \n\t"
12639        "adc r22, r1 \n\t"
12640        "adc r23, r25 \n\t"
12641        "mul r11, r12 \n\t"
12642        "add r24, r0 \n\t"
12643        "adc r22, r1 \n\t"
12644        "adc r23, r25 \n\t"
12645        "mul r2, r21 \n\t"
12646        "add r24, r0 \n\t"
12647        "adc r22, r1 \n\t"
12648        "adc r23, r25 \n\t"
12649        "mul r3, r20 \n\t"
12650        "add r24, r0 \n\t"
12651        "adc r22, r1 \n\t"
12652        "adc r23, r25 \n\t"
12653        "ld r0, z \n\t"
12654        "add r24, r0 \n\t"
12655        "adc r22, r25 \n\t"
12656        "adc r23, r25 \n\t"
12657        "st z+, r24 \n\t"
12658
12659        "ld r20, y+ \n\t"
12660        "ldi r24, 0 \n\t"
12661        "mul r4, r20 \n\t"
12662        "add r22, r0 \n\t"
12663        "adc r23, r1 \n\t"
12664        "adc r24, r25 \n\t"
12665        "mul r5, r19 \n\t"
12666        "add r22, r0 \n\t"
12667        "adc r23, r1 \n\t"
12668        "adc r24, r25 \n\t"
12669        "mul r6, r18 \n\t"
12670        "add r22, r0 \n\t"
12671        "adc r23, r1 \n\t"
12672        "adc r24, r25 \n\t"
12673        "mul r7, r17 \n\t"
12674        "add r22, r0 \n\t"
12675        "adc r23, r1 \n\t"
12676        "adc r24, r25 \n\t"
12677        "mul r8, r16 \n\t"
12678        "add r22, r0 \n\t"
12679        "adc r23, r1 \n\t"
12680        "adc r24, r25 \n\t"
12681        "mul r9, r15 \n\t"
12682        "add r22, r0 \n\t"
12683        "adc r23, r1 \n\t"
12684        "adc r24, r25 \n\t"
12685        "mul r10, r14 \n\t"
12686        "add r22, r0 \n\t"
12687        "adc r23, r1 \n\t"
12688        "adc r24, r25 \n\t"
12689        "mul r11, r13 \n\t"
12690        "add r22, r0 \n\t"
12691        "adc r23, r1 \n\t"
12692        "adc r24, r25 \n\t"
12693        "mul r2, r12 \n\t"
12694        "add r22, r0 \n\t"
12695        "adc r23, r1 \n\t"
12696        "adc r24, r25 \n\t"
12697        "mul r3, r21 \n\t"
12698        "add r22, r0 \n\t"
12699        "adc r23, r1 \n\t"
12700        "adc r24, r25 \n\t"
12701        "ld r0, z \n\t"
12702        "add r22, r0 \n\t"
12703        "adc r23, r25 \n\t"
12704        "adc r24, r25 \n\t"
12705        "st z+, r22 \n\t"
12706
12707        "ld r21, y+ \n\t"
12708        "ldi r22, 0 \n\t"
12709        "mul r4, r21 \n\t"
12710        "add r23, r0 \n\t"
12711        "adc r24, r1 \n\t"
12712        "adc r22, r25 \n\t"
12713        "mul r5, r20 \n\t"
12714        "add r23, r0 \n\t"
12715        "adc r24, r1 \n\t"
12716        "adc r22, r25 \n\t"
12717        "mul r6, r19 \n\t"
12718        "add r23, r0 \n\t"
12719        "adc r24, r1 \n\t"
12720        "adc r22, r25 \n\t"
12721        "mul r7, r18 \n\t"
12722        "add r23, r0 \n\t"
12723        "adc r24, r1 \n\t"
12724        "adc r22, r25 \n\t"
12725        "mul r8, r17 \n\t"
12726        "add r23, r0 \n\t"
12727        "adc r24, r1 \n\t"
12728        "adc r22, r25 \n\t"
12729        "mul r9, r16 \n\t"
12730        "add r23, r0 \n\t"
12731        "adc r24, r1 \n\t"
12732        "adc r22, r25 \n\t"
12733        "mul r10, r15 \n\t"
12734        "add r23, r0 \n\t"
12735        "adc r24, r1 \n\t"
12736        "adc r22, r25 \n\t"
12737        "mul r11, r14 \n\t"
12738        "add r23, r0 \n\t"
12739        "adc r24, r1 \n\t"
12740        "adc r22, r25 \n\t"
12741        "mul r2, r13 \n\t"
12742        "add r23, r0 \n\t"
12743        "adc r24, r1 \n\t"
12744        "adc r22, r25 \n\t"
12745        "mul r3, r12 \n\t"
12746        "add r23, r0 \n\t"
12747        "adc r24, r1 \n\t"
12748        "adc r22, r25 \n\t"
12749        "ld r0, z \n\t"
12750        "add r23, r0 \n\t"
12751        "adc r24, r25 \n\t"
12752        "adc r22, r25 \n\t"
12753        "st z+, r23 \n\t"
12754
12755        "ld r12, y+ \n\t"
12756        "ldi r23, 0 \n\t"
12757        "mul r4, r12 \n\t"
12758        "add r24, r0 \n\t"
12759        "adc r22, r1 \n\t"
12760        "adc r23, r25 \n\t"
12761        "mul r5, r21 \n\t"
12762        "add r24, r0 \n\t"
12763        "adc r22, r1 \n\t"
12764        "adc r23, r25 \n\t"
12765        "mul r6, r20 \n\t"
12766        "add r24, r0 \n\t"
12767        "adc r22, r1 \n\t"
12768        "adc r23, r25 \n\t"
12769        "mul r7, r19 \n\t"
12770        "add r24, r0 \n\t"
12771        "adc r22, r1 \n\t"
12772        "adc r23, r25 \n\t"
12773        "mul r8, r18 \n\t"
12774        "add r24, r0 \n\t"
12775        "adc r22, r1 \n\t"
12776        "adc r23, r25 \n\t"
12777        "mul r9, r17 \n\t"
12778        "add r24, r0 \n\t"
12779        "adc r22, r1 \n\t"
12780        "adc r23, r25 \n\t"
12781        "mul r10, r16 \n\t"
12782        "add r24, r0 \n\t"
12783        "adc r22, r1 \n\t"
12784        "adc r23, r25 \n\t"
12785        "mul r11, r15 \n\t"
12786        "add r24, r0 \n\t"
12787        "adc r22, r1 \n\t"
12788        "adc r23, r25 \n\t"
12789        "mul r2, r14 \n\t"
12790        "add r24, r0 \n\t"
12791        "adc r22, r1 \n\t"
12792        "adc r23, r25 \n\t"
12793        "mul r3, r13 \n\t"
12794        "add r24, r0 \n\t"
12795        "adc r22, r1 \n\t"
12796        "adc r23, r25 \n\t"
12797        "ld r0, z \n\t"
12798        "add r24, r0 \n\t"
12799        "adc r22, r25 \n\t"
12800        "adc r23, r25 \n\t"
12801        "st z+, r24 \n\t"
12802
12803        "ld r13, y+ \n\t"
12804        "ldi r24, 0 \n\t"
12805        "mul r4, r13 \n\t"
12806        "add r22, r0 \n\t"
12807        "adc r23, r1 \n\t"
12808        "adc r24, r25 \n\t"
12809        "mul r5, r12 \n\t"
12810        "add r22, r0 \n\t"
12811        "adc r23, r1 \n\t"
12812        "adc r24, r25 \n\t"
12813        "mul r6, r21 \n\t"
12814        "add r22, r0 \n\t"
12815        "adc r23, r1 \n\t"
12816        "adc r24, r25 \n\t"
12817        "mul r7, r20 \n\t"
12818        "add r22, r0 \n\t"
12819        "adc r23, r1 \n\t"
12820        "adc r24, r25 \n\t"
12821        "mul r8, r19 \n\t"
12822        "add r22, r0 \n\t"
12823        "adc r23, r1 \n\t"
12824        "adc r24, r25 \n\t"
12825        "mul r9, r18 \n\t"
12826        "add r22, r0 \n\t"
12827        "adc r23, r1 \n\t"
12828        "adc r24, r25 \n\t"
12829        "mul r10, r17 \n\t"
12830        "add r22, r0 \n\t"
12831        "adc r23, r1 \n\t"
12832        "adc r24, r25 \n\t"
12833        "mul r11, r16 \n\t"
12834        "add r22, r0 \n\t"
12835        "adc r23, r1 \n\t"
12836        "adc r24, r25 \n\t"
12837        "mul r2, r15 \n\t"
12838        "add r22, r0 \n\t"
12839        "adc r23, r1 \n\t"
12840        "adc r24, r25 \n\t"
12841        "mul r3, r14 \n\t"
12842        "add r22, r0 \n\t"
12843        "adc r23, r1 \n\t"
12844        "adc r24, r25 \n\t"
12845        "ld r0, z \n\t"
12846        "add r22, r0 \n\t"
12847        "adc r23, r25 \n\t"
12848        "adc r24, r25 \n\t"
12849        "st z+, r22 \n\t"
12850
12851        "ld r14, y+ \n\t"
12852        "ldi r22, 0 \n\t"
12853        "mul r4, r14 \n\t"
12854        "add r23, r0 \n\t"
12855        "adc r24, r1 \n\t"
12856        "adc r22, r25 \n\t"
12857        "mul r5, r13 \n\t"
12858        "add r23, r0 \n\t"
12859        "adc r24, r1 \n\t"
12860        "adc r22, r25 \n\t"
12861        "mul r6, r12 \n\t"
12862        "add r23, r0 \n\t"
12863        "adc r24, r1 \n\t"
12864        "adc r22, r25 \n\t"
12865        "mul r7, r21 \n\t"
12866        "add r23, r0 \n\t"
12867        "adc r24, r1 \n\t"
12868        "adc r22, r25 \n\t"
12869        "mul r8, r20 \n\t"
12870        "add r23, r0 \n\t"
12871        "adc r24, r1 \n\t"
12872        "adc r22, r25 \n\t"
12873        "mul r9, r19 \n\t"
12874        "add r23, r0 \n\t"
12875        "adc r24, r1 \n\t"
12876        "adc r22, r25 \n\t"
12877        "mul r10, r18 \n\t"
12878        "add r23, r0 \n\t"
12879        "adc r24, r1 \n\t"
12880        "adc r22, r25 \n\t"
12881        "mul r11, r17 \n\t"
12882        "add r23, r0 \n\t"
12883        "adc r24, r1 \n\t"
12884        "adc r22, r25 \n\t"
12885        "mul r2, r16 \n\t"
12886        "add r23, r0 \n\t"
12887        "adc r24, r1 \n\t"
12888        "adc r22, r25 \n\t"
12889        "mul r3, r15 \n\t"
12890        "add r23, r0 \n\t"
12891        "adc r24, r1 \n\t"
12892        "adc r22, r25 \n\t"
12893        "ld r0, z \n\t"
12894        "add r23, r0 \n\t"
12895        "adc r24, r25 \n\t"
12896        "adc r22, r25 \n\t"
12897        "st z+, r23 \n\t"
12898
12899        "ld r15, y+ \n\t"
12900        "ldi r23, 0 \n\t"
12901        "mul r4, r15 \n\t"
12902        "add r24, r0 \n\t"
12903        "adc r22, r1 \n\t"
12904        "adc r23, r25 \n\t"
12905        "mul r5, r14 \n\t"
12906        "add r24, r0 \n\t"
12907        "adc r22, r1 \n\t"
12908        "adc r23, r25 \n\t"
12909        "mul r6, r13 \n\t"
12910        "add r24, r0 \n\t"
12911        "adc r22, r1 \n\t"
12912        "adc r23, r25 \n\t"
12913        "mul r7, r12 \n\t"
12914        "add r24, r0 \n\t"
12915        "adc r22, r1 \n\t"
12916        "adc r23, r25 \n\t"
12917        "mul r8, r21 \n\t"
12918        "add r24, r0 \n\t"
12919        "adc r22, r1 \n\t"
12920        "adc r23, r25 \n\t"
12921        "mul r9, r20 \n\t"
12922        "add r24, r0 \n\t"
12923        "adc r22, r1 \n\t"
12924        "adc r23, r25 \n\t"
12925        "mul r10, r19 \n\t"
12926        "add r24, r0 \n\t"
12927        "adc r22, r1 \n\t"
12928        "adc r23, r25 \n\t"
12929        "mul r11, r18 \n\t"
12930        "add r24, r0 \n\t"
12931        "adc r22, r1 \n\t"
12932        "adc r23, r25 \n\t"
12933        "mul r2, r17 \n\t"
12934        "add r24, r0 \n\t"
12935        "adc r22, r1 \n\t"
12936        "adc r23, r25 \n\t"
12937        "mul r3, r16 \n\t"
12938        "add r24, r0 \n\t"
12939        "adc r22, r1 \n\t"
12940        "adc r23, r25 \n\t"
12941        "ld r0, z \n\t"
12942        "add r24, r0 \n\t"
12943        "adc r22, r25 \n\t"
12944        "adc r23, r25 \n\t"
12945        "st z+, r24 \n\t"
12946
12947        "ld r16, y+ \n\t"
12948        "ldi r24, 0 \n\t"
12949        "mul r4, r16 \n\t"
12950        "add r22, r0 \n\t"
12951        "adc r23, r1 \n\t"
12952        "adc r24, r25 \n\t"
12953        "mul r5, r15 \n\t"
12954        "add r22, r0 \n\t"
12955        "adc r23, r1 \n\t"
12956        "adc r24, r25 \n\t"
12957        "mul r6, r14 \n\t"
12958        "add r22, r0 \n\t"
12959        "adc r23, r1 \n\t"
12960        "adc r24, r25 \n\t"
12961        "mul r7, r13 \n\t"
12962        "add r22, r0 \n\t"
12963        "adc r23, r1 \n\t"
12964        "adc r24, r25 \n\t"
12965        "mul r8, r12 \n\t"
12966        "add r22, r0 \n\t"
12967        "adc r23, r1 \n\t"
12968        "adc r24, r25 \n\t"
12969        "mul r9, r21 \n\t"
12970        "add r22, r0 \n\t"
12971        "adc r23, r1 \n\t"
12972        "adc r24, r25 \n\t"
12973        "mul r10, r20 \n\t"
12974        "add r22, r0 \n\t"
12975        "adc r23, r1 \n\t"
12976        "adc r24, r25 \n\t"
12977        "mul r11, r19 \n\t"
12978        "add r22, r0 \n\t"
12979        "adc r23, r1 \n\t"
12980        "adc r24, r25 \n\t"
12981        "mul r2, r18 \n\t"
12982        "add r22, r0 \n\t"
12983        "adc r23, r1 \n\t"
12984        "adc r24, r25 \n\t"
12985        "mul r3, r17 \n\t"
12986        "add r22, r0 \n\t"
12987        "adc r23, r1 \n\t"
12988        "adc r24, r25 \n\t"
12989        "ld r0, z \n\t"
12990        "add r22, r0 \n\t"
12991        "adc r23, r25 \n\t"
12992        "adc r24, r25 \n\t"
12993        "st z+, r22 \n\t"
12994
12995        "ld r17, y+ \n\t"
12996        "ldi r22, 0 \n\t"
12997        "mul r4, r17 \n\t"
12998        "add r23, r0 \n\t"
12999        "adc r24, r1 \n\t"
13000        "adc r22, r25 \n\t"
13001        "mul r5, r16 \n\t"
13002        "add r23, r0 \n\t"
13003        "adc r24, r1 \n\t"
13004        "adc r22, r25 \n\t"
13005        "mul r6, r15 \n\t"
13006        "add r23, r0 \n\t"
13007        "adc r24, r1 \n\t"
13008        "adc r22, r25 \n\t"
13009        "mul r7, r14 \n\t"
13010        "add r23, r0 \n\t"
13011        "adc r24, r1 \n\t"
13012        "adc r22, r25 \n\t"
13013        "mul r8, r13 \n\t"
13014        "add r23, r0 \n\t"
13015        "adc r24, r1 \n\t"
13016        "adc r22, r25 \n\t"
13017        "mul r9, r12 \n\t"
13018        "add r23, r0 \n\t"
13019        "adc r24, r1 \n\t"
13020        "adc r22, r25 \n\t"
13021        "mul r10, r21 \n\t"
13022        "add r23, r0 \n\t"
13023        "adc r24, r1 \n\t"
13024        "adc r22, r25 \n\t"
13025        "mul r11, r20 \n\t"
13026        "add r23, r0 \n\t"
13027        "adc r24, r1 \n\t"
13028        "adc r22, r25 \n\t"
13029        "mul r2, r19 \n\t"
13030        "add r23, r0 \n\t"
13031        "adc r24, r1 \n\t"
13032        "adc r22, r25 \n\t"
13033        "mul r3, r18 \n\t"
13034        "add r23, r0 \n\t"
13035        "adc r24, r1 \n\t"
13036        "adc r22, r25 \n\t"
13037        "ld r0, z \n\t"
13038        "add r23, r0 \n\t"
13039        "adc r24, r25 \n\t"
13040        "adc r22, r25 \n\t"
13041        "st z+, r23 \n\t"
13042
13043        "ld r18, y+ \n\t"
13044        "ldi r23, 0 \n\t"
13045        "mul r4, r18 \n\t"
13046        "add r24, r0 \n\t"
13047        "adc r22, r1 \n\t"
13048        "adc r23, r25 \n\t"
13049        "mul r5, r17 \n\t"
13050        "add r24, r0 \n\t"
13051        "adc r22, r1 \n\t"
13052        "adc r23, r25 \n\t"
13053        "mul r6, r16 \n\t"
13054        "add r24, r0 \n\t"
13055        "adc r22, r1 \n\t"
13056        "adc r23, r25 \n\t"
13057        "mul r7, r15 \n\t"
13058        "add r24, r0 \n\t"
13059        "adc r22, r1 \n\t"
13060        "adc r23, r25 \n\t"
13061        "mul r8, r14 \n\t"
13062        "add r24, r0 \n\t"
13063        "adc r22, r1 \n\t"
13064        "adc r23, r25 \n\t"
13065        "mul r9, r13 \n\t"
13066        "add r24, r0 \n\t"
13067        "adc r22, r1 \n\t"
13068        "adc r23, r25 \n\t"
13069        "mul r10, r12 \n\t"
13070        "add r24, r0 \n\t"
13071        "adc r22, r1 \n\t"
13072        "adc r23, r25 \n\t"
13073        "mul r11, r21 \n\t"
13074        "add r24, r0 \n\t"
13075        "adc r22, r1 \n\t"
13076        "adc r23, r25 \n\t"
13077        "mul r2, r20 \n\t"
13078        "add r24, r0 \n\t"
13079        "adc r22, r1 \n\t"
13080        "adc r23, r25 \n\t"
13081        "mul r3, r19 \n\t"
13082        "add r24, r0 \n\t"
13083        "adc r22, r1 \n\t"
13084        "adc r23, r25 \n\t"
13085        "ld r0, z \n\t"
13086        "add r24, r0 \n\t"
13087        "adc r22, r25 \n\t"
13088        "adc r23, r25 \n\t"
13089        "st z+, r24 \n\t"
13090
13091        "ld r19, y+ \n\t"
13092        "ldi r24, 0 \n\t"
13093        "mul r4, r19 \n\t"
13094        "add r22, r0 \n\t"
13095        "adc r23, r1 \n\t"
13096        "adc r24, r25 \n\t"
13097        "mul r5, r18 \n\t"
13098        "add r22, r0 \n\t"
13099        "adc r23, r1 \n\t"
13100        "adc r24, r25 \n\t"
13101        "mul r6, r17 \n\t"
13102        "add r22, r0 \n\t"
13103        "adc r23, r1 \n\t"
13104        "adc r24, r25 \n\t"
13105        "mul r7, r16 \n\t"
13106        "add r22, r0 \n\t"
13107        "adc r23, r1 \n\t"
13108        "adc r24, r25 \n\t"
13109        "mul r8, r15 \n\t"
13110        "add r22, r0 \n\t"
13111        "adc r23, r1 \n\t"
13112        "adc r24, r25 \n\t"
13113        "mul r9, r14 \n\t"
13114        "add r22, r0 \n\t"
13115        "adc r23, r1 \n\t"
13116        "adc r24, r25 \n\t"
13117        "mul r10, r13 \n\t"
13118        "add r22, r0 \n\t"
13119        "adc r23, r1 \n\t"
13120        "adc r24, r25 \n\t"
13121        "mul r11, r12 \n\t"
13122        "add r22, r0 \n\t"
13123        "adc r23, r1 \n\t"
13124        "adc r24, r25 \n\t"
13125        "mul r2, r21 \n\t"
13126        "add r22, r0 \n\t"
13127        "adc r23, r1 \n\t"
13128        "adc r24, r25 \n\t"
13129        "mul r3, r20 \n\t"
13130        "add r22, r0 \n\t"
13131        "adc r23, r1 \n\t"
13132        "adc r24, r25 \n\t"
13133        "ld r0, z \n\t"
13134        "add r22, r0 \n\t"
13135        "adc r23, r25 \n\t"
13136        "adc r24, r25 \n\t"
13137        "st z+, r22 \n\t"
13138
13139        "ld r20, y+ \n\t"
13140        "ldi r22, 0 \n\t"
13141        "mul r4, r20 \n\t"
13142        "add r23, r0 \n\t"
13143        "adc r24, r1 \n\t"
13144        "adc r22, r25 \n\t"
13145        "mul r5, r19 \n\t"
13146        "add r23, r0 \n\t"
13147        "adc r24, r1 \n\t"
13148        "adc r22, r25 \n\t"
13149        "mul r6, r18 \n\t"
13150        "add r23, r0 \n\t"
13151        "adc r24, r1 \n\t"
13152        "adc r22, r25 \n\t"
13153        "mul r7, r17 \n\t"
13154        "add r23, r0 \n\t"
13155        "adc r24, r1 \n\t"
13156        "adc r22, r25 \n\t"
13157        "mul r8, r16 \n\t"
13158        "add r23, r0 \n\t"
13159        "adc r24, r1 \n\t"
13160        "adc r22, r25 \n\t"
13161        "mul r9, r15 \n\t"
13162        "add r23, r0 \n\t"
13163        "adc r24, r1 \n\t"
13164        "adc r22, r25 \n\t"
13165        "mul r10, r14 \n\t"
13166        "add r23, r0 \n\t"
13167        "adc r24, r1 \n\t"
13168        "adc r22, r25 \n\t"
13169        "mul r11, r13 \n\t"
13170        "add r23, r0 \n\t"
13171        "adc r24, r1 \n\t"
13172        "adc r22, r25 \n\t"
13173        "mul r2, r12 \n\t"
13174        "add r23, r0 \n\t"
13175        "adc r24, r1 \n\t"
13176        "adc r22, r25 \n\t"
13177        "mul r3, r21 \n\t"
13178        "add r23, r0 \n\t"
13179        "adc r24, r1 \n\t"
13180        "adc r22, r25 \n\t"
13181        "ld r0, z \n\t"
13182        "add r23, r0 \n\t"
13183        "adc r24, r25 \n\t"
13184        "adc r22, r25 \n\t"
13185        "st z+, r23 \n\t"
13186
13187        "ld r21, y+ \n\t"
13188        "ldi r23, 0 \n\t"
13189        "mul r4, r21 \n\t"
13190        "add r24, r0 \n\t"
13191        "adc r22, r1 \n\t"
13192        "adc r23, r25 \n\t"
13193        "mul r5, r20 \n\t"
13194        "add r24, r0 \n\t"
13195        "adc r22, r1 \n\t"
13196        "adc r23, r25 \n\t"
13197        "mul r6, r19 \n\t"
13198        "add r24, r0 \n\t"
13199        "adc r22, r1 \n\t"
13200        "adc r23, r25 \n\t"
13201        "mul r7, r18 \n\t"
13202        "add r24, r0 \n\t"
13203        "adc r22, r1 \n\t"
13204        "adc r23, r25 \n\t"
13205        "mul r8, r17 \n\t"
13206        "add r24, r0 \n\t"
13207        "adc r22, r1 \n\t"
13208        "adc r23, r25 \n\t"
13209        "mul r9, r16 \n\t"
13210        "add r24, r0 \n\t"
13211        "adc r22, r1 \n\t"
13212        "adc r23, r25 \n\t"
13213        "mul r10, r15 \n\t"
13214        "add r24, r0 \n\t"
13215        "adc r22, r1 \n\t"
13216        "adc r23, r25 \n\t"
13217        "mul r11, r14 \n\t"
13218        "add r24, r0 \n\t"
13219        "adc r22, r1 \n\t"
13220        "adc r23, r25 \n\t"
13221        "mul r2, r13 \n\t"
13222        "add r24, r0 \n\t"
13223        "adc r22, r1 \n\t"
13224        "adc r23, r25 \n\t"
13225        "mul r3, r12 \n\t"
13226        "add r24, r0 \n\t"
13227        "adc r22, r1 \n\t"
13228        "adc r23, r25 \n\t"
13229        "ld r0, z \n\t"
13230        "add r24, r0 \n\t"
13231        "adc r22, r25 \n\t"
13232        "adc r23, r25 \n\t"
13233        "st z+, r24 \n\t"
13234
13235        "ld r12, y+ \n\t"
13236        "ldi r24, 0 \n\t"
13237        "mul r4, r12 \n\t"
13238        "add r22, r0 \n\t"
13239        "adc r23, r1 \n\t"
13240        "adc r24, r25 \n\t"
13241        "mul r5, r21 \n\t"
13242        "add r22, r0 \n\t"
13243        "adc r23, r1 \n\t"
13244        "adc r24, r25 \n\t"
13245        "mul r6, r20 \n\t"
13246        "add r22, r0 \n\t"
13247        "adc r23, r1 \n\t"
13248        "adc r24, r25 \n\t"
13249        "mul r7, r19 \n\t"
13250        "add r22, r0 \n\t"
13251        "adc r23, r1 \n\t"
13252        "adc r24, r25 \n\t"
13253        "mul r8, r18 \n\t"
13254        "add r22, r0 \n\t"
13255        "adc r23, r1 \n\t"
13256        "adc r24, r25 \n\t"
13257        "mul r9, r17 \n\t"
13258        "add r22, r0 \n\t"
13259        "adc r23, r1 \n\t"
13260        "adc r24, r25 \n\t"
13261        "mul r10, r16 \n\t"
13262        "add r22, r0 \n\t"
13263        "adc r23, r1 \n\t"
13264        "adc r24, r25 \n\t"
13265        "mul r11, r15 \n\t"
13266        "add r22, r0 \n\t"
13267        "adc r23, r1 \n\t"
13268        "adc r24, r25 \n\t"
13269        "mul r2, r14 \n\t"
13270        "add r22, r0 \n\t"
13271        "adc r23, r1 \n\t"
13272        "adc r24, r25 \n\t"
13273        "mul r3, r13 \n\t"
13274        "add r22, r0 \n\t"
13275        "adc r23, r1 \n\t"
13276        "adc r24, r25 \n\t"
13277        "ld r0, z \n\t"
13278        "add r22, r0 \n\t"
13279        "adc r23, r25 \n\t"
13280        "adc r24, r25 \n\t"
13281        "st z+, r22 \n\t"
13282
13283        "ld r13, y+ \n\t"
13284        "ldi r22, 0 \n\t"
13285        "mul r4, r13 \n\t"
13286        "add r23, r0 \n\t"
13287        "adc r24, r1 \n\t"
13288        "adc r22, r25 \n\t"
13289        "mul r5, r12 \n\t"
13290        "add r23, r0 \n\t"
13291        "adc r24, r1 \n\t"
13292        "adc r22, r25 \n\t"
13293        "mul r6, r21 \n\t"
13294        "add r23, r0 \n\t"
13295        "adc r24, r1 \n\t"
13296        "adc r22, r25 \n\t"
13297        "mul r7, r20 \n\t"
13298        "add r23, r0 \n\t"
13299        "adc r24, r1 \n\t"
13300        "adc r22, r25 \n\t"
13301        "mul r8, r19 \n\t"
13302        "add r23, r0 \n\t"
13303        "adc r24, r1 \n\t"
13304        "adc r22, r25 \n\t"
13305        "mul r9, r18 \n\t"
13306        "add r23, r0 \n\t"
13307        "adc r24, r1 \n\t"
13308        "adc r22, r25 \n\t"
13309        "mul r10, r17 \n\t"
13310        "add r23, r0 \n\t"
13311        "adc r24, r1 \n\t"
13312        "adc r22, r25 \n\t"
13313        "mul r11, r16 \n\t"
13314        "add r23, r0 \n\t"
13315        "adc r24, r1 \n\t"
13316        "adc r22, r25 \n\t"
13317        "mul r2, r15 \n\t"
13318        "add r23, r0 \n\t"
13319        "adc r24, r1 \n\t"
13320        "adc r22, r25 \n\t"
13321        "mul r3, r14 \n\t"
13322        "add r23, r0 \n\t"
13323        "adc r24, r1 \n\t"
13324        "adc r22, r25 \n\t"
13325        "ld r0, z \n\t"
13326        "add r23, r0 \n\t"
13327        "adc r24, r25 \n\t"
13328        "adc r22, r25 \n\t"
13329        "st z+, r23 \n\t"
13330
13331        "ldi r23, 0 \n\t"
13332        "mul r5, r13 \n\t"
13333        "add r24, r0 \n\t"
13334        "adc r22, r1 \n\t"
13335        "adc r23, r25 \n\t"
13336        "mul r6, r12 \n\t"
13337        "add r24, r0 \n\t"
13338        "adc r22, r1 \n\t"
13339        "adc r23, r25 \n\t"
13340        "mul r7, r21 \n\t"
13341        "add r24, r0 \n\t"
13342        "adc r22, r1 \n\t"
13343        "adc r23, r25 \n\t"
13344        "mul r8, r20 \n\t"
13345        "add r24, r0 \n\t"
13346        "adc r22, r1 \n\t"
13347        "adc r23, r25 \n\t"
13348        "mul r9, r19 \n\t"
13349        "add r24, r0 \n\t"
13350        "adc r22, r1 \n\t"
13351        "adc r23, r25 \n\t"
13352        "mul r10, r18 \n\t"
13353        "add r24, r0 \n\t"
13354        "adc r22, r1 \n\t"
13355        "adc r23, r25 \n\t"
13356        "mul r11, r17 \n\t"
13357        "add r24, r0 \n\t"
13358        "adc r22, r1 \n\t"
13359        "adc r23, r25 \n\t"
13360        "mul r2, r16 \n\t"
13361        "add r24, r0 \n\t"
13362        "adc r22, r1 \n\t"
13363        "adc r23, r25 \n\t"
13364        "mul r3, r15 \n\t"
13365        "add r24, r0 \n\t"
13366        "adc r22, r1 \n\t"
13367        "adc r23, r25 \n\t"
13368        "st z+, r24 \n\t"
13369
13370        "ldi r24, 0 \n\t"
13371        "mul r6, r13 \n\t"
13372        "add r22, r0 \n\t"
13373        "adc r23, r1 \n\t"
13374        "adc r24, r25 \n\t"
13375        "mul r7, r12 \n\t"
13376        "add r22, r0 \n\t"
13377        "adc r23, r1 \n\t"
13378        "adc r24, r25 \n\t"
13379        "mul r8, r21 \n\t"
13380        "add r22, r0 \n\t"
13381        "adc r23, r1 \n\t"
13382        "adc r24, r25 \n\t"
13383        "mul r9, r20 \n\t"
13384        "add r22, r0 \n\t"
13385        "adc r23, r1 \n\t"
13386        "adc r24, r25 \n\t"
13387        "mul r10, r19 \n\t"
13388        "add r22, r0 \n\t"
13389        "adc r23, r1 \n\t"
13390        "adc r24, r25 \n\t"
13391        "mul r11, r18 \n\t"
13392        "add r22, r0 \n\t"
13393        "adc r23, r1 \n\t"
13394        "adc r24, r25 \n\t"
13395        "mul r2, r17 \n\t"
13396        "add r22, r0 \n\t"
13397        "adc r23, r1 \n\t"
13398        "adc r24, r25 \n\t"
13399        "mul r3, r16 \n\t"
13400        "add r22, r0 \n\t"
13401        "adc r23, r1 \n\t"
13402        "adc r24, r25 \n\t"
13403        "st z+, r22 \n\t"
13404
13405        "ldi r22, 0 \n\t"
13406        "mul r7, r13 \n\t"
13407        "add r23, r0 \n\t"
13408        "adc r24, r1 \n\t"
13409        "adc r22, r25 \n\t"
13410        "mul r8, r12 \n\t"
13411        "add r23, r0 \n\t"
13412        "adc r24, r1 \n\t"
13413        "adc r22, r25 \n\t"
13414        "mul r9, r21 \n\t"
13415        "add r23, r0 \n\t"
13416        "adc r24, r1 \n\t"
13417        "adc r22, r25 \n\t"
13418        "mul r10, r20 \n\t"
13419        "add r23, r0 \n\t"
13420        "adc r24, r1 \n\t"
13421        "adc r22, r25 \n\t"
13422        "mul r11, r19 \n\t"
13423        "add r23, r0 \n\t"
13424        "adc r24, r1 \n\t"
13425        "adc r22, r25 \n\t"
13426        "mul r2, r18 \n\t"
13427        "add r23, r0 \n\t"
13428        "adc r24, r1 \n\t"
13429        "adc r22, r25 \n\t"
13430        "mul r3, r17 \n\t"
13431        "add r23, r0 \n\t"
13432        "adc r24, r1 \n\t"
13433        "adc r22, r25 \n\t"
13434        "st z+, r23 \n\t"
13435
13436        "ldi r23, 0 \n\t"
13437        "mul r8, r13 \n\t"
13438        "add r24, r0 \n\t"
13439        "adc r22, r1 \n\t"
13440        "adc r23, r25 \n\t"
13441        "mul r9, r12 \n\t"
13442        "add r24, r0 \n\t"
13443        "adc r22, r1 \n\t"
13444        "adc r23, r25 \n\t"
13445        "mul r10, r21 \n\t"
13446        "add r24, r0 \n\t"
13447        "adc r22, r1 \n\t"
13448        "adc r23, r25 \n\t"
13449        "mul r11, r20 \n\t"
13450        "add r24, r0 \n\t"
13451        "adc r22, r1 \n\t"
13452        "adc r23, r25 \n\t"
13453        "mul r2, r19 \n\t"
13454        "add r24, r0 \n\t"
13455        "adc r22, r1 \n\t"
13456        "adc r23, r25 \n\t"
13457        "mul r3, r18 \n\t"
13458        "add r24, r0 \n\t"
13459        "adc r22, r1 \n\t"
13460        "adc r23, r25 \n\t"
13461        "st z+, r24 \n\t"
13462
13463        "ldi r24, 0 \n\t"
13464        "mul r9, r13 \n\t"
13465        "add r22, r0 \n\t"
13466        "adc r23, r1 \n\t"
13467        "adc r24, r25 \n\t"
13468        "mul r10, r12 \n\t"
13469        "add r22, r0 \n\t"
13470        "adc r23, r1 \n\t"
13471        "adc r24, r25 \n\t"
13472        "mul r11, r21 \n\t"
13473        "add r22, r0 \n\t"
13474        "adc r23, r1 \n\t"
13475        "adc r24, r25 \n\t"
13476        "mul r2, r20 \n\t"
13477        "add r22, r0 \n\t"
13478        "adc r23, r1 \n\t"
13479        "adc r24, r25 \n\t"
13480        "mul r3, r19 \n\t"
13481        "add r22, r0 \n\t"
13482        "adc r23, r1 \n\t"
13483        "adc r24, r25 \n\t"
13484        "st z+, r22 \n\t"
13485
13486        "ldi r22, 0 \n\t"
13487        "mul r10, r13 \n\t"
13488        "add r23, r0 \n\t"
13489        "adc r24, r1 \n\t"
13490        "adc r22, r25 \n\t"
13491        "mul r11, r12 \n\t"
13492        "add r23, r0 \n\t"
13493        "adc r24, r1 \n\t"
13494        "adc r22, r25 \n\t"
13495        "mul r2, r21 \n\t"
13496        "add r23, r0 \n\t"
13497        "adc r24, r1 \n\t"
13498        "adc r22, r25 \n\t"
13499        "mul r3, r20 \n\t"
13500        "add r23, r0 \n\t"
13501        "adc r24, r1 \n\t"
13502        "adc r22, r25 \n\t"
13503        "st z+, r23 \n\t"
13504
13505        "ldi r23, 0 \n\t"
13506        "mul r11, r13 \n\t"
13507        "add r24, r0 \n\t"
13508        "adc r22, r1 \n\t"
13509        "adc r23, r25 \n\t"
13510        "mul r2, r12 \n\t"
13511        "add r24, r0 \n\t"
13512        "adc r22, r1 \n\t"
13513        "adc r23, r25 \n\t"
13514        "mul r3, r21 \n\t"
13515        "add r24, r0 \n\t"
13516        "adc r22, r1 \n\t"
13517        "adc r23, r25 \n\t"
13518        "st z+, r24 \n\t"
13519
13520        "ldi r24, 0 \n\t"
13521        "mul r2, r13 \n\t"
13522        "add r22, r0 \n\t"
13523        "adc r23, r1 \n\t"
13524        "adc r24, r25 \n\t"
13525        "mul r3, r12 \n\t"
13526        "add r22, r0 \n\t"
13527        "adc r23, r1 \n\t"
13528        "adc r24, r25 \n\t"
13529        "st z+, r22 \n\t"
13530
13531        "mul r3, r13 \n\t"
13532        "add r23, r0 \n\t"
13533        "adc r24, r1 \n\t"
13534        "st z+, r23 \n\t"
13535        "st z+, r24 \n\t"
13536
13537        "eor r1, r1 \n\t"
13538        : "+x" (left), "+y" (right), "+z" (result)
13539        :
13540        : "r0", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10",
13541          "r11", "r12", "r13", "r14", "r15", "r16", "r17", "r18", "r19", "r20",
13542          "r21", "r22", "r23", "r24", "r25", "cc", "memory"
13543    );
13544}
13545#define asm_mult 1
13546#endif /* uECC_BYTES == 32 */
13547
13548#if uECC_SQUARE_FUNC
13549
13550#if (uECC_BYTES == 20)
13551// Inlining is allowed because y (r28, r29) is not used.
13552static void vli_square(uint8_t *result, const uint8_t *left) {
13553    __asm__ volatile (
13554        "ld r2, x+ \n\t"
13555        "ld r3, x+ \n\t"
13556        "ld r4, x+ \n\t"
13557        "ld r5, x+ \n\t"
13558        "ld r6, x+ \n\t"
13559        "ld r7, x+ \n\t"
13560        "ld r8, x+ \n\t"
13561        "ld r9, x+ \n\t"
13562        "ld r10, x+ \n\t"
13563        "ld r11, x+ \n\t"
13564        "ld r12, x+ \n\t"
13565        "ld r13, x+ \n\t"
13566        "ld r14, x+ \n\t"
13567        "ld r15, x+ \n\t"
13568        "ld r16, x+ \n\t"
13569        "ld r17, x+ \n\t"
13570        "ld r18, x+ \n\t"
13571        "ld r19, x+ \n\t"
13572        "ld r20, x+ \n\t"
13573        "ld r21, x+ \n\t"
13574        "ldi r27, 0 \n\t"
13575
13576        "ldi r23, 0 \n\t"
13577        "mul r2, r2 \n\t"
13578        "st z+, r0 \n\t"
13579        "mov r22, r1 \n\t"
13580
13581        "ldi r24, 0 \n\t"
13582        "mul r2, r3 \n\t"
13583        "lsl r0 \n\t"
13584        "rol r1 \n\t"
13585        "adc r24, r27 \n\t"
13586        "add r22, r0 \n\t"
13587        "adc r23, r1 \n\t"
13588        "adc r24, r27 \n\t"
13589        "st z+, r22 \n\t"
13590
13591        "ldi r22, 0 \n\t"
13592        "mul r2, r4 \n\t"
13593        "lsl r0 \n\t"
13594        "rol r1 \n\t"
13595        "adc r22, r27 \n\t"
13596        "add r23, r0 \n\t"
13597        "adc r24, r1 \n\t"
13598        "adc r22, r27 \n\t"
13599        "mul r3, r3 \n\t"
13600        "add r23, r0 \n\t"
13601        "adc r24, r1 \n\t"
13602        "adc r22, r27 \n\t"
13603        "st z+, r23 \n\t"
13604
13605        "ldi r26, 0 \n\t"
13606        "mul r2, r5 \n\t"
13607        "mov r23, r0 \n\t"
13608        "mov r25, r1 \n\t"
13609        "mul r3, r4 \n\t"
13610        "add r23, r0 \n\t"
13611        "adc r25, r1 \n\t"
13612        "adc r26, r27 \n\t"
13613        "lsl r23 \n\t"
13614        "rol r25 \n\t"
13615        "rol r26 \n\t"
13616        "add r23, r24 \n\t"
13617        "adc r25, r22 \n\t"
13618        "adc r26, r27 \n\t"
13619        "st z+, r23 \n\t"
13620
13621        "ldi r22, 0 \n\t"
13622        "mul r2, r6 \n\t"
13623        "mov r23, r0 \n\t"
13624        "mov r24, r1 \n\t"
13625        "mul r3, r5 \n\t"
13626        "add r23, r0 \n\t"
13627        "adc r24, r1 \n\t"
13628        "adc r22, r27 \n\t"
13629        "lsl r23 \n\t"
13630        "rol r24 \n\t"
13631        "rol r22 \n\t"
13632        "mul r4, r4 \n\t"
13633        "add r23, r0 \n\t"
13634        "adc r24, r1 \n\t"
13635        "adc r22, r27 \n\t"
13636        "add r23, r25 \n\t"
13637        "adc r24, r26 \n\t"
13638        "adc r22, r27 \n\t"
13639        "st z+, r23 \n\t"
13640
13641        "ldi r26, 0 \n\t"
13642        "mul r2, r7 \n\t"
13643        "mov r23, r0 \n\t"
13644        "mov r25, r1 \n\t"
13645        "mul r3, r6 \n\t"
13646        "add r23, r0 \n\t"
13647        "adc r25, r1 \n\t"
13648        "adc r26, r27 \n\t"
13649        "mul r4, r5 \n\t"
13650        "add r23, r0 \n\t"
13651        "adc r25, r1 \n\t"
13652        "adc r26, r27 \n\t"
13653        "lsl r23 \n\t"
13654        "rol r25 \n\t"
13655        "rol r26 \n\t"
13656        "add r23, r24 \n\t"
13657        "adc r25, r22 \n\t"
13658        "adc r26, r27 \n\t"
13659        "st z+, r23 \n\t"
13660
13661        "ldi r22, 0 \n\t"
13662        "mul r2, r8 \n\t"
13663        "mov r23, r0 \n\t"
13664        "mov r24, r1 \n\t"
13665        "mul r3, r7 \n\t"
13666        "add r23, r0 \n\t"
13667        "adc r24, r1 \n\t"
13668        "adc r22, r27 \n\t"
13669        "mul r4, r6 \n\t"
13670        "add r23, r0 \n\t"
13671        "adc r24, r1 \n\t"
13672        "adc r22, r27 \n\t"
13673        "lsl r23 \n\t"
13674        "rol r24 \n\t"
13675        "rol r22 \n\t"
13676        "mul r5, r5 \n\t"
13677        "add r23, r0 \n\t"
13678        "adc r24, r1 \n\t"
13679        "adc r22, r27 \n\t"
13680        "add r23, r25 \n\t"
13681        "adc r24, r26 \n\t"
13682        "adc r22, r27 \n\t"
13683        "st z+, r23 \n\t"
13684
13685        "ldi r26, 0 \n\t"
13686        "mul r2, r9 \n\t"
13687        "mov r23, r0 \n\t"
13688        "mov r25, r1 \n\t"
13689        "mul r3, r8 \n\t"
13690        "add r23, r0 \n\t"
13691        "adc r25, r1 \n\t"
13692        "adc r26, r27 \n\t"
13693        "mul r4, r7 \n\t"
13694        "add r23, r0 \n\t"
13695        "adc r25, r1 \n\t"
13696        "adc r26, r27 \n\t"
13697        "mul r5, r6 \n\t"
13698        "add r23, r0 \n\t"
13699        "adc r25, r1 \n\t"
13700        "adc r26, r27 \n\t"
13701        "lsl r23 \n\t"
13702        "rol r25 \n\t"
13703        "rol r26 \n\t"
13704        "add r23, r24 \n\t"
13705        "adc r25, r22 \n\t"
13706        "adc r26, r27 \n\t"
13707        "st z+, r23 \n\t"
13708
13709        "ldi r22, 0 \n\t"
13710        "mul r2, r10 \n\t"
13711        "mov r23, r0 \n\t"
13712        "mov r24, r1 \n\t"
13713        "mul r3, r9 \n\t"
13714        "add r23, r0 \n\t"
13715        "adc r24, r1 \n\t"
13716        "adc r22, r27 \n\t"
13717        "mul r4, r8 \n\t"
13718        "add r23, r0 \n\t"
13719        "adc r24, r1 \n\t"
13720        "adc r22, r27 \n\t"
13721        "mul r5, r7 \n\t"
13722        "add r23, r0 \n\t"
13723        "adc r24, r1 \n\t"
13724        "adc r22, r27 \n\t"
13725        "lsl r23 \n\t"
13726        "rol r24 \n\t"
13727        "rol r22 \n\t"
13728        "mul r6, r6 \n\t"
13729        "add r23, r0 \n\t"
13730        "adc r24, r1 \n\t"
13731        "adc r22, r27 \n\t"
13732        "add r23, r25 \n\t"
13733        "adc r24, r26 \n\t"
13734        "adc r22, r27 \n\t"
13735        "st z+, r23 \n\t"
13736
13737        "ldi r26, 0 \n\t"
13738        "mul r2, r11 \n\t"
13739        "mov r23, r0 \n\t"
13740        "mov r25, r1 \n\t"
13741        "mul r3, r10 \n\t"
13742        "add r23, r0 \n\t"
13743        "adc r25, r1 \n\t"
13744        "adc r26, r27 \n\t"
13745        "mul r4, r9 \n\t"
13746        "add r23, r0 \n\t"
13747        "adc r25, r1 \n\t"
13748        "adc r26, r27 \n\t"
13749        "mul r5, r8 \n\t"
13750        "add r23, r0 \n\t"
13751        "adc r25, r1 \n\t"
13752        "adc r26, r27 \n\t"
13753        "mul r6, r7 \n\t"
13754        "add r23, r0 \n\t"
13755        "adc r25, r1 \n\t"
13756        "adc r26, r27 \n\t"
13757        "lsl r23 \n\t"
13758        "rol r25 \n\t"
13759        "rol r26 \n\t"
13760        "add r23, r24 \n\t"
13761        "adc r25, r22 \n\t"
13762        "adc r26, r27 \n\t"
13763        "st z+, r23 \n\t"
13764
13765        "ldi r22, 0 \n\t"
13766        "mul r2, r12 \n\t"
13767        "mov r23, r0 \n\t"
13768        "mov r24, r1 \n\t"
13769        "mul r3, r11 \n\t"
13770        "add r23, r0 \n\t"
13771        "adc r24, r1 \n\t"
13772        "adc r22, r27 \n\t"
13773        "mul r4, r10 \n\t"
13774        "add r23, r0 \n\t"
13775        "adc r24, r1 \n\t"
13776        "adc r22, r27 \n\t"
13777        "mul r5, r9 \n\t"
13778        "add r23, r0 \n\t"
13779        "adc r24, r1 \n\t"
13780        "adc r22, r27 \n\t"
13781        "mul r6, r8 \n\t"
13782        "add r23, r0 \n\t"
13783        "adc r24, r1 \n\t"
13784        "adc r22, r27 \n\t"
13785        "lsl r23 \n\t"
13786        "rol r24 \n\t"
13787        "rol r22 \n\t"
13788        "mul r7, r7 \n\t"
13789        "add r23, r0 \n\t"
13790        "adc r24, r1 \n\t"
13791        "adc r22, r27 \n\t"
13792        "add r23, r25 \n\t"
13793        "adc r24, r26 \n\t"
13794        "adc r22, r27 \n\t"
13795        "st z+, r23 \n\t"
13796
13797        "ldi r26, 0 \n\t"
13798        "mul r2, r13 \n\t"
13799        "mov r23, r0 \n\t"
13800        "mov r25, r1 \n\t"
13801        "mul r3, r12 \n\t"
13802        "add r23, r0 \n\t"
13803        "adc r25, r1 \n\t"
13804        "adc r26, r27 \n\t"
13805        "mul r4, r11 \n\t"
13806        "add r23, r0 \n\t"
13807        "adc r25, r1 \n\t"
13808        "adc r26, r27 \n\t"
13809        "mul r5, r10 \n\t"
13810        "add r23, r0 \n\t"
13811        "adc r25, r1 \n\t"
13812        "adc r26, r27 \n\t"
13813        "mul r6, r9 \n\t"
13814        "add r23, r0 \n\t"
13815        "adc r25, r1 \n\t"
13816        "adc r26, r27 \n\t"
13817        "mul r7, r8 \n\t"
13818        "add r23, r0 \n\t"
13819        "adc r25, r1 \n\t"
13820        "adc r26, r27 \n\t"
13821        "lsl r23 \n\t"
13822        "rol r25 \n\t"
13823        "rol r26 \n\t"
13824        "add r23, r24 \n\t"
13825        "adc r25, r22 \n\t"
13826        "adc r26, r27 \n\t"
13827        "st z+, r23 \n\t"
13828
13829        "ldi r22, 0 \n\t"
13830        "mul r2, r14 \n\t"
13831        "mov r23, r0 \n\t"
13832        "mov r24, r1 \n\t"
13833        "mul r3, r13 \n\t"
13834        "add r23, r0 \n\t"
13835        "adc r24, r1 \n\t"
13836        "adc r22, r27 \n\t"
13837        "mul r4, r12 \n\t"
13838        "add r23, r0 \n\t"
13839        "adc r24, r1 \n\t"
13840        "adc r22, r27 \n\t"
13841        "mul r5, r11 \n\t"
13842        "add r23, r0 \n\t"
13843        "adc r24, r1 \n\t"
13844        "adc r22, r27 \n\t"
13845        "mul r6, r10 \n\t"
13846        "add r23, r0 \n\t"
13847        "adc r24, r1 \n\t"
13848        "adc r22, r27 \n\t"
13849        "mul r7, r9 \n\t"
13850        "add r23, r0 \n\t"
13851        "adc r24, r1 \n\t"
13852        "adc r22, r27 \n\t"
13853        "lsl r23 \n\t"
13854        "rol r24 \n\t"
13855        "rol r22 \n\t"
13856        "mul r8, r8 \n\t"
13857        "add r23, r0 \n\t"
13858        "adc r24, r1 \n\t"
13859        "adc r22, r27 \n\t"
13860        "add r23, r25 \n\t"
13861        "adc r24, r26 \n\t"
13862        "adc r22, r27 \n\t"
13863        "st z+, r23 \n\t"
13864
13865        "ldi r26, 0 \n\t"
13866        "mul r2, r15 \n\t"
13867        "mov r23, r0 \n\t"
13868        "mov r25, r1 \n\t"
13869        "mul r3, r14 \n\t"
13870        "add r23, r0 \n\t"
13871        "adc r25, r1 \n\t"
13872        "adc r26, r27 \n\t"
13873        "mul r4, r13 \n\t"
13874        "add r23, r0 \n\t"
13875        "adc r25, r1 \n\t"
13876        "adc r26, r27 \n\t"
13877        "mul r5, r12 \n\t"
13878        "add r23, r0 \n\t"
13879        "adc r25, r1 \n\t"
13880        "adc r26, r27 \n\t"
13881        "mul r6, r11 \n\t"
13882        "add r23, r0 \n\t"
13883        "adc r25, r1 \n\t"
13884        "adc r26, r27 \n\t"
13885        "mul r7, r10 \n\t"
13886        "add r23, r0 \n\t"
13887        "adc r25, r1 \n\t"
13888        "adc r26, r27 \n\t"
13889        "mul r8, r9 \n\t"
13890        "add r23, r0 \n\t"
13891        "adc r25, r1 \n\t"
13892        "adc r26, r27 \n\t"
13893        "lsl r23 \n\t"
13894        "rol r25 \n\t"
13895        "rol r26 \n\t"
13896        "add r23, r24 \n\t"
13897        "adc r25, r22 \n\t"
13898        "adc r26, r27 \n\t"
13899        "st z+, r23 \n\t"
13900
13901        "ldi r22, 0 \n\t"
13902        "mul r2, r16 \n\t"
13903        "mov r23, r0 \n\t"
13904        "mov r24, r1 \n\t"
13905        "mul r3, r15 \n\t"
13906        "add r23, r0 \n\t"
13907        "adc r24, r1 \n\t"
13908        "adc r22, r27 \n\t"
13909        "mul r4, r14 \n\t"
13910        "add r23, r0 \n\t"
13911        "adc r24, r1 \n\t"
13912        "adc r22, r27 \n\t"
13913        "mul r5, r13 \n\t"
13914        "add r23, r0 \n\t"
13915        "adc r24, r1 \n\t"
13916        "adc r22, r27 \n\t"
13917        "mul r6, r12 \n\t"
13918        "add r23, r0 \n\t"
13919        "adc r24, r1 \n\t"
13920        "adc r22, r27 \n\t"
13921        "mul r7, r11 \n\t"
13922        "add r23, r0 \n\t"
13923        "adc r24, r1 \n\t"
13924        "adc r22, r27 \n\t"
13925        "mul r8, r10 \n\t"
13926        "add r23, r0 \n\t"
13927        "adc r24, r1 \n\t"
13928        "adc r22, r27 \n\t"
13929        "lsl r23 \n\t"
13930        "rol r24 \n\t"
13931        "rol r22 \n\t"
13932        "mul r9, r9 \n\t"
13933        "add r23, r0 \n\t"
13934        "adc r24, r1 \n\t"
13935        "adc r22, r27 \n\t"
13936        "add r23, r25 \n\t"
13937        "adc r24, r26 \n\t"
13938        "adc r22, r27 \n\t"
13939        "st z+, r23 \n\t"
13940
13941        "ldi r26, 0 \n\t"
13942        "mul r2, r17 \n\t"
13943        "mov r23, r0 \n\t"
13944        "mov r25, r1 \n\t"
13945        "mul r3, r16 \n\t"
13946        "add r23, r0 \n\t"
13947        "adc r25, r1 \n\t"
13948        "adc r26, r27 \n\t"
13949        "mul r4, r15 \n\t"
13950        "add r23, r0 \n\t"
13951        "adc r25, r1 \n\t"
13952        "adc r26, r27 \n\t"
13953        "mul r5, r14 \n\t"
13954        "add r23, r0 \n\t"
13955        "adc r25, r1 \n\t"
13956        "adc r26, r27 \n\t"
13957        "mul r6, r13 \n\t"
13958        "add r23, r0 \n\t"
13959        "adc r25, r1 \n\t"
13960        "adc r26, r27 \n\t"
13961        "mul r7, r12 \n\t"
13962        "add r23, r0 \n\t"
13963        "adc r25, r1 \n\t"
13964        "adc r26, r27 \n\t"
13965        "mul r8, r11 \n\t"
13966        "add r23, r0 \n\t"
13967        "adc r25, r1 \n\t"
13968        "adc r26, r27 \n\t"
13969        "mul r9, r10 \n\t"
13970        "add r23, r0 \n\t"
13971        "adc r25, r1 \n\t"
13972        "adc r26, r27 \n\t"
13973        "lsl r23 \n\t"
13974        "rol r25 \n\t"
13975        "rol r26 \n\t"
13976        "add r23, r24 \n\t"
13977        "adc r25, r22 \n\t"
13978        "adc r26, r27 \n\t"
13979        "st z+, r23 \n\t"
13980
13981        "ldi r22, 0 \n\t"
13982        "mul r2, r18 \n\t"
13983        "mov r23, r0 \n\t"
13984        "mov r24, r1 \n\t"
13985        "mul r3, r17 \n\t"
13986        "add r23, r0 \n\t"
13987        "adc r24, r1 \n\t"
13988        "adc r22, r27 \n\t"
13989        "mul r4, r16 \n\t"
13990        "add r23, r0 \n\t"
13991        "adc r24, r1 \n\t"
13992        "adc r22, r27 \n\t"
13993        "mul r5, r15 \n\t"
13994        "add r23, r0 \n\t"
13995        "adc r24, r1 \n\t"
13996        "adc r22, r27 \n\t"
13997        "mul r6, r14 \n\t"
13998        "add r23, r0 \n\t"
13999        "adc r24, r1 \n\t"
14000        "adc r22, r27 \n\t"
14001        "mul r7, r13 \n\t"
14002        "add r23, r0 \n\t"
14003        "adc r24, r1 \n\t"
14004        "adc r22, r27 \n\t"
14005        "mul r8, r12 \n\t"
14006        "add r23, r0 \n\t"
14007        "adc r24, r1 \n\t"
14008        "adc r22, r27 \n\t"
14009        "mul r9, r11 \n\t"
14010        "add r23, r0 \n\t"
14011        "adc r24, r1 \n\t"
14012        "adc r22, r27 \n\t"
14013        "lsl r23 \n\t"
14014        "rol r24 \n\t"
14015        "rol r22 \n\t"
14016        "mul r10, r10 \n\t"
14017        "add r23, r0 \n\t"
14018        "adc r24, r1 \n\t"
14019        "adc r22, r27 \n\t"
14020        "add r23, r25 \n\t"
14021        "adc r24, r26 \n\t"
14022        "adc r22, r27 \n\t"
14023        "st z+, r23 \n\t"
14024
14025        "ldi r26, 0 \n\t"
14026        "mul r2, r19 \n\t"
14027        "mov r23, r0 \n\t"
14028        "mov r25, r1 \n\t"
14029        "mul r3, r18 \n\t"
14030        "add r23, r0 \n\t"
14031        "adc r25, r1 \n\t"
14032        "adc r26, r27 \n\t"
14033        "mul r4, r17 \n\t"
14034        "add r23, r0 \n\t"
14035        "adc r25, r1 \n\t"
14036        "adc r26, r27 \n\t"
14037        "mul r5, r16 \n\t"
14038        "add r23, r0 \n\t"
14039        "adc r25, r1 \n\t"
14040        "adc r26, r27 \n\t"
14041        "mul r6, r15 \n\t"
14042        "add r23, r0 \n\t"
14043        "adc r25, r1 \n\t"
14044        "adc r26, r27 \n\t"
14045        "mul r7, r14 \n\t"
14046        "add r23, r0 \n\t"
14047        "adc r25, r1 \n\t"
14048        "adc r26, r27 \n\t"
14049        "mul r8, r13 \n\t"
14050        "add r23, r0 \n\t"
14051        "adc r25, r1 \n\t"
14052        "adc r26, r27 \n\t"
14053        "mul r9, r12 \n\t"
14054        "add r23, r0 \n\t"
14055        "adc r25, r1 \n\t"
14056        "adc r26, r27 \n\t"
14057        "mul r10, r11 \n\t"
14058        "add r23, r0 \n\t"
14059        "adc r25, r1 \n\t"
14060        "adc r26, r27 \n\t"
14061        "lsl r23 \n\t"
14062        "rol r25 \n\t"
14063        "rol r26 \n\t"
14064        "add r23, r24 \n\t"
14065        "adc r25, r22 \n\t"
14066        "adc r26, r27 \n\t"
14067        "st z+, r23 \n\t"
14068
14069        "ldi r22, 0 \n\t"
14070        "mul r2, r20 \n\t"
14071        "mov r23, r0 \n\t"
14072        "mov r24, r1 \n\t"
14073        "mul r3, r19 \n\t"
14074        "add r23, r0 \n\t"
14075        "adc r24, r1 \n\t"
14076        "adc r22, r27 \n\t"
14077        "mul r4, r18 \n\t"
14078        "add r23, r0 \n\t"
14079        "adc r24, r1 \n\t"
14080        "adc r22, r27 \n\t"
14081        "mul r5, r17 \n\t"
14082        "add r23, r0 \n\t"
14083        "adc r24, r1 \n\t"
14084        "adc r22, r27 \n\t"
14085        "mul r6, r16 \n\t"
14086        "add r23, r0 \n\t"
14087        "adc r24, r1 \n\t"
14088        "adc r22, r27 \n\t"
14089        "mul r7, r15 \n\t"
14090        "add r23, r0 \n\t"
14091        "adc r24, r1 \n\t"
14092        "adc r22, r27 \n\t"
14093        "mul r8, r14 \n\t"
14094        "add r23, r0 \n\t"
14095        "adc r24, r1 \n\t"
14096        "adc r22, r27 \n\t"
14097        "mul r9, r13 \n\t"
14098        "add r23, r0 \n\t"
14099        "adc r24, r1 \n\t"
14100        "adc r22, r27 \n\t"
14101        "mul r10, r12 \n\t"
14102        "add r23, r0 \n\t"
14103        "adc r24, r1 \n\t"
14104        "adc r22, r27 \n\t"
14105        "lsl r23 \n\t"
14106        "rol r24 \n\t"
14107        "rol r22 \n\t"
14108        "mul r11, r11 \n\t"
14109        "add r23, r0 \n\t"
14110        "adc r24, r1 \n\t"
14111        "adc r22, r27 \n\t"
14112        "add r23, r25 \n\t"
14113        "adc r24, r26 \n\t"
14114        "adc r22, r27 \n\t"
14115        "st z+, r23 \n\t"
14116
14117        "ldi r26, 0 \n\t"
14118        "mul r2, r21 \n\t"
14119        "mov r23, r0 \n\t"
14120        "mov r25, r1 \n\t"
14121        "mul r3, r20 \n\t"
14122        "add r23, r0 \n\t"
14123        "adc r25, r1 \n\t"
14124        "adc r26, r27 \n\t"
14125        "mul r4, r19 \n\t"
14126        "add r23, r0 \n\t"
14127        "adc r25, r1 \n\t"
14128        "adc r26, r27 \n\t"
14129        "mul r5, r18 \n\t"
14130        "add r23, r0 \n\t"
14131        "adc r25, r1 \n\t"
14132        "adc r26, r27 \n\t"
14133        "mul r6, r17 \n\t"
14134        "add r23, r0 \n\t"
14135        "adc r25, r1 \n\t"
14136        "adc r26, r27 \n\t"
14137        "mul r7, r16 \n\t"
14138        "add r23, r0 \n\t"
14139        "adc r25, r1 \n\t"
14140        "adc r26, r27 \n\t"
14141        "mul r8, r15 \n\t"
14142        "add r23, r0 \n\t"
14143        "adc r25, r1 \n\t"
14144        "adc r26, r27 \n\t"
14145        "mul r9, r14 \n\t"
14146        "add r23, r0 \n\t"
14147        "adc r25, r1 \n\t"
14148        "adc r26, r27 \n\t"
14149        "mul r10, r13 \n\t"
14150        "add r23, r0 \n\t"
14151        "adc r25, r1 \n\t"
14152        "adc r26, r27 \n\t"
14153        "mul r11, r12 \n\t"
14154        "add r23, r0 \n\t"
14155        "adc r25, r1 \n\t"
14156        "adc r26, r27 \n\t"
14157        "lsl r23 \n\t"
14158        "rol r25 \n\t"
14159        "rol r26 \n\t"
14160        "add r23, r24 \n\t"
14161        "adc r25, r22 \n\t"
14162        "adc r26, r27 \n\t"
14163        "st z+, r23 \n\t"
14164
14165        "ldi r22, 0 \n\t"
14166        "mul r3, r21 \n\t"
14167        "mov r23, r0 \n\t"
14168        "mov r24, r1 \n\t"
14169        "mul r4, r20 \n\t"
14170        "add r23, r0 \n\t"
14171        "adc r24, r1 \n\t"
14172        "adc r22, r27 \n\t"
14173        "mul r5, r19 \n\t"
14174        "add r23, r0 \n\t"
14175        "adc r24, r1 \n\t"
14176        "adc r22, r27 \n\t"
14177        "mul r6, r18 \n\t"
14178        "add r23, r0 \n\t"
14179        "adc r24, r1 \n\t"
14180        "adc r22, r27 \n\t"
14181        "mul r7, r17 \n\t"
14182        "add r23, r0 \n\t"
14183        "adc r24, r1 \n\t"
14184        "adc r22, r27 \n\t"
14185        "mul r8, r16 \n\t"
14186        "add r23, r0 \n\t"
14187        "adc r24, r1 \n\t"
14188        "adc r22, r27 \n\t"
14189        "mul r9, r15 \n\t"
14190        "add r23, r0 \n\t"
14191        "adc r24, r1 \n\t"
14192        "adc r22, r27 \n\t"
14193        "mul r10, r14 \n\t"
14194        "add r23, r0 \n\t"
14195        "adc r24, r1 \n\t"
14196        "adc r22, r27 \n\t"
14197        "mul r11, r13 \n\t"
14198        "add r23, r0 \n\t"
14199        "adc r24, r1 \n\t"
14200        "adc r22, r27 \n\t"
14201        "lsl r23 \n\t"
14202        "rol r24 \n\t"
14203        "rol r22 \n\t"
14204        "mul r12, r12 \n\t"
14205        "add r23, r0 \n\t"
14206        "adc r24, r1 \n\t"
14207        "adc r22, r27 \n\t"
14208        "add r23, r25 \n\t"
14209        "adc r24, r26 \n\t"
14210        "adc r22, r27 \n\t"
14211        "st z+, r23 \n\t"
14212
14213        "ldi r26, 0 \n\t"
14214        "mul r4, r21 \n\t"
14215        "mov r23, r0 \n\t"
14216        "mov r25, r1 \n\t"
14217        "mul r5, r20 \n\t"
14218        "add r23, r0 \n\t"
14219        "adc r25, r1 \n\t"
14220        "adc r26, r27 \n\t"
14221        "mul r6, r19 \n\t"
14222        "add r23, r0 \n\t"
14223        "adc r25, r1 \n\t"
14224        "adc r26, r27 \n\t"
14225        "mul r7, r18 \n\t"
14226        "add r23, r0 \n\t"
14227        "adc r25, r1 \n\t"
14228        "adc r26, r27 \n\t"
14229        "mul r8, r17 \n\t"
14230        "add r23, r0 \n\t"
14231        "adc r25, r1 \n\t"
14232        "adc r26, r27 \n\t"
14233        "mul r9, r16 \n\t"
14234        "add r23, r0 \n\t"
14235        "adc r25, r1 \n\t"
14236        "adc r26, r27 \n\t"
14237        "mul r10, r15 \n\t"
14238        "add r23, r0 \n\t"
14239        "adc r25, r1 \n\t"
14240        "adc r26, r27 \n\t"
14241        "mul r11, r14 \n\t"
14242        "add r23, r0 \n\t"
14243        "adc r25, r1 \n\t"
14244        "adc r26, r27 \n\t"
14245        "mul r12, r13 \n\t"
14246        "add r23, r0 \n\t"
14247        "adc r25, r1 \n\t"
14248        "adc r26, r27 \n\t"
14249        "lsl r23 \n\t"
14250        "rol r25 \n\t"
14251        "rol r26 \n\t"
14252        "add r23, r24 \n\t"
14253        "adc r25, r22 \n\t"
14254        "adc r26, r27 \n\t"
14255        "st z+, r23 \n\t"
14256
14257        "ldi r22, 0 \n\t"
14258        "mul r5, r21 \n\t"
14259        "mov r23, r0 \n\t"
14260        "mov r24, r1 \n\t"
14261        "mul r6, r20 \n\t"
14262        "add r23, r0 \n\t"
14263        "adc r24, r1 \n\t"
14264        "adc r22, r27 \n\t"
14265        "mul r7, r19 \n\t"
14266        "add r23, r0 \n\t"
14267        "adc r24, r1 \n\t"
14268        "adc r22, r27 \n\t"
14269        "mul r8, r18 \n\t"
14270        "add r23, r0 \n\t"
14271        "adc r24, r1 \n\t"
14272        "adc r22, r27 \n\t"
14273        "mul r9, r17 \n\t"
14274        "add r23, r0 \n\t"
14275        "adc r24, r1 \n\t"
14276        "adc r22, r27 \n\t"
14277        "mul r10, r16 \n\t"
14278        "add r23, r0 \n\t"
14279        "adc r24, r1 \n\t"
14280        "adc r22, r27 \n\t"
14281        "mul r11, r15 \n\t"
14282        "add r23, r0 \n\t"
14283        "adc r24, r1 \n\t"
14284        "adc r22, r27 \n\t"
14285        "mul r12, r14 \n\t"
14286        "add r23, r0 \n\t"
14287        "adc r24, r1 \n\t"
14288        "adc r22, r27 \n\t"
14289        "lsl r23 \n\t"
14290        "rol r24 \n\t"
14291        "rol r22 \n\t"
14292        "mul r13, r13 \n\t"
14293        "add r23, r0 \n\t"
14294        "adc r24, r1 \n\t"
14295        "adc r22, r27 \n\t"
14296        "add r23, r25 \n\t"
14297        "adc r24, r26 \n\t"
14298        "adc r22, r27 \n\t"
14299        "st z+, r23 \n\t"
14300
14301        "ldi r26, 0 \n\t"
14302        "mul r6, r21 \n\t"
14303        "mov r23, r0 \n\t"
14304        "mov r25, r1 \n\t"
14305        "mul r7, r20 \n\t"
14306        "add r23, r0 \n\t"
14307        "adc r25, r1 \n\t"
14308        "adc r26, r27 \n\t"
14309        "mul r8, r19 \n\t"
14310        "add r23, r0 \n\t"
14311        "adc r25, r1 \n\t"
14312        "adc r26, r27 \n\t"
14313        "mul r9, r18 \n\t"
14314        "add r23, r0 \n\t"
14315        "adc r25, r1 \n\t"
14316        "adc r26, r27 \n\t"
14317        "mul r10, r17 \n\t"
14318        "add r23, r0 \n\t"
14319        "adc r25, r1 \n\t"
14320        "adc r26, r27 \n\t"
14321        "mul r11, r16 \n\t"
14322        "add r23, r0 \n\t"
14323        "adc r25, r1 \n\t"
14324        "adc r26, r27 \n\t"
14325        "mul r12, r15 \n\t"
14326        "add r23, r0 \n\t"
14327        "adc r25, r1 \n\t"
14328        "adc r26, r27 \n\t"
14329        "mul r13, r14 \n\t"
14330        "add r23, r0 \n\t"
14331        "adc r25, r1 \n\t"
14332        "adc r26, r27 \n\t"
14333        "lsl r23 \n\t"
14334        "rol r25 \n\t"
14335        "rol r26 \n\t"
14336        "add r23, r24 \n\t"
14337        "adc r25, r22 \n\t"
14338        "adc r26, r27 \n\t"
14339        "st z+, r23 \n\t"
14340
14341        "ldi r22, 0 \n\t"
14342        "mul r7, r21 \n\t"
14343        "mov r23, r0 \n\t"
14344        "mov r24, r1 \n\t"
14345        "mul r8, r20 \n\t"
14346        "add r23, r0 \n\t"
14347        "adc r24, r1 \n\t"
14348        "adc r22, r27 \n\t"
14349        "mul r9, r19 \n\t"
14350        "add r23, r0 \n\t"
14351        "adc r24, r1 \n\t"
14352        "adc r22, r27 \n\t"
14353        "mul r10, r18 \n\t"
14354        "add r23, r0 \n\t"
14355        "adc r24, r1 \n\t"
14356        "adc r22, r27 \n\t"
14357        "mul r11, r17 \n\t"
14358        "add r23, r0 \n\t"
14359        "adc r24, r1 \n\t"
14360        "adc r22, r27 \n\t"
14361        "mul r12, r16 \n\t"
14362        "add r23, r0 \n\t"
14363        "adc r24, r1 \n\t"
14364        "adc r22, r27 \n\t"
14365        "mul r13, r15 \n\t"
14366        "add r23, r0 \n\t"
14367        "adc r24, r1 \n\t"
14368        "adc r22, r27 \n\t"
14369        "lsl r23 \n\t"
14370        "rol r24 \n\t"
14371        "rol r22 \n\t"
14372        "mul r14, r14 \n\t"
14373        "add r23, r0 \n\t"
14374        "adc r24, r1 \n\t"
14375        "adc r22, r27 \n\t"
14376        "add r23, r25 \n\t"
14377        "adc r24, r26 \n\t"
14378        "adc r22, r27 \n\t"
14379        "st z+, r23 \n\t"
14380
14381        "ldi r26, 0 \n\t"
14382        "mul r8, r21 \n\t"
14383        "mov r23, r0 \n\t"
14384        "mov r25, r1 \n\t"
14385        "mul r9, r20 \n\t"
14386        "add r23, r0 \n\t"
14387        "adc r25, r1 \n\t"
14388        "adc r26, r27 \n\t"
14389        "mul r10, r19 \n\t"
14390        "add r23, r0 \n\t"
14391        "adc r25, r1 \n\t"
14392        "adc r26, r27 \n\t"
14393        "mul r11, r18 \n\t"
14394        "add r23, r0 \n\t"
14395        "adc r25, r1 \n\t"
14396        "adc r26, r27 \n\t"
14397        "mul r12, r17 \n\t"
14398        "add r23, r0 \n\t"
14399        "adc r25, r1 \n\t"
14400        "adc r26, r27 \n\t"
14401        "mul r13, r16 \n\t"
14402        "add r23, r0 \n\t"
14403        "adc r25, r1 \n\t"
14404        "adc r26, r27 \n\t"
14405        "mul r14, r15 \n\t"
14406        "add r23, r0 \n\t"
14407        "adc r25, r1 \n\t"
14408        "adc r26, r27 \n\t"
14409        "lsl r23 \n\t"
14410        "rol r25 \n\t"
14411        "rol r26 \n\t"
14412        "add r23, r24 \n\t"
14413        "adc r25, r22 \n\t"
14414        "adc r26, r27 \n\t"
14415        "st z+, r23 \n\t"
14416
14417        "ldi r22, 0 \n\t"
14418        "mul r9, r21 \n\t"
14419        "mov r23, r0 \n\t"
14420        "mov r24, r1 \n\t"
14421        "mul r10, r20 \n\t"
14422        "add r23, r0 \n\t"
14423        "adc r24, r1 \n\t"
14424        "adc r22, r27 \n\t"
14425        "mul r11, r19 \n\t"
14426        "add r23, r0 \n\t"
14427        "adc r24, r1 \n\t"
14428        "adc r22, r27 \n\t"
14429        "mul r12, r18 \n\t"
14430        "add r23, r0 \n\t"
14431        "adc r24, r1 \n\t"
14432        "adc r22, r27 \n\t"
14433        "mul r13, r17 \n\t"
14434        "add r23, r0 \n\t"
14435        "adc r24, r1 \n\t"
14436        "adc r22, r27 \n\t"
14437        "mul r14, r16 \n\t"
14438        "add r23, r0 \n\t"
14439        "adc r24, r1 \n\t"
14440        "adc r22, r27 \n\t"
14441        "lsl r23 \n\t"
14442        "rol r24 \n\t"
14443        "rol r22 \n\t"
14444        "mul r15, r15 \n\t"
14445        "add r23, r0 \n\t"
14446        "adc r24, r1 \n\t"
14447        "adc r22, r27 \n\t"
14448        "add r23, r25 \n\t"
14449        "adc r24, r26 \n\t"
14450        "adc r22, r27 \n\t"
14451        "st z+, r23 \n\t"
14452
14453        "ldi r26, 0 \n\t"
14454        "mul r10, r21 \n\t"
14455        "mov r23, r0 \n\t"
14456        "mov r25, r1 \n\t"
14457        "mul r11, r20 \n\t"
14458        "add r23, r0 \n\t"
14459        "adc r25, r1 \n\t"
14460        "adc r26, r27 \n\t"
14461        "mul r12, r19 \n\t"
14462        "add r23, r0 \n\t"
14463        "adc r25, r1 \n\t"
14464        "adc r26, r27 \n\t"
14465        "mul r13, r18 \n\t"
14466        "add r23, r0 \n\t"
14467        "adc r25, r1 \n\t"
14468        "adc r26, r27 \n\t"
14469        "mul r14, r17 \n\t"
14470        "add r23, r0 \n\t"
14471        "adc r25, r1 \n\t"
14472        "adc r26, r27 \n\t"
14473        "mul r15, r16 \n\t"
14474        "add r23, r0 \n\t"
14475        "adc r25, r1 \n\t"
14476        "adc r26, r27 \n\t"
14477        "lsl r23 \n\t"
14478        "rol r25 \n\t"
14479        "rol r26 \n\t"
14480        "add r23, r24 \n\t"
14481        "adc r25, r22 \n\t"
14482        "adc r26, r27 \n\t"
14483        "st z+, r23 \n\t"
14484
14485        "ldi r22, 0 \n\t"
14486        "mul r11, r21 \n\t"
14487        "mov r23, r0 \n\t"
14488        "mov r24, r1 \n\t"
14489        "mul r12, r20 \n\t"
14490        "add r23, r0 \n\t"
14491        "adc r24, r1 \n\t"
14492        "adc r22, r27 \n\t"
14493        "mul r13, r19 \n\t"
14494        "add r23, r0 \n\t"
14495        "adc r24, r1 \n\t"
14496        "adc r22, r27 \n\t"
14497        "mul r14, r18 \n\t"
14498        "add r23, r0 \n\t"
14499        "adc r24, r1 \n\t"
14500        "adc r22, r27 \n\t"
14501        "mul r15, r17 \n\t"
14502        "add r23, r0 \n\t"
14503        "adc r24, r1 \n\t"
14504        "adc r22, r27 \n\t"
14505        "lsl r23 \n\t"
14506        "rol r24 \n\t"
14507        "rol r22 \n\t"
14508        "mul r16, r16 \n\t"
14509        "add r23, r0 \n\t"
14510        "adc r24, r1 \n\t"
14511        "adc r22, r27 \n\t"
14512        "add r23, r25 \n\t"
14513        "adc r24, r26 \n\t"
14514        "adc r22, r27 \n\t"
14515        "st z+, r23 \n\t"
14516
14517        "ldi r26, 0 \n\t"
14518        "mul r12, r21 \n\t"
14519        "mov r23, r0 \n\t"
14520        "mov r25, r1 \n\t"
14521        "mul r13, r20 \n\t"
14522        "add r23, r0 \n\t"
14523        "adc r25, r1 \n\t"
14524        "adc r26, r27 \n\t"
14525        "mul r14, r19 \n\t"
14526        "add r23, r0 \n\t"
14527        "adc r25, r1 \n\t"
14528        "adc r26, r27 \n\t"
14529        "mul r15, r18 \n\t"
14530        "add r23, r0 \n\t"
14531        "adc r25, r1 \n\t"
14532        "adc r26, r27 \n\t"
14533        "mul r16, r17 \n\t"
14534        "add r23, r0 \n\t"
14535        "adc r25, r1 \n\t"
14536        "adc r26, r27 \n\t"
14537        "lsl r23 \n\t"
14538        "rol r25 \n\t"
14539        "rol r26 \n\t"
14540        "add r23, r24 \n\t"
14541        "adc r25, r22 \n\t"
14542        "adc r26, r27 \n\t"
14543        "st z+, r23 \n\t"
14544
14545        "ldi r22, 0 \n\t"
14546        "mul r13, r21 \n\t"
14547        "mov r23, r0 \n\t"
14548        "mov r24, r1 \n\t"
14549        "mul r14, r20 \n\t"
14550        "add r23, r0 \n\t"
14551        "adc r24, r1 \n\t"
14552        "adc r22, r27 \n\t"
14553        "mul r15, r19 \n\t"
14554        "add r23, r0 \n\t"
14555        "adc r24, r1 \n\t"
14556        "adc r22, r27 \n\t"
14557        "mul r16, r18 \n\t"
14558        "add r23, r0 \n\t"
14559        "adc r24, r1 \n\t"
14560        "adc r22, r27 \n\t"
14561        "lsl r23 \n\t"
14562        "rol r24 \n\t"
14563        "rol r22 \n\t"
14564        "mul r17, r17 \n\t"
14565        "add r23, r0 \n\t"
14566        "adc r24, r1 \n\t"
14567        "adc r22, r27 \n\t"
14568        "add r23, r25 \n\t"
14569        "adc r24, r26 \n\t"
14570        "adc r22, r27 \n\t"
14571        "st z+, r23 \n\t"
14572
14573        "ldi r26, 0 \n\t"
14574        "mul r14, r21 \n\t"
14575        "mov r23, r0 \n\t"
14576        "mov r25, r1 \n\t"
14577        "mul r15, r20 \n\t"
14578        "add r23, r0 \n\t"
14579        "adc r25, r1 \n\t"
14580        "adc r26, r27 \n\t"
14581        "mul r16, r19 \n\t"
14582        "add r23, r0 \n\t"
14583        "adc r25, r1 \n\t"
14584        "adc r26, r27 \n\t"
14585        "mul r17, r18 \n\t"
14586        "add r23, r0 \n\t"
14587        "adc r25, r1 \n\t"
14588        "adc r26, r27 \n\t"
14589        "lsl r23 \n\t"
14590        "rol r25 \n\t"
14591        "rol r26 \n\t"
14592        "add r23, r24 \n\t"
14593        "adc r25, r22 \n\t"
14594        "adc r26, r27 \n\t"
14595        "st z+, r23 \n\t"
14596
14597        "ldi r22, 0 \n\t"
14598        "mul r15, r21 \n\t"
14599        "mov r23, r0 \n\t"
14600        "mov r24, r1 \n\t"
14601        "mul r16, r20 \n\t"
14602        "add r23, r0 \n\t"
14603        "adc r24, r1 \n\t"
14604        "adc r22, r27 \n\t"
14605        "mul r17, r19 \n\t"
14606        "add r23, r0 \n\t"
14607        "adc r24, r1 \n\t"
14608        "adc r22, r27 \n\t"
14609        "lsl r23 \n\t"
14610        "rol r24 \n\t"
14611        "rol r22 \n\t"
14612        "mul r18, r18 \n\t"
14613        "add r23, r0 \n\t"
14614        "adc r24, r1 \n\t"
14615        "adc r22, r27 \n\t"
14616        "add r23, r25 \n\t"
14617        "adc r24, r26 \n\t"
14618        "adc r22, r27 \n\t"
14619        "st z+, r23 \n\t"
14620
14621        "ldi r26, 0 \n\t"
14622        "mul r16, r21 \n\t"
14623        "mov r23, r0 \n\t"
14624        "mov r25, r1 \n\t"
14625        "mul r17, r20 \n\t"
14626        "add r23, r0 \n\t"
14627        "adc r25, r1 \n\t"
14628        "adc r26, r27 \n\t"
14629        "mul r18, r19 \n\t"
14630        "add r23, r0 \n\t"
14631        "adc r25, r1 \n\t"
14632        "adc r26, r27 \n\t"
14633        "lsl r23 \n\t"
14634        "rol r25 \n\t"
14635        "rol r26 \n\t"
14636        "add r23, r24 \n\t"
14637        "adc r25, r22 \n\t"
14638        "adc r26, r27 \n\t"
14639        "st z+, r23 \n\t"
14640
14641        "ldi r22, 0 \n\t"
14642        "mul r17, r21 \n\t"
14643        "mov r23, r0 \n\t"
14644        "mov r24, r1 \n\t"
14645        "mul r18, r20 \n\t"
14646        "add r23, r0 \n\t"
14647        "adc r24, r1 \n\t"
14648        "adc r22, r27 \n\t"
14649        "lsl r23 \n\t"
14650        "rol r24 \n\t"
14651        "rol r22 \n\t"
14652        "mul r19, r19 \n\t"
14653        "add r23, r0 \n\t"
14654        "adc r24, r1 \n\t"
14655        "adc r22, r27 \n\t"
14656        "add r23, r25 \n\t"
14657        "adc r24, r26 \n\t"
14658        "adc r22, r27 \n\t"
14659        "st z+, r23 \n\t"
14660
14661        "ldi r26, 0 \n\t"
14662        "mul r18, r21 \n\t"
14663        "mov r23, r0 \n\t"
14664        "mov r25, r1 \n\t"
14665        "mul r19, r20 \n\t"
14666        "add r23, r0 \n\t"
14667        "adc r25, r1 \n\t"
14668        "adc r26, r27 \n\t"
14669        "lsl r23 \n\t"
14670        "rol r25 \n\t"
14671        "rol r26 \n\t"
14672        "add r23, r24 \n\t"
14673        "adc r25, r22 \n\t"
14674        "adc r26, r27 \n\t"
14675        "st z+, r23 \n\t"
14676
14677        "ldi r23, 0 \n\t"
14678        "mul r19, r21 \n\t"
14679        "lsl r0 \n\t"
14680        "rol r1 \n\t"
14681        "adc r23, r27 \n\t"
14682        "add r25, r0 \n\t"
14683        "adc r26, r1 \n\t"
14684        "adc r23, r27 \n\t"
14685        "mul r20, r20 \n\t"
14686        "add r25, r0 \n\t"
14687        "adc r26, r1 \n\t"
14688        "adc r23, r27 \n\t"
14689        "st z+, r25 \n\t"
14690
14691        "ldi r25, 0 \n\t"
14692        "mul r20, r21 \n\t"
14693        "lsl r0 \n\t"
14694        "rol r1 \n\t"
14695        "adc r25, r27 \n\t"
14696        "add r26, r0 \n\t"
14697        "adc r23, r1 \n\t"
14698        "adc r25, r27 \n\t"
14699        "st z+, r26 \n\t"
14700
14701        "mul r21, r21 \n\t"
14702        "add r23, r0 \n\t"
14703        "adc r25, r1 \n\t"
14704        "st z+, r23 \n\t"
14705        "st z+, r25 \n\t"
14706        "eor r1, r1 \n\t"
14707        : "+x" (left), "+z" (result)
14708        :
14709        : "r0", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10",
14710          "r11", "r12", "r13", "r14", "r15", "r16", "r17", "r18", "r19", "r20",
14711          "r21", "r22", "r23", "r24", "r25", "cc", "memory"
14712    );
14713}
14714#define asm_square 1
14715
14716#elif (uECC_BYTES == 24)
14717
14718__attribute((noinline))
14719static void vli_square(uint8_t *result, const uint8_t *left) {
14720    __asm__ volatile (
14721        "ldi r25, 0 \n\t"
14722        "movw r28, r26 \n\t"
14723        "ld r2, x+ \n\t"
14724        "ld r3, x+ \n\t"
14725        "adiw r28, 20 \n\t"
14726        "ld r12, y+ \n\t"
14727        "ld r13, y+ \n\t"
14728        "adiw r30, 20 \n\t"
14729
14730        "ldi r23, 0 \n\t"
14731        "mul 2, 12 \n\t"
14732        "st z+, r0 \n\t"
14733        "mov r22, r1 \n\t"
14734
14735        "ldi r24, 0 \n\t"
14736        "mul r2, r13 \n\t"
14737        "add r22, r0 \n\t"
14738        "adc r23, r1 \n\t"
14739        "adc r24, r25 \n\t"
14740        "st z+, r22 \n\t"
14741
14742        "ld r12, y+ \n\t"
14743        "ldi r22, 0 \n\t"
14744        "mul r2, r12 \n\t"
14745        "add r23, r0 \n\t"
14746        "adc r24, r1 \n\t"
14747        "adc r22, r25 \n\t"
14748        "mul r3, r13 \n\t"
14749        "add r23, r0 \n\t"
14750        "adc r24, r1 \n\t"
14751        "adc r22, r25 \n\t"
14752        "st z+, r23 \n\t"
14753
14754        "ld r13, y+ \n\t"
14755        "ldi r23, 0 \n\t"
14756        "mul r2, r13 \n\t"
14757        "add r24, r0 \n\t"
14758        "adc r22, r1 \n\t"
14759        "adc r23, r25 \n\t"
14760        "mul r3, r12 \n\t"
14761        "add r24, r0 \n\t"
14762        "adc r22, r1 \n\t"
14763        "adc r23, r25 \n\t"
14764        "st z+, r24 \n\t"
14765
14766        "ld r2, x+ \n\t"
14767        "ldi r24, 0 \n\t"
14768        "mul r3, r13 \n\t"
14769        "add r22, r0 \n\t"
14770        "adc r23, r1 \n\t"
14771        "adc r24, r25 \n\t"
14772        "mul r2, r12 \n\t"
14773        "add r22, r0 \n\t"
14774        "adc r23, r1 \n\t"
14775        "adc r24, r25 \n\t"
14776        "st z+, r22 \n\t"
14777
14778        "ld r3, x+ \n\t"
14779        "ldi r22, 0 \n\t"
14780        "mul r2, r13 \n\t"
14781        "add r23, r0 \n\t"
14782        "adc r24, r1 \n\t"
14783        "adc r22, r25 \n\t"
14784        "st z+, r23 \n\t"
14785
14786        "mul r3, r13 \n\t"
14787        "add r24, r0 \n\t"
14788        "adc r22, r1 \n\t"
14789        "st z+, r24 \n\t"
14790        "st z+, r22 \n\t"
14791
14792        "sbiw r26, 4 \n\t"
14793        "sbiw r30, 28 \n\t"
14794        "ld r2, x+ \n\t"
14795        "ld r3, x+ \n\t"
14796        "ld r4, x+ \n\t"
14797        "ld r5, x+ \n\t"
14798        "ld r6, x+ \n\t"
14799        "ld r7, x+ \n\t"
14800        "ld r8, x+ \n\t"
14801        "ld r9, x+ \n\t"
14802        "ld r10, x+ \n\t"
14803        "ld r11, x+ \n\t"
14804        "ld r12, x+ \n\t"
14805        "ld r13, x+ \n\t"
14806        "ld r14, x+ \n\t"
14807        "ld r15, x+ \n\t"
14808        "ld r16, x+ \n\t"
14809        "ld r17, x+ \n\t"
14810        "ld r18, x+ \n\t"
14811        "ld r19, x+ \n\t"
14812        "ld r20, x+ \n\t"
14813        "ld r21, x+ \n\t"
14814
14815        "ldi r23, 0 \n\t"
14816        "mul r2, r2 \n\t"
14817        "st z+, r0 \n\t"
14818        "mov r22, r1 \n\t"
14819
14820        "ldi r24, 0 \n\t"
14821        "mul r2, r3 \n\t"
14822        "add r22, r0 \n\t"
14823        "adc r23, r1 \n\t"
14824        "adc r24, r25 \n\t"
14825        "add r22, r0 \n\t"
14826        "adc r23, r1 \n\t"
14827        "adc r24, r25 \n\t"
14828        "st z+, r22 \n\t"
14829
14830        "ldi r22, 0 \n\t"
14831        "mul r2, r4 \n\t"
14832        "add r23, r0 \n\t"
14833        "adc r24, r1 \n\t"
14834        "adc r22, r25 \n\t"
14835        "add r23, r0 \n\t"
14836        "adc r24, r1 \n\t"
14837        "adc r22, r25 \n\t"
14838        "mul r3, r3 \n\t"
14839        "add r23, r0 \n\t"
14840        "adc r24, r1 \n\t"
14841        "adc r22, r25 \n\t"
14842        "st z+, r23 \n\t"
14843
14844        "ldi r29, 0 \n\t"
14845        "mul r2, r5 \n\t"
14846        "mov r23, r0 \n\t"
14847        "mov r28, r1 \n\t"
14848        "mul r3, r4 \n\t"
14849        "add r23, r0 \n\t"
14850        "adc r28, r1 \n\t"
14851        "adc r29, r25 \n\t"
14852        "lsl r23 \n\t"
14853        "rol r28 \n\t"
14854        "rol r29 \n\t"
14855        "add r23, r24 \n\t"
14856        "adc r28, r22 \n\t"
14857        "adc r29, r25 \n\t"
14858        "st z+, r23 \n\t"
14859
14860        "ldi r22, 0 \n\t"
14861        "mul r2, r6 \n\t"
14862        "mov r23, r0 \n\t"
14863        "mov r24, r1 \n\t"
14864        "mul r3, r5 \n\t"
14865        "add r23, r0 \n\t"
14866        "adc r24, r1 \n\t"
14867        "adc r22, r25 \n\t"
14868        "lsl r23 \n\t"
14869        "rol r24 \n\t"
14870        "rol r22 \n\t"
14871        "mul r4, r4 \n\t"
14872        "add r23, r0 \n\t"
14873        "adc r24, r1 \n\t"
14874        "adc r22, r25 \n\t"
14875        "add r23, r28 \n\t"
14876        "adc r24, r29 \n\t"
14877        "adc r22, r25 \n\t"
14878        "st z+, r23 \n\t"
14879
14880        "ldi r29, 0 \n\t"
14881        "mul r2, r7 \n\t"
14882        "mov r23, r0 \n\t"
14883        "mov r28, r1 \n\t"
14884        "mul r3, r6 \n\t"
14885        "add r23, r0 \n\t"
14886        "adc r28, r1 \n\t"
14887        "adc r29, r25 \n\t"
14888        "mul r4, r5 \n\t"
14889        "add r23, r0 \n\t"
14890        "adc r28, r1 \n\t"
14891        "adc r29, r25 \n\t"
14892        "lsl r23 \n\t"
14893        "rol r28 \n\t"
14894        "rol r29 \n\t"
14895        "add r23, r24 \n\t"
14896        "adc r28, r22 \n\t"
14897        "adc r29, r25 \n\t"
14898        "st z+, r23 \n\t"
14899
14900        "ldi r22, 0 \n\t"
14901        "mul r2, r8 \n\t"
14902        "mov r23, r0 \n\t"
14903        "mov r24, r1 \n\t"
14904        "mul r3, r7 \n\t"
14905        "add r23, r0 \n\t"
14906        "adc r24, r1 \n\t"
14907        "adc r22, r25 \n\t"
14908        "mul r4, r6 \n\t"
14909        "add r23, r0 \n\t"
14910        "adc r24, r1 \n\t"
14911        "adc r22, r25 \n\t"
14912        "lsl r23 \n\t"
14913        "rol r24 \n\t"
14914        "rol r22 \n\t"
14915        "mul r5, r5 \n\t"
14916        "add r23, r0 \n\t"
14917        "adc r24, r1 \n\t"
14918        "adc r22, r25 \n\t"
14919        "add r23, r28 \n\t"
14920        "adc r24, r29 \n\t"
14921        "adc r22, r25 \n\t"
14922        "st z+, r23 \n\t"
14923
14924        "ldi r29, 0 \n\t"
14925        "mul r2, r9 \n\t"
14926        "mov r23, r0 \n\t"
14927        "mov r28, r1 \n\t"
14928        "mul r3, r8 \n\t"
14929        "add r23, r0 \n\t"
14930        "adc r28, r1 \n\t"
14931        "adc r29, r25 \n\t"
14932        "mul r4, r7 \n\t"
14933        "add r23, r0 \n\t"
14934        "adc r28, r1 \n\t"
14935        "adc r29, r25 \n\t"
14936        "mul r5, r6 \n\t"
14937        "add r23, r0 \n\t"
14938        "adc r28, r1 \n\t"
14939        "adc r29, r25 \n\t"
14940        "lsl r23 \n\t"
14941        "rol r28 \n\t"
14942        "rol r29 \n\t"
14943        "add r23, r24 \n\t"
14944        "adc r28, r22 \n\t"
14945        "adc r29, r25 \n\t"
14946        "st z+, r23 \n\t"
14947
14948        "ldi r22, 0 \n\t"
14949        "mul r2, r10 \n\t"
14950        "mov r23, r0 \n\t"
14951        "mov r24, r1 \n\t"
14952        "mul r3, r9 \n\t"
14953        "add r23, r0 \n\t"
14954        "adc r24, r1 \n\t"
14955        "adc r22, r25 \n\t"
14956        "mul r4, r8 \n\t"
14957        "add r23, r0 \n\t"
14958        "adc r24, r1 \n\t"
14959        "adc r22, r25 \n\t"
14960        "mul r5, r7 \n\t"
14961        "add r23, r0 \n\t"
14962        "adc r24, r1 \n\t"
14963        "adc r22, r25 \n\t"
14964        "lsl r23 \n\t"
14965        "rol r24 \n\t"
14966        "rol r22 \n\t"
14967        "mul r6, r6 \n\t"
14968        "add r23, r0 \n\t"
14969        "adc r24, r1 \n\t"
14970        "adc r22, r25 \n\t"
14971        "add r23, r28 \n\t"
14972        "adc r24, r29 \n\t"
14973        "adc r22, r25 \n\t"
14974        "st z+, r23 \n\t"
14975
14976        "ldi r29, 0 \n\t"
14977        "mul r2, r11 \n\t"
14978        "mov r23, r0 \n\t"
14979        "mov r28, r1 \n\t"
14980        "mul r3, r10 \n\t"
14981        "add r23, r0 \n\t"
14982        "adc r28, r1 \n\t"
14983        "adc r29, r25 \n\t"
14984        "mul r4, r9 \n\t"
14985        "add r23, r0 \n\t"
14986        "adc r28, r1 \n\t"
14987        "adc r29, r25 \n\t"
14988        "mul r5, r8 \n\t"
14989        "add r23, r0 \n\t"
14990        "adc r28, r1 \n\t"
14991        "adc r29, r25 \n\t"
14992        "mul r6, r7 \n\t"
14993        "add r23, r0 \n\t"
14994        "adc r28, r1 \n\t"
14995        "adc r29, r25 \n\t"
14996        "lsl r23 \n\t"
14997        "rol r28 \n\t"
14998        "rol r29 \n\t"
14999        "add r23, r24 \n\t"
15000        "adc r28, r22 \n\t"
15001        "adc r29, r25 \n\t"
15002        "st z+, r23 \n\t"
15003
15004        "ldi r22, 0 \n\t"
15005        "mul r2, r12 \n\t"
15006        "mov r23, r0 \n\t"
15007        "mov r24, r1 \n\t"
15008        "mul r3, r11 \n\t"
15009        "add r23, r0 \n\t"
15010        "adc r24, r1 \n\t"
15011        "adc r22, r25 \n\t"
15012        "mul r4, r10 \n\t"
15013        "add r23, r0 \n\t"
15014        "adc r24, r1 \n\t"
15015        "adc r22, r25 \n\t"
15016        "mul r5, r9 \n\t"
15017        "add r23, r0 \n\t"
15018        "adc r24, r1 \n\t"
15019        "adc r22, r25 \n\t"
15020        "mul r6, r8 \n\t"
15021        "add r23, r0 \n\t"
15022        "adc r24, r1 \n\t"
15023        "adc r22, r25 \n\t"
15024        "lsl r23 \n\t"
15025        "rol r24 \n\t"
15026        "rol r22 \n\t"
15027        "mul r7, r7 \n\t"
15028        "add r23, r0 \n\t"
15029        "adc r24, r1 \n\t"
15030        "adc r22, r25 \n\t"
15031        "add r23, r28 \n\t"
15032        "adc r24, r29 \n\t"
15033        "adc r22, r25 \n\t"
15034        "st z+, r23 \n\t"
15035
15036        "ldi r29, 0 \n\t"
15037        "mul r2, r13 \n\t"
15038        "mov r23, r0 \n\t"
15039        "mov r28, r1 \n\t"
15040        "mul r3, r12 \n\t"
15041        "add r23, r0 \n\t"
15042        "adc r28, r1 \n\t"
15043        "adc r29, r25 \n\t"
15044        "mul r4, r11 \n\t"
15045        "add r23, r0 \n\t"
15046        "adc r28, r1 \n\t"
15047        "adc r29, r25 \n\t"
15048        "mul r5, r10 \n\t"
15049        "add r23, r0 \n\t"
15050        "adc r28, r1 \n\t"
15051        "adc r29, r25 \n\t"
15052        "mul r6, r9 \n\t"
15053        "add r23, r0 \n\t"
15054        "adc r28, r1 \n\t"
15055        "adc r29, r25 \n\t"
15056        "mul r7, r8 \n\t"
15057        "add r23, r0 \n\t"
15058        "adc r28, r1 \n\t"
15059        "adc r29, r25 \n\t"
15060        "lsl r23 \n\t"
15061        "rol r28 \n\t"
15062        "rol r29 \n\t"
15063        "add r23, r24 \n\t"
15064        "adc r28, r22 \n\t"
15065        "adc r29, r25 \n\t"
15066        "st z+, r23 \n\t"
15067
15068        "ldi r22, 0 \n\t"
15069        "mul r2, r14 \n\t"
15070        "mov r23, r0 \n\t"
15071        "mov r24, r1 \n\t"
15072        "mul r3, r13 \n\t"
15073        "add r23, r0 \n\t"
15074        "adc r24, r1 \n\t"
15075        "adc r22, r25 \n\t"
15076        "mul r4, r12 \n\t"
15077        "add r23, r0 \n\t"
15078        "adc r24, r1 \n\t"
15079        "adc r22, r25 \n\t"
15080        "mul r5, r11 \n\t"
15081        "add r23, r0 \n\t"
15082        "adc r24, r1 \n\t"
15083        "adc r22, r25 \n\t"
15084        "mul r6, r10 \n\t"
15085        "add r23, r0 \n\t"
15086        "adc r24, r1 \n\t"
15087        "adc r22, r25 \n\t"
15088        "mul r7, r9 \n\t"
15089        "add r23, r0 \n\t"
15090        "adc r24, r1 \n\t"
15091        "adc r22, r25 \n\t"
15092        "lsl r23 \n\t"
15093        "rol r24 \n\t"
15094        "rol r22 \n\t"
15095        "mul r8, r8 \n\t"
15096        "add r23, r0 \n\t"
15097        "adc r24, r1 \n\t"
15098        "adc r22, r25 \n\t"
15099        "add r23, r28 \n\t"
15100        "adc r24, r29 \n\t"
15101        "adc r22, r25 \n\t"
15102        "st z+, r23 \n\t"
15103
15104        "ldi r29, 0 \n\t"
15105        "mul r2, r15 \n\t"
15106        "mov r23, r0 \n\t"
15107        "mov r28, r1 \n\t"
15108        "mul r3, r14 \n\t"
15109        "add r23, r0 \n\t"
15110        "adc r28, r1 \n\t"
15111        "adc r29, r25 \n\t"
15112        "mul r4, r13 \n\t"
15113        "add r23, r0 \n\t"
15114        "adc r28, r1 \n\t"
15115        "adc r29, r25 \n\t"
15116        "mul r5, r12 \n\t"
15117        "add r23, r0 \n\t"
15118        "adc r28, r1 \n\t"
15119        "adc r29, r25 \n\t"
15120        "mul r6, r11 \n\t"
15121        "add r23, r0 \n\t"
15122        "adc r28, r1 \n\t"
15123        "adc r29, r25 \n\t"
15124        "mul r7, r10 \n\t"
15125        "add r23, r0 \n\t"
15126        "adc r28, r1 \n\t"
15127        "adc r29, r25 \n\t"
15128        "mul r8, r9 \n\t"
15129        "add r23, r0 \n\t"
15130        "adc r28, r1 \n\t"
15131        "adc r29, r25 \n\t"
15132        "lsl r23 \n\t"
15133        "rol r28 \n\t"
15134        "rol r29 \n\t"
15135        "add r23, r24 \n\t"
15136        "adc r28, r22 \n\t"
15137        "adc r29, r25 \n\t"
15138        "st z+, r23 \n\t"
15139
15140        "ldi r22, 0 \n\t"
15141        "mul r2, r16 \n\t"
15142        "mov r23, r0 \n\t"
15143        "mov r24, r1 \n\t"
15144        "mul r3, r15 \n\t"
15145        "add r23, r0 \n\t"
15146        "adc r24, r1 \n\t"
15147        "adc r22, r25 \n\t"
15148        "mul r4, r14 \n\t"
15149        "add r23, r0 \n\t"
15150        "adc r24, r1 \n\t"
15151        "adc r22, r25 \n\t"
15152        "mul r5, r13 \n\t"
15153        "add r23, r0 \n\t"
15154        "adc r24, r1 \n\t"
15155        "adc r22, r25 \n\t"
15156        "mul r6, r12 \n\t"
15157        "add r23, r0 \n\t"
15158        "adc r24, r1 \n\t"
15159        "adc r22, r25 \n\t"
15160        "mul r7, r11 \n\t"
15161        "add r23, r0 \n\t"
15162        "adc r24, r1 \n\t"
15163        "adc r22, r25 \n\t"
15164        "mul r8, r10 \n\t"
15165        "add r23, r0 \n\t"
15166        "adc r24, r1 \n\t"
15167        "adc r22, r25 \n\t"
15168        "lsl r23 \n\t"
15169        "rol r24 \n\t"
15170        "rol r22 \n\t"
15171        "mul r9, r9 \n\t"
15172        "add r23, r0 \n\t"
15173        "adc r24, r1 \n\t"
15174        "adc r22, r25 \n\t"
15175        "add r23, r28 \n\t"
15176        "adc r24, r29 \n\t"
15177        "adc r22, r25 \n\t"
15178        "st z+, r23 \n\t"
15179
15180        "ldi r29, 0 \n\t"
15181        "mul r2, r17 \n\t"
15182        "mov r23, r0 \n\t"
15183        "mov r28, r1 \n\t"
15184        "mul r3, r16 \n\t"
15185        "add r23, r0 \n\t"
15186        "adc r28, r1 \n\t"
15187        "adc r29, r25 \n\t"
15188        "mul r4, r15 \n\t"
15189        "add r23, r0 \n\t"
15190        "adc r28, r1 \n\t"
15191        "adc r29, r25 \n\t"
15192        "mul r5, r14 \n\t"
15193        "add r23, r0 \n\t"
15194        "adc r28, r1 \n\t"
15195        "adc r29, r25 \n\t"
15196        "mul r6, r13 \n\t"
15197        "add r23, r0 \n\t"
15198        "adc r28, r1 \n\t"
15199        "adc r29, r25 \n\t"
15200        "mul r7, r12 \n\t"
15201        "add r23, r0 \n\t"
15202        "adc r28, r1 \n\t"
15203        "adc r29, r25 \n\t"
15204        "mul r8, r11 \n\t"
15205        "add r23, r0 \n\t"
15206        "adc r28, r1 \n\t"
15207        "adc r29, r25 \n\t"
15208        "mul r9, r10 \n\t"
15209        "add r23, r0 \n\t"
15210        "adc r28, r1 \n\t"
15211        "adc r29, r25 \n\t"
15212        "lsl r23 \n\t"
15213        "rol r28 \n\t"
15214        "rol r29 \n\t"
15215        "add r23, r24 \n\t"
15216        "adc r28, r22 \n\t"
15217        "adc r29, r25 \n\t"
15218        "st z+, r23 \n\t"
15219
15220        "ldi r22, 0 \n\t"
15221        "mul r2, r18 \n\t"
15222        "mov r23, r0 \n\t"
15223        "mov r24, r1 \n\t"
15224        "mul r3, r17 \n\t"
15225        "add r23, r0 \n\t"
15226        "adc r24, r1 \n\t"
15227        "adc r22, r25 \n\t"
15228        "mul r4, r16 \n\t"
15229        "add r23, r0 \n\t"
15230        "adc r24, r1 \n\t"
15231        "adc r22, r25 \n\t"
15232        "mul r5, r15 \n\t"
15233        "add r23, r0 \n\t"
15234        "adc r24, r1 \n\t"
15235        "adc r22, r25 \n\t"
15236        "mul r6, r14 \n\t"
15237        "add r23, r0 \n\t"
15238        "adc r24, r1 \n\t"
15239        "adc r22, r25 \n\t"
15240        "mul r7, r13 \n\t"
15241        "add r23, r0 \n\t"
15242        "adc r24, r1 \n\t"
15243        "adc r22, r25 \n\t"
15244        "mul r8, r12 \n\t"
15245        "add r23, r0 \n\t"
15246        "adc r24, r1 \n\t"
15247        "adc r22, r25 \n\t"
15248        "mul r9, r11 \n\t"
15249        "add r23, r0 \n\t"
15250        "adc r24, r1 \n\t"
15251        "adc r22, r25 \n\t"
15252        "lsl r23 \n\t"
15253        "rol r24 \n\t"
15254        "rol r22 \n\t"
15255        "mul r10, r10 \n\t"
15256        "add r23, r0 \n\t"
15257        "adc r24, r1 \n\t"
15258        "adc r22, r25 \n\t"
15259        "add r23, r28 \n\t"
15260        "adc r24, r29 \n\t"
15261        "adc r22, r25 \n\t"
15262        "st z+, r23 \n\t"
15263
15264        "ldi r29, 0 \n\t"
15265        "mul r2, r19 \n\t"
15266        "mov r23, r0 \n\t"
15267        "mov r28, r1 \n\t"
15268        "mul r3, r18 \n\t"
15269        "add r23, r0 \n\t"
15270        "adc r28, r1 \n\t"
15271        "adc r29, r25 \n\t"
15272        "mul r4, r17 \n\t"
15273        "add r23, r0 \n\t"
15274        "adc r28, r1 \n\t"
15275        "adc r29, r25 \n\t"
15276        "mul r5, r16 \n\t"
15277        "add r23, r0 \n\t"
15278        "adc r28, r1 \n\t"
15279        "adc r29, r25 \n\t"
15280        "mul r6, r15 \n\t"
15281        "add r23, r0 \n\t"
15282        "adc r28, r1 \n\t"
15283        "adc r29, r25 \n\t"
15284        "mul r7, r14 \n\t"
15285        "add r23, r0 \n\t"
15286        "adc r28, r1 \n\t"
15287        "adc r29, r25 \n\t"
15288        "mul r8, r13 \n\t"
15289        "add r23, r0 \n\t"
15290        "adc r28, r1 \n\t"
15291        "adc r29, r25 \n\t"
15292        "mul r9, r12 \n\t"
15293        "add r23, r0 \n\t"
15294        "adc r28, r1 \n\t"
15295        "adc r29, r25 \n\t"
15296        "mul r10, r11 \n\t"
15297        "add r23, r0 \n\t"
15298        "adc r28, r1 \n\t"
15299        "adc r29, r25 \n\t"
15300        "lsl r23 \n\t"
15301        "rol r28 \n\t"
15302        "rol r29 \n\t"
15303        "add r23, r24 \n\t"
15304        "adc r28, r22 \n\t"
15305        "adc r29, r25 \n\t"
15306        "st z+, r23 \n\t"
15307
15308        "ldi r22, 0 \n\t"
15309        "mul r2, r20 \n\t"
15310        "mov r23, r0 \n\t"
15311        "mov r24, r1 \n\t"
15312        "mul r3, r19 \n\t"
15313        "add r23, r0 \n\t"
15314        "adc r24, r1 \n\t"
15315        "adc r22, r25 \n\t"
15316        "mul r4, r18 \n\t"
15317        "add r23, r0 \n\t"
15318        "adc r24, r1 \n\t"
15319        "adc r22, r25 \n\t"
15320        "mul r5, r17 \n\t"
15321        "add r23, r0 \n\t"
15322        "adc r24, r1 \n\t"
15323        "adc r22, r25 \n\t"
15324        "mul r6, r16 \n\t"
15325        "add r23, r0 \n\t"
15326        "adc r24, r1 \n\t"
15327        "adc r22, r25 \n\t"
15328        "mul r7, r15 \n\t"
15329        "add r23, r0 \n\t"
15330        "adc r24, r1 \n\t"
15331        "adc r22, r25 \n\t"
15332        "mul r8, r14 \n\t"
15333        "add r23, r0 \n\t"
15334        "adc r24, r1 \n\t"
15335        "adc r22, r25 \n\t"
15336        "mul r9, r13 \n\t"
15337        "add r23, r0 \n\t"
15338        "adc r24, r1 \n\t"
15339        "adc r22, r25 \n\t"
15340        "mul r10, r12 \n\t"
15341        "add r23, r0 \n\t"
15342        "adc r24, r1 \n\t"
15343        "adc r22, r25 \n\t"
15344        "lsl r23 \n\t"
15345        "rol r24 \n\t"
15346        "rol r22 \n\t"
15347        "mul r11, r11 \n\t"
15348        "add r23, r0 \n\t"
15349        "adc r24, r1 \n\t"
15350        "adc r22, r25 \n\t"
15351        "add r23, r28 \n\t"
15352        "adc r24, r29 \n\t"
15353        "adc r22, r25 \n\t"
15354        "st z+, r23 \n\t"
15355
15356        "ldi r29, 0 \n\t"
15357        "mul r2, r21 \n\t"
15358        "mov r23, r0 \n\t"
15359        "mov r28, r1 \n\t"
15360        "mul r3, r20 \n\t"
15361        "add r23, r0 \n\t"
15362        "adc r28, r1 \n\t"
15363        "adc r29, r25 \n\t"
15364        "mul r4, r19 \n\t"
15365        "add r23, r0 \n\t"
15366        "adc r28, r1 \n\t"
15367        "adc r29, r25 \n\t"
15368        "mul r5, r18 \n\t"
15369        "add r23, r0 \n\t"
15370        "adc r28, r1 \n\t"
15371        "adc r29, r25 \n\t"
15372        "mul r6, r17 \n\t"
15373        "add r23, r0 \n\t"
15374        "adc r28, r1 \n\t"
15375        "adc r29, r25 \n\t"
15376        "mul r7, r16 \n\t"
15377        "add r23, r0 \n\t"
15378        "adc r28, r1 \n\t"
15379        "adc r29, r25 \n\t"
15380        "mul r8, r15 \n\t"
15381        "add r23, r0 \n\t"
15382        "adc r28, r1 \n\t"
15383        "adc r29, r25 \n\t"
15384        "mul r9, r14 \n\t"
15385        "add r23, r0 \n\t"
15386        "adc r28, r1 \n\t"
15387        "adc r29, r25 \n\t"
15388        "mul r10, r13 \n\t"
15389        "add r23, r0 \n\t"
15390        "adc r28, r1 \n\t"
15391        "adc r29, r25 \n\t"
15392        "mul r11, r12 \n\t"
15393        "add r23, r0 \n\t"
15394        "adc r28, r1 \n\t"
15395        "adc r29, r25 \n\t"
15396        "lsl r23 \n\t"
15397        "rol r28 \n\t"
15398        "rol r29 \n\t"
15399        "add r23, r24 \n\t"
15400        "adc r28, r22 \n\t"
15401        "adc r29, r25 \n\t"
15402        "st z+, r23 \n\t"
15403
15404        "ld r2, x+ \n\t"
15405        "ldi r22, 0 \n\t"
15406        "mul r3, r21 \n\t"
15407        "mov r23, r0 \n\t"
15408        "mov r24, r1 \n\t"
15409        "mul r4, r20 \n\t"
15410        "add r23, r0 \n\t"
15411        "adc r24, r1 \n\t"
15412        "adc r22, r25 \n\t"
15413        "mul r5, r19 \n\t"
15414        "add r23, r0 \n\t"
15415        "adc r24, r1 \n\t"
15416        "adc r22, r25 \n\t"
15417        "mul r6, r18 \n\t"
15418        "add r23, r0 \n\t"
15419        "adc r24, r1 \n\t"
15420        "adc r22, r25 \n\t"
15421        "mul r7, r17 \n\t"
15422        "add r23, r0 \n\t"
15423        "adc r24, r1 \n\t"
15424        "adc r22, r25 \n\t"
15425        "mul r8, r16 \n\t"
15426        "add r23, r0 \n\t"
15427        "adc r24, r1 \n\t"
15428        "adc r22, r25 \n\t"
15429        "mul r9, r15 \n\t"
15430        "add r23, r0 \n\t"
15431        "adc r24, r1 \n\t"
15432        "adc r22, r25 \n\t"
15433        "mul r10, r14 \n\t"
15434        "add r23, r0 \n\t"
15435        "adc r24, r1 \n\t"
15436        "adc r22, r25 \n\t"
15437        "mul r11, r13 \n\t"
15438        "add r23, r0 \n\t"
15439        "adc r24, r1 \n\t"
15440        "adc r22, r25 \n\t"
15441        "ld r0, z \n\t"
15442        "add r23, r0 \n\t"
15443        "adc r24, r25 \n\t"
15444        "adc r22, r25 \n\t"
15445        "lsl r23 \n\t"
15446        "rol r24 \n\t"
15447        "rol r22 \n\t"
15448        "mul r12, r12 \n\t"
15449        "add r23, r0 \n\t"
15450        "adc r24, r1 \n\t"
15451        "adc r22, r25 \n\t"
15452        "add r23, r28 \n\t"
15453        "adc r24, r29 \n\t"
15454        "adc r22, r25 \n\t"
15455        "st z+, r23 \n\t"
15456
15457        "ldi r29, 0 \n\t"
15458        "mul r3, r2 \n\t"
15459        "mov r23, r0 \n\t"
15460        "mov r28, r1 \n\t"
15461        "mul r4, r21 \n\t"
15462        "add r23, r0 \n\t"
15463        "adc r28, r1 \n\t"
15464        "adc r29, r25 \n\t"
15465        "mul r5, r20 \n\t"
15466        "add r23, r0 \n\t"
15467        "adc r28, r1 \n\t"
15468        "adc r29, r25 \n\t"
15469        "mul r6, r19 \n\t"
15470        "add r23, r0 \n\t"
15471        "adc r28, r1 \n\t"
15472        "adc r29, r25 \n\t"
15473        "mul r7, r18 \n\t"
15474        "add r23, r0 \n\t"
15475        "adc r28, r1 \n\t"
15476        "adc r29, r25 \n\t"
15477        "mul r8, r17 \n\t"
15478        "add r23, r0 \n\t"
15479        "adc r28, r1 \n\t"
15480        "adc r29, r25 \n\t"
15481        "mul r9, r16 \n\t"
15482        "add r23, r0 \n\t"
15483        "adc r28, r1 \n\t"
15484        "adc r29, r25 \n\t"
15485        "mul r10, r15 \n\t"
15486        "add r23, r0 \n\t"
15487        "adc r28, r1 \n\t"
15488        "adc r29, r25 \n\t"
15489        "mul r11, r14 \n\t"
15490        "add r23, r0 \n\t"
15491        "adc r28, r1 \n\t"
15492        "adc r29, r25 \n\t"
15493        "mul r12, r13 \n\t"
15494        "add r23, r0 \n\t"
15495        "adc r28, r1 \n\t"
15496        "adc r29, r25 \n\t"
15497        "ld r0, z \n\t"
15498        "add r23, r0 \n\t"
15499        "adc r28, r25 \n\t"
15500        "adc r29, r25 \n\t"
15501        "lsl r23 \n\t"
15502        "rol r28 \n\t"
15503        "rol r29 \n\t"
15504        "add r23, r24 \n\t"
15505        "adc r28, r22 \n\t"
15506        "adc r29, r25 \n\t"
15507        "st z+, r23 \n\t"
15508
15509        "ld r3, x+ \n\t"
15510        "ldi r22, 0 \n\t"
15511        "mul r4, r2 \n\t"
15512        "mov r23, r0 \n\t"
15513        "mov r24, r1 \n\t"
15514        "mul r5, r21 \n\t"
15515        "add r23, r0 \n\t"
15516        "adc r24, r1 \n\t"
15517        "adc r22, r25 \n\t"
15518        "mul r6, r20 \n\t"
15519        "add r23, r0 \n\t"
15520        "adc r24, r1 \n\t"
15521        "adc r22, r25 \n\t"
15522        "mul r7, r19 \n\t"
15523        "add r23, r0 \n\t"
15524        "adc r24, r1 \n\t"
15525        "adc r22, r25 \n\t"
15526        "mul r8, r18 \n\t"
15527        "add r23, r0 \n\t"
15528        "adc r24, r1 \n\t"
15529        "adc r22, r25 \n\t"
15530        "mul r9, r17 \n\t"
15531        "add r23, r0 \n\t"
15532        "adc r24, r1 \n\t"
15533        "adc r22, r25 \n\t"
15534        "mul r10, r16 \n\t"
15535        "add r23, r0 \n\t"
15536        "adc r24, r1 \n\t"
15537        "adc r22, r25 \n\t"
15538        "mul r11, r15 \n\t"
15539        "add r23, r0 \n\t"
15540        "adc r24, r1 \n\t"
15541        "adc r22, r25 \n\t"
15542        "mul r12, r14 \n\t"
15543        "add r23, r0 \n\t"
15544        "adc r24, r1 \n\t"
15545        "adc r22, r25 \n\t"
15546        "ld r0, z \n\t"
15547        "add r23, r0 \n\t"
15548        "adc r24, r25 \n\t"
15549        "adc r22, r25 \n\t"
15550        "lsl r23 \n\t"
15551        "rol r24 \n\t"
15552        "rol r22 \n\t"
15553        "mul r13, r13 \n\t"
15554        "add r23, r0 \n\t"
15555        "adc r24, r1 \n\t"
15556        "adc r22, r25 \n\t"
15557        "add r23, r28 \n\t"
15558        "adc r24, r29 \n\t"
15559        "adc r22, r25 \n\t"
15560        "st z+, r23 \n\t"
15561
15562        "ldi r29, 0 \n\t"
15563        "mul r4, r3 \n\t"
15564        "mov r23, r0 \n\t"
15565        "mov r28, r1 \n\t"
15566        "mul r5, r2 \n\t"
15567        "add r23, r0 \n\t"
15568        "adc r28, r1 \n\t"
15569        "adc r29, r25 \n\t"
15570        "mul r6, r21 \n\t"
15571        "add r23, r0 \n\t"
15572        "adc r28, r1 \n\t"
15573        "adc r29, r25 \n\t"
15574        "mul r7, r20 \n\t"
15575        "add r23, r0 \n\t"
15576        "adc r28, r1 \n\t"
15577        "adc r29, r25 \n\t"
15578        "mul r8, r19 \n\t"
15579        "add r23, r0 \n\t"
15580        "adc r28, r1 \n\t"
15581        "adc r29, r25 \n\t"
15582        "mul r9, r18 \n\t"
15583        "add r23, r0 \n\t"
15584        "adc r28, r1 \n\t"
15585        "adc r29, r25 \n\t"
15586        "mul r10, r17 \n\t"
15587        "add r23, r0 \n\t"
15588        "adc r28, r1 \n\t"
15589        "adc r29, r25 \n\t"
15590        "mul r11, r16 \n\t"
15591        "add r23, r0 \n\t"
15592        "adc r28, r1 \n\t"
15593        "adc r29, r25 \n\t"
15594        "mul r12, r15 \n\t"
15595        "add r23, r0 \n\t"
15596        "adc r28, r1 \n\t"
15597        "adc r29, r25 \n\t"
15598        "mul r13, r14 \n\t"
15599        "add r23, r0 \n\t"
15600        "adc r28, r1 \n\t"
15601        "adc r29, r25 \n\t"
15602        "ld r0, z \n\t"
15603        "add r23, r0 \n\t"
15604        "adc r28, r25 \n\t"
15605        "adc r29, r25 \n\t"
15606        "lsl r23 \n\t"
15607        "rol r28 \n\t"
15608        "rol r29 \n\t"
15609        "add r23, r24 \n\t"
15610        "adc r28, r22 \n\t"
15611        "adc r29, r25 \n\t"
15612        "st z+, r23 \n\t"
15613
15614        "ld r4, x+ \n\t"
15615        "ldi r22, 0 \n\t"
15616        "mul r5, r3 \n\t"
15617        "mov r23, r0 \n\t"
15618        "mov r24, r1 \n\t"
15619        "mul r6, r2 \n\t"
15620        "add r23, r0 \n\t"
15621        "adc r24, r1 \n\t"
15622        "adc r22, r25 \n\t"
15623        "mul r7, r21 \n\t"
15624        "add r23, r0 \n\t"
15625        "adc r24, r1 \n\t"
15626        "adc r22, r25 \n\t"
15627        "mul r8, r20 \n\t"
15628        "add r23, r0 \n\t"
15629        "adc r24, r1 \n\t"
15630        "adc r22, r25 \n\t"
15631        "mul r9, r19 \n\t"
15632        "add r23, r0 \n\t"
15633        "adc r24, r1 \n\t"
15634        "adc r22, r25 \n\t"
15635        "mul r10, r18 \n\t"
15636        "add r23, r0 \n\t"
15637        "adc r24, r1 \n\t"
15638        "adc r22, r25 \n\t"
15639        "mul r11, r17 \n\t"
15640        "add r23, r0 \n\t"
15641        "adc r24, r1 \n\t"
15642        "adc r22, r25 \n\t"
15643        "mul r12, r16 \n\t"
15644        "add r23, r0 \n\t"
15645        "adc r24, r1 \n\t"
15646        "adc r22, r25 \n\t"
15647        "mul r13, r15 \n\t"
15648        "add r23, r0 \n\t"
15649        "adc r24, r1 \n\t"
15650        "adc r22, r25 \n\t"
15651        "ld r0, z \n\t"
15652        "add r23, r0 \n\t"
15653        "adc r24, r25 \n\t"
15654        "adc r22, r25 \n\t"
15655        "lsl r23 \n\t"
15656        "rol r24 \n\t"
15657        "rol r22 \n\t"
15658        "mul r14, r14 \n\t"
15659        "add r23, r0 \n\t"
15660        "adc r24, r1 \n\t"
15661        "adc r22, r25 \n\t"
15662        "add r23, r28 \n\t"
15663        "adc r24, r29 \n\t"
15664        "adc r22, r25 \n\t"
15665        "st z+, r23 \n\t"
15666
15667        "ldi r29, 0 \n\t"
15668        "mul r5, r4 \n\t"
15669        "mov r23, r0 \n\t"
15670        "mov r28, r1 \n\t"
15671        "mul r6, r3 \n\t"
15672        "add r23, r0 \n\t"
15673        "adc r28, r1 \n\t"
15674        "adc r29, r25 \n\t"
15675        "mul r7, r2 \n\t"
15676        "add r23, r0 \n\t"
15677        "adc r28, r1 \n\t"
15678        "adc r29, r25 \n\t"
15679        "mul r8, r21 \n\t"
15680        "add r23, r0 \n\t"
15681        "adc r28, r1 \n\t"
15682        "adc r29, r25 \n\t"
15683        "mul r9, r20 \n\t"
15684        "add r23, r0 \n\t"
15685        "adc r28, r1 \n\t"
15686        "adc r29, r25 \n\t"
15687        "mul r10, r19 \n\t"
15688        "add r23, r0 \n\t"
15689        "adc r28, r1 \n\t"
15690        "adc r29, r25 \n\t"
15691        "mul r11, r18 \n\t"
15692        "add r23, r0 \n\t"
15693        "adc r28, r1 \n\t"
15694        "adc r29, r25 \n\t"
15695        "mul r12, r17 \n\t"
15696        "add r23, r0 \n\t"
15697        "adc r28, r1 \n\t"
15698        "adc r29, r25 \n\t"
15699        "mul r13, r16 \n\t"
15700        "add r23, r0 \n\t"
15701        "adc r28, r1 \n\t"
15702        "adc r29, r25 \n\t"
15703        "mul r14, r15 \n\t"
15704        "add r23, r0 \n\t"
15705        "adc r28, r1 \n\t"
15706        "adc r29, r25 \n\t"
15707        "ld r0, z \n\t"
15708        "add r23, r0 \n\t"
15709        "adc r28, r25 \n\t"
15710        "adc r29, r25 \n\t"
15711        "lsl r23 \n\t"
15712        "rol r28 \n\t"
15713        "rol r29 \n\t"
15714        "add r23, r24 \n\t"
15715        "adc r28, r22 \n\t"
15716        "adc r29, r25 \n\t"
15717        "st z+, r23 \n\t"
15718
15719        "ld r5, x+ \n\t"
15720        "ldi r22, 0 \n\t"
15721        "mul r6, r4 \n\t"
15722        "mov r23, r0 \n\t"
15723        "mov r24, r1 \n\t"
15724        "mul r7, r3 \n\t"
15725        "add r23, r0 \n\t"
15726        "adc r24, r1 \n\t"
15727        "adc r22, r25 \n\t"
15728        "mul r8, r2 \n\t"
15729        "add r23, r0 \n\t"
15730        "adc r24, r1 \n\t"
15731        "adc r22, r25 \n\t"
15732        "mul r9, r21 \n\t"
15733        "add r23, r0 \n\t"
15734        "adc r24, r1 \n\t"
15735        "adc r22, r25 \n\t"
15736        "mul r10, r20 \n\t"
15737        "add r23, r0 \n\t"
15738        "adc r24, r1 \n\t"
15739        "adc r22, r25 \n\t"
15740        "mul r11, r19 \n\t"
15741        "add r23, r0 \n\t"
15742        "adc r24, r1 \n\t"
15743        "adc r22, r25 \n\t"
15744        "mul r12, r18 \n\t"
15745        "add r23, r0 \n\t"
15746        "adc r24, r1 \n\t"
15747        "adc r22, r25 \n\t"
15748        "mul r13, r17 \n\t"
15749        "add r23, r0 \n\t"
15750        "adc r24, r1 \n\t"
15751        "adc r22, r25 \n\t"
15752        "mul r14, r16 \n\t"
15753        "add r23, r0 \n\t"
15754        "adc r24, r1 \n\t"
15755        "adc r22, r25 \n\t"
15756        "ld r0, z \n\t"
15757        "add r23, r0 \n\t"
15758        "adc r24, r25 \n\t"
15759        "adc r22, r25 \n\t"
15760        "lsl r23 \n\t"
15761        "rol r24 \n\t"
15762        "rol r22 \n\t"
15763        "mul r15, r15 \n\t"
15764        "add r23, r0 \n\t"
15765        "adc r24, r1 \n\t"
15766        "adc r22, r25 \n\t"
15767        "add r23, r28 \n\t"
15768        "adc r24, r29 \n\t"
15769        "adc r22, r25 \n\t"
15770        "st z+, r23 \n\t"
15771
15772        "ldi r29, 0 \n\t"
15773        "mul r6, r5 \n\t"
15774        "mov r23, r0 \n\t"
15775        "mov r28, r1 \n\t"
15776        "mul r7, r4 \n\t"
15777        "add r23, r0 \n\t"
15778        "adc r28, r1 \n\t"
15779        "adc r29, r25 \n\t"
15780        "mul r8, r3 \n\t"
15781        "add r23, r0 \n\t"
15782        "adc r28, r1 \n\t"
15783        "adc r29, r25 \n\t"
15784        "mul r9, r2 \n\t"
15785        "add r23, r0 \n\t"
15786        "adc r28, r1 \n\t"
15787        "adc r29, r25 \n\t"
15788        "mul r10, r21 \n\t"
15789        "add r23, r0 \n\t"
15790        "adc r28, r1 \n\t"
15791        "adc r29, r25 \n\t"
15792        "mul r11, r20 \n\t"
15793        "add r23, r0 \n\t"
15794        "adc r28, r1 \n\t"
15795        "adc r29, r25 \n\t"
15796        "mul r12, r19 \n\t"
15797        "add r23, r0 \n\t"
15798        "adc r28, r1 \n\t"
15799        "adc r29, r25 \n\t"
15800        "mul r13, r18 \n\t"
15801        "add r23, r0 \n\t"
15802        "adc r28, r1 \n\t"
15803        "adc r29, r25 \n\t"
15804        "mul r14, r17 \n\t"
15805        "add r23, r0 \n\t"
15806        "adc r28, r1 \n\t"
15807        "adc r29, r25 \n\t"
15808        "mul r15, r16 \n\t"
15809        "add r23, r0 \n\t"
15810        "adc r28, r1 \n\t"
15811        "adc r29, r25 \n\t"
15812        "ld r0, z \n\t"
15813        "add r23, r0 \n\t"
15814        "adc r28, r25 \n\t"
15815        "adc r29, r25 \n\t"
15816        "lsl r23 \n\t"
15817        "rol r28 \n\t"
15818        "rol r29 \n\t"
15819        "add r23, r24 \n\t"
15820        "adc r28, r22 \n\t"
15821        "adc r29, r25 \n\t"
15822        "st z+, r23 \n\t"
15823
15824        "ldi r22, 0 \n\t"
15825        "mul r7, r5 \n\t"
15826        "mov r23, r0 \n\t"
15827        "mov r24, r1 \n\t"
15828        "mul r8, r4 \n\t"
15829        "add r23, r0 \n\t"
15830        "adc r24, r1 \n\t"
15831        "adc r22, r25 \n\t"
15832        "mul r9, r3 \n\t"
15833        "add r23, r0 \n\t"
15834        "adc r24, r1 \n\t"
15835        "adc r22, r25 \n\t"
15836        "mul r10, r2 \n\t"
15837        "add r23, r0 \n\t"
15838        "adc r24, r1 \n\t"
15839        "adc r22, r25 \n\t"
15840        "mul r11, r21 \n\t"
15841        "add r23, r0 \n\t"
15842        "adc r24, r1 \n\t"
15843        "adc r22, r25 \n\t"
15844        "mul r12, r20 \n\t"
15845        "add r23, r0 \n\t"
15846        "adc r24, r1 \n\t"
15847        "adc r22, r25 \n\t"
15848        "mul r13, r19 \n\t"
15849        "add r23, r0 \n\t"
15850        "adc r24, r1 \n\t"
15851        "adc r22, r25 \n\t"
15852        "mul r14, r18 \n\t"
15853        "add r23, r0 \n\t"
15854        "adc r24, r1 \n\t"
15855        "adc r22, r25 \n\t"
15856        "mul r15, r17 \n\t"
15857        "add r23, r0 \n\t"
15858        "adc r24, r1 \n\t"
15859        "adc r22, r25 \n\t"
15860        "lsl r23 \n\t"
15861        "rol r24 \n\t"
15862        "rol r22 \n\t"
15863        "mul r16, r16 \n\t"
15864        "add r23, r0 \n\t"
15865        "adc r24, r1 \n\t"
15866        "adc r22, r25 \n\t"
15867        "add r23, r28 \n\t"
15868        "adc r24, r29 \n\t"
15869        "adc r22, r25 \n\t"
15870        "st z+, r23 \n\t"
15871
15872        "ldi r29, 0 \n\t"
15873        "mul r8, r5 \n\t"
15874        "mov r23, r0 \n\t"
15875        "mov r28, r1 \n\t"
15876        "mul r9, r4 \n\t"
15877        "add r23, r0 \n\t"
15878        "adc r28, r1 \n\t"
15879        "adc r29, r25 \n\t"
15880        "mul r10, r3 \n\t"
15881        "add r23, r0 \n\t"
15882        "adc r28, r1 \n\t"
15883        "adc r29, r25 \n\t"
15884        "mul r11, r2 \n\t"
15885        "add r23, r0 \n\t"
15886        "adc r28, r1 \n\t"
15887        "adc r29, r25 \n\t"
15888        "mul r12, r21 \n\t"
15889        "add r23, r0 \n\t"
15890        "adc r28, r1 \n\t"
15891        "adc r29, r25 \n\t"
15892        "mul r13, r20 \n\t"
15893        "add r23, r0 \n\t"
15894        "adc r28, r1 \n\t"
15895        "adc r29, r25 \n\t"
15896        "mul r14, r19 \n\t"
15897        "add r23, r0 \n\t"
15898        "adc r28, r1 \n\t"
15899        "adc r29, r25 \n\t"
15900        "mul r15, r18 \n\t"
15901        "add r23, r0 \n\t"
15902        "adc r28, r1 \n\t"
15903        "adc r29, r25 \n\t"
15904        "mul r16, r17 \n\t"
15905        "add r23, r0 \n\t"
15906        "adc r28, r1 \n\t"
15907        "adc r29, r25 \n\t"
15908        "lsl r23 \n\t"
15909        "rol r28 \n\t"
15910        "rol r29 \n\t"
15911        "add r23, r24 \n\t"
15912        "adc r28, r22 \n\t"
15913        "adc r29, r25 \n\t"
15914        "st z+, r23 \n\t"
15915
15916        "ldi r22, 0 \n\t"
15917        "mul r9, r5 \n\t"
15918        "mov r23, r0 \n\t"
15919        "mov r24, r1 \n\t"
15920        "mul r10, r4 \n\t"
15921        "add r23, r0 \n\t"
15922        "adc r24, r1 \n\t"
15923        "adc r22, r25 \n\t"
15924        "mul r11, r3 \n\t"
15925        "add r23, r0 \n\t"
15926        "adc r24, r1 \n\t"
15927        "adc r22, r25 \n\t"
15928        "mul r12, r2 \n\t"
15929        "add r23, r0 \n\t"
15930        "adc r24, r1 \n\t"
15931        "adc r22, r25 \n\t"
15932        "mul r13, r21 \n\t"
15933        "add r23, r0 \n\t"
15934        "adc r24, r1 \n\t"
15935        "adc r22, r25 \n\t"
15936        "mul r14, r20 \n\t"
15937        "add r23, r0 \n\t"
15938        "adc r24, r1 \n\t"
15939        "adc r22, r25 \n\t"
15940        "mul r15, r19 \n\t"
15941        "add r23, r0 \n\t"
15942        "adc r24, r1 \n\t"
15943        "adc r22, r25 \n\t"
15944        "mul r16, r18 \n\t"
15945        "add r23, r0 \n\t"
15946        "adc r24, r1 \n\t"
15947        "adc r22, r25 \n\t"
15948        "lsl r23 \n\t"
15949        "rol r24 \n\t"
15950        "rol r22 \n\t"
15951        "mul r17, r17 \n\t"
15952        "add r23, r0 \n\t"
15953        "adc r24, r1 \n\t"
15954        "adc r22, r25 \n\t"
15955        "add r23, r28 \n\t"
15956        "adc r24, r29 \n\t"
15957        "adc r22, r25 \n\t"
15958        "st z+, r23 \n\t"
15959
15960        "ldi r29, 0 \n\t"
15961        "mul r10, r5 \n\t"
15962        "mov r23, r0 \n\t"
15963        "mov r28, r1 \n\t"
15964        "mul r11, r4 \n\t"
15965        "add r23, r0 \n\t"
15966        "adc r28, r1 \n\t"
15967        "adc r29, r25 \n\t"
15968        "mul r12, r3 \n\t"
15969        "add r23, r0 \n\t"
15970        "adc r28, r1 \n\t"
15971        "adc r29, r25 \n\t"
15972        "mul r13, r2 \n\t"
15973        "add r23, r0 \n\t"
15974        "adc r28, r1 \n\t"
15975        "adc r29, r25 \n\t"
15976        "mul r14, r21 \n\t"
15977        "add r23, r0 \n\t"
15978        "adc r28, r1 \n\t"
15979        "adc r29, r25 \n\t"
15980        "mul r15, r20 \n\t"
15981        "add r23, r0 \n\t"
15982        "adc r28, r1 \n\t"
15983        "adc r29, r25 \n\t"
15984        "mul r16, r19 \n\t"
15985        "add r23, r0 \n\t"
15986        "adc r28, r1 \n\t"
15987        "adc r29, r25 \n\t"
15988        "mul r17, r18 \n\t"
15989        "add r23, r0 \n\t"
15990        "adc r28, r1 \n\t"
15991        "adc r29, r25 \n\t"
15992        "lsl r23 \n\t"
15993        "rol r28 \n\t"
15994        "rol r29 \n\t"
15995        "add r23, r24 \n\t"
15996        "adc r28, r22 \n\t"
15997        "adc r29, r25 \n\t"
15998        "st z+, r23 \n\t"
15999
16000        "ldi r22, 0 \n\t"
16001        "mul r11, r5 \n\t"
16002        "mov r23, r0 \n\t"
16003        "mov r24, r1 \n\t"
16004        "mul r12, r4 \n\t"
16005        "add r23, r0 \n\t"
16006        "adc r24, r1 \n\t"
16007        "adc r22, r25 \n\t"
16008        "mul r13, r3 \n\t"
16009        "add r23, r0 \n\t"
16010        "adc r24, r1 \n\t"
16011        "adc r22, r25 \n\t"
16012        "mul r14, r2 \n\t"
16013        "add r23, r0 \n\t"
16014        "adc r24, r1 \n\t"
16015        "adc r22, r25 \n\t"
16016        "mul r15, r21 \n\t"
16017        "add r23, r0 \n\t"
16018        "adc r24, r1 \n\t"
16019        "adc r22, r25 \n\t"
16020        "mul r16, r20 \n\t"
16021        "add r23, r0 \n\t"
16022        "adc r24, r1 \n\t"
16023        "adc r22, r25 \n\t"
16024        "mul r17, r19 \n\t"
16025        "add r23, r0 \n\t"
16026        "adc r24, r1 \n\t"
16027        "adc r22, r25 \n\t"
16028        "lsl r23 \n\t"
16029        "rol r24 \n\t"
16030        "rol r22 \n\t"
16031        "mul r18, r18 \n\t"
16032        "add r23, r0 \n\t"
16033        "adc r24, r1 \n\t"
16034        "adc r22, r25 \n\t"
16035        "add r23, r28 \n\t"
16036        "adc r24, r29 \n\t"
16037        "adc r22, r25 \n\t"
16038        "st z+, r23 \n\t"
16039
16040        "ldi r29, 0 \n\t"
16041        "mul r12, r5 \n\t"
16042        "mov r23, r0 \n\t"
16043        "mov r28, r1 \n\t"
16044        "mul r13, r4 \n\t"
16045        "add r23, r0 \n\t"
16046        "adc r28, r1 \n\t"
16047        "adc r29, r25 \n\t"
16048        "mul r14, r3 \n\t"
16049        "add r23, r0 \n\t"
16050        "adc r28, r1 \n\t"
16051        "adc r29, r25 \n\t"
16052        "mul r15, r2 \n\t"
16053        "add r23, r0 \n\t"
16054        "adc r28, r1 \n\t"
16055        "adc r29, r25 \n\t"
16056        "mul r16, r21 \n\t"
16057        "add r23, r0 \n\t"
16058        "adc r28, r1 \n\t"
16059        "adc r29, r25 \n\t"
16060        "mul r17, r20 \n\t"
16061        "add r23, r0 \n\t"
16062        "adc r28, r1 \n\t"
16063        "adc r29, r25 \n\t"
16064        "mul r18, r19 \n\t"
16065        "add r23, r0 \n\t"
16066        "adc r28, r1 \n\t"
16067        "adc r29, r25 \n\t"
16068        "lsl r23 \n\t"
16069        "rol r28 \n\t"
16070        "rol r29 \n\t"
16071        "add r23, r24 \n\t"
16072        "adc r28, r22 \n\t"
16073        "adc r29, r25 \n\t"
16074        "st z+, r23 \n\t"
16075
16076        "ldi r22, 0 \n\t"
16077        "mul r13, r5 \n\t"
16078        "mov r23, r0 \n\t"
16079        "mov r24, r1 \n\t"
16080        "mul r14, r4 \n\t"
16081        "add r23, r0 \n\t"
16082        "adc r24, r1 \n\t"
16083        "adc r22, r25 \n\t"
16084        "mul r15, r3 \n\t"
16085        "add r23, r0 \n\t"
16086        "adc r24, r1 \n\t"
16087        "adc r22, r25 \n\t"
16088        "mul r16, r2 \n\t"
16089        "add r23, r0 \n\t"
16090        "adc r24, r1 \n\t"
16091        "adc r22, r25 \n\t"
16092        "mul r17, r21 \n\t"
16093        "add r23, r0 \n\t"
16094        "adc r24, r1 \n\t"
16095        "adc r22, r25 \n\t"
16096        "mul r18, r20 \n\t"
16097        "add r23, r0 \n\t"
16098        "adc r24, r1 \n\t"
16099        "adc r22, r25 \n\t"
16100        "lsl r23 \n\t"
16101        "rol r24 \n\t"
16102        "rol r22 \n\t"
16103        "mul r19, r19 \n\t"
16104        "add r23, r0 \n\t"
16105        "adc r24, r1 \n\t"
16106        "adc r22, r25 \n\t"
16107        "add r23, r28 \n\t"
16108        "adc r24, r29 \n\t"
16109        "adc r22, r25 \n\t"
16110        "st z+, r23 \n\t"
16111
16112        "ldi r29, 0 \n\t"
16113        "mul r14, r5 \n\t"
16114        "mov r23, r0 \n\t"
16115        "mov r28, r1 \n\t"
16116        "mul r15, r4 \n\t"
16117        "add r23, r0 \n\t"
16118        "adc r28, r1 \n\t"
16119        "adc r29, r25 \n\t"
16120        "mul r16, r3 \n\t"
16121        "add r23, r0 \n\t"
16122        "adc r28, r1 \n\t"
16123        "adc r29, r25 \n\t"
16124        "mul r17, r2 \n\t"
16125        "add r23, r0 \n\t"
16126        "adc r28, r1 \n\t"
16127        "adc r29, r25 \n\t"
16128        "mul r18, r21 \n\t"
16129        "add r23, r0 \n\t"
16130        "adc r28, r1 \n\t"
16131        "adc r29, r25 \n\t"
16132        "mul r19, r20 \n\t"
16133        "add r23, r0 \n\t"
16134        "adc r28, r1 \n\t"
16135        "adc r29, r25 \n\t"
16136        "lsl r23 \n\t"
16137        "rol r28 \n\t"
16138        "rol r29 \n\t"
16139        "add r23, r24 \n\t"
16140        "adc r28, r22 \n\t"
16141        "adc r29, r25 \n\t"
16142        "st z+, r23 \n\t"
16143
16144        "ldi r22, 0 \n\t"
16145        "mul r15, r5 \n\t"
16146        "mov r23, r0 \n\t"
16147        "mov r24, r1 \n\t"
16148        "mul r16, r4 \n\t"
16149        "add r23, r0 \n\t"
16150        "adc r24, r1 \n\t"
16151        "adc r22, r25 \n\t"
16152        "mul r17, r3 \n\t"
16153        "add r23, r0 \n\t"
16154        "adc r24, r1 \n\t"
16155        "adc r22, r25 \n\t"
16156        "mul r18, r2 \n\t"
16157        "add r23, r0 \n\t"
16158        "adc r24, r1 \n\t"
16159        "adc r22, r25 \n\t"
16160        "mul r19, r21 \n\t"
16161        "add r23, r0 \n\t"
16162        "adc r24, r1 \n\t"
16163        "adc r22, r25 \n\t"
16164        "lsl r23 \n\t"
16165        "rol r24 \n\t"
16166        "rol r22 \n\t"
16167        "mul r20, r20 \n\t"
16168        "add r23, r0 \n\t"
16169        "adc r24, r1 \n\t"
16170        "adc r22, r25 \n\t"
16171        "add r23, r28 \n\t"
16172        "adc r24, r29 \n\t"
16173        "adc r22, r25 \n\t"
16174        "st z+, r23 \n\t"
16175
16176        "ldi r29, 0 \n\t"
16177        "mul r16, r5 \n\t"
16178        "mov r23, r0 \n\t"
16179        "mov r28, r1 \n\t"
16180        "mul r17, r4 \n\t"
16181        "add r23, r0 \n\t"
16182        "adc r28, r1 \n\t"
16183        "adc r29, r25 \n\t"
16184        "mul r18, r3 \n\t"
16185        "add r23, r0 \n\t"
16186        "adc r28, r1 \n\t"
16187        "adc r29, r25 \n\t"
16188        "mul r19, r2 \n\t"
16189        "add r23, r0 \n\t"
16190        "adc r28, r1 \n\t"
16191        "adc r29, r25 \n\t"
16192        "mul r20, r21 \n\t"
16193        "add r23, r0 \n\t"
16194        "adc r28, r1 \n\t"
16195        "adc r29, r25 \n\t"
16196        "lsl r23 \n\t"
16197        "rol r28 \n\t"
16198        "rol r29 \n\t"
16199        "add r23, r24 \n\t"
16200        "adc r28, r22 \n\t"
16201        "adc r29, r25 \n\t"
16202        "st z+, r23 \n\t"
16203
16204        "ldi r22, 0 \n\t"
16205        "mul r17, r5 \n\t"
16206        "mov r23, r0 \n\t"
16207        "mov r24, r1 \n\t"
16208        "mul r18, r4 \n\t"
16209        "add r23, r0 \n\t"
16210        "adc r24, r1 \n\t"
16211        "adc r22, r25 \n\t"
16212        "mul r19, r3 \n\t"
16213        "add r23, r0 \n\t"
16214        "adc r24, r1 \n\t"
16215        "adc r22, r25 \n\t"
16216        "mul r20, r2 \n\t"
16217        "add r23, r0 \n\t"
16218        "adc r24, r1 \n\t"
16219        "adc r22, r25 \n\t"
16220        "lsl r23 \n\t"
16221        "rol r24 \n\t"
16222        "rol r22 \n\t"
16223        "mul r21, r21 \n\t"
16224        "add r23, r0 \n\t"
16225        "adc r24, r1 \n\t"
16226        "adc r22, r25 \n\t"
16227        "add r23, r28 \n\t"
16228        "adc r24, r29 \n\t"
16229        "adc r22, r25 \n\t"
16230        "st z+, r23 \n\t"
16231
16232        "ldi r29, 0 \n\t"
16233        "mul r18, r5 \n\t"
16234        "mov r23, r0 \n\t"
16235        "mov r28, r1 \n\t"
16236        "mul r19, r4 \n\t"
16237        "add r23, r0 \n\t"
16238        "adc r28, r1 \n\t"
16239        "adc r29, r25 \n\t"
16240        "mul r20, r3 \n\t"
16241        "add r23, r0 \n\t"
16242        "adc r28, r1 \n\t"
16243        "adc r29, r25 \n\t"
16244        "mul r21, r2 \n\t"
16245        "add r23, r0 \n\t"
16246        "adc r28, r1 \n\t"
16247        "adc r29, r25 \n\t"
16248        "lsl r23 \n\t"
16249        "rol r28 \n\t"
16250        "rol r29 \n\t"
16251        "add r23, r24 \n\t"
16252        "adc r28, r22 \n\t"
16253        "adc r29, r25 \n\t"
16254        "st z+, r23 \n\t"
16255
16256        "ldi r22, 0 \n\t"
16257        "mul r19, r5 \n\t"
16258        "mov r23, r0 \n\t"
16259        "mov r24, r1 \n\t"
16260        "mul r20, r4 \n\t"
16261        "add r23, r0 \n\t"
16262        "adc r24, r1 \n\t"
16263        "adc r22, r25 \n\t"
16264        "mul r21, r3 \n\t"
16265        "add r23, r0 \n\t"
16266        "adc r24, r1 \n\t"
16267        "adc r22, r25 \n\t"
16268        "lsl r23 \n\t"
16269        "rol r24 \n\t"
16270        "rol r22 \n\t"
16271        "mul r2, r2 \n\t"
16272        "add r23, r0 \n\t"
16273        "adc r24, r1 \n\t"
16274        "adc r22, r25 \n\t"
16275        "add r23, r28 \n\t"
16276        "adc r24, r29 \n\t"
16277        "adc r22, r25 \n\t"
16278        "st z+, r23 \n\t"
16279
16280        "ldi r29, 0 \n\t"
16281        "mul r20, r5 \n\t"
16282        "mov r23, r0 \n\t"
16283        "mov r28, r1 \n\t"
16284        "mul r21, r4 \n\t"
16285        "add r23, r0 \n\t"
16286        "adc r28, r1 \n\t"
16287        "adc r29, r25 \n\t"
16288        "mul r2, r3 \n\t"
16289        "add r23, r0 \n\t"
16290        "adc r28, r1 \n\t"
16291        "adc r29, r25 \n\t"
16292        "lsl r23 \n\t"
16293        "rol r28 \n\t"
16294        "rol r29 \n\t"
16295        "add r23, r24 \n\t"
16296        "adc r28, r22 \n\t"
16297        "adc r29, r25 \n\t"
16298        "st z+, r23 \n\t"
16299
16300        "ldi r22, 0 \n\t"
16301        "mul r21, r5 \n\t"
16302        "mov r23, r0 \n\t"
16303        "mov r24, r1 \n\t"
16304        "mul r2, r4 \n\t"
16305        "add r23, r0 \n\t"
16306        "adc r24, r1 \n\t"
16307        "adc r22, r25 \n\t"
16308        "lsl r23 \n\t"
16309        "rol r24 \n\t"
16310        "rol r22 \n\t"
16311        "mul r3, r3 \n\t"
16312        "add r23, r0 \n\t"
16313        "adc r24, r1 \n\t"
16314        "adc r22, r25 \n\t"
16315        "add r23, r28 \n\t"
16316        "adc r24, r29 \n\t"
16317        "adc r22, r25 \n\t"
16318        "st z+, r23 \n\t"
16319
16320        "ldi r29, 0 \n\t"
16321        "mul r2, r5 \n\t"
16322        "mov r23, r0 \n\t"
16323        "mov r28, r1 \n\t"
16324        "mul r3, r4 \n\t"
16325        "add r23, r0 \n\t"
16326        "adc r28, r1 \n\t"
16327        "adc r29, r25 \n\t"
16328        "lsl r23 \n\t"
16329        "rol r28 \n\t"
16330        "rol r29 \n\t"
16331        "add r23, r24 \n\t"
16332        "adc r28, r22 \n\t"
16333        "adc r29, r25 \n\t"
16334        "st z+, r23 \n\t"
16335
16336        "ldi r23, 0 \n\t"
16337        "mul r3, r5 \n\t"
16338        "add r28, r0 \n\t"
16339        "adc r29, r1 \n\t"
16340        "adc r23, r25 \n\t"
16341        "add r28, r0 \n\t"
16342        "adc r29, r1 \n\t"
16343        "adc r23, r25 \n\t"
16344        "mul r4, r4 \n\t"
16345        "add r28, r0 \n\t"
16346        "adc r29, r1 \n\t"
16347        "adc r23, r25 \n\t"
16348        "st z+, r28 \n\t"
16349
16350        "ldi r28, 0 \n\t"
16351        "mul r4, r5 \n\t"
16352        "add r29, r0 \n\t"
16353        "adc r23, r1 \n\t"
16354        "adc r28, r25 \n\t"
16355        "add r29, r0 \n\t"
16356        "adc r23, r1 \n\t"
16357        "adc r28, r25 \n\t"
16358        "st z+, r29 \n\t"
16359
16360        "mul r5, r5 \n\t"
16361        "add r23, r0 \n\t"
16362        "adc r28, r1 \n\t"
16363        "st z+, r23 \n\t"
16364        "st z+, r28 \n\t"
16365        "eor r1, r1 \n\t"
16366        : "+x" (left), "+z" (result)
16367        :
16368        : "r0", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10",
16369          "r11", "r12", "r13", "r14", "r15", "r16", "r17", "r18", "r19", "r20",
16370          "r21", "r22", "r23", "r24", "r25", "r28", "r29", "cc", "memory"
16371    );
16372}
16373#define asm_square 1
16374
16375#elif (uECC_BYTES == 28)
16376
16377__attribute((noinline))
16378static void vli_square(uint8_t *result, const uint8_t *left) {
16379    __asm__ volatile (
16380        "ldi r25, 0 \n\t"
16381        "movw r28, r26 \n\t"
16382        "ld r2, x+ \n\t"
16383        "ld r3, x+ \n\t"
16384        "ld r4, x+ \n\t"
16385        "ld r5, x+ \n\t"
16386        "adiw r28, 20 \n\t"
16387        "ld r12, y+ \n\t"
16388        "ld r13, y+ \n\t"
16389        "ld r14, y+ \n\t"
16390        "ld r15, y+ \n\t"
16391        "adiw r30, 20 \n\t"
16392
16393        "ldi r23, 0 \n\t"
16394        "mul 2, 12 \n\t"
16395        "st z+, r0 \n\t"
16396        "mov r22, r1 \n\t"
16397
16398        "ldi r24, 0 \n\t"
16399        "mul r2, r13 \n\t"
16400        "add r22, r0 \n\t"
16401        "adc r23, r1 \n\t"
16402        "adc r24, r25 \n\t"
16403        "st z+, r22 \n\t"
16404
16405        "ldi r22, 0 \n\t"
16406        "mul r2, r14 \n\t"
16407        "add r23, r0 \n\t"
16408        "adc r24, r1 \n\t"
16409        "adc r22, r25 \n\t"
16410        "mul r3, r13 \n\t"
16411        "add r23, r0 \n\t"
16412        "adc r24, r1 \n\t"
16413        "adc r22, r25 \n\t"
16414        "st z+, r23 \n\t"
16415
16416        "ldi r23, 0 \n\t"
16417        "mul r2, r15 \n\t"
16418        "add r24, r0 \n\t"
16419        "adc r22, r1 \n\t"
16420        "adc r23, r25 \n\t"
16421        "mul r3, r14 \n\t"
16422        "add r24, r0 \n\t"
16423        "adc r22, r1 \n\t"
16424        "adc r23, r25 \n\t"
16425        "st z+, r24 \n\t"
16426
16427        "ld r12, y+ \n\t"
16428        "ldi r24, 0 \n\t"
16429        "mul r2, r12 \n\t"
16430        "add r22, r0 \n\t"
16431        "adc r23, r1 \n\t"
16432        "adc r24, r25 \n\t"
16433        "mul r3, r15 \n\t"
16434        "add r22, r0 \n\t"
16435        "adc r23, r1 \n\t"
16436        "adc r24, r25 \n\t"
16437        "mul r4, r14 \n\t"
16438        "add r22, r0 \n\t"
16439        "adc r23, r1 \n\t"
16440        "adc r24, r25 \n\t"
16441        "st z+, r22 \n\t"
16442
16443        "ld r13, y+ \n\t"
16444        "ldi r22, 0 \n\t"
16445        "mul r2, r13 \n\t"
16446        "add r23, r0 \n\t"
16447        "adc r24, r1 \n\t"
16448        "adc r22, r25 \n\t"
16449        "mul r3, r12 \n\t"
16450        "add r23, r0 \n\t"
16451        "adc r24, r1 \n\t"
16452        "adc r22, r25 \n\t"
16453        "mul r4, r15 \n\t"
16454        "add r23, r0 \n\t"
16455        "adc r24, r1 \n\t"
16456        "adc r22, r25 \n\t"
16457        "st z+, r23 \n\t"
16458
16459        "ld r14, y+ \n\t"
16460        "ldi r23, 0 \n\t"
16461        "mul r2, r14 \n\t"
16462        "add r24, r0 \n\t"
16463        "adc r22, r1 \n\t"
16464        "adc r23, r25 \n\t"
16465        "mul r3, r13 \n\t"
16466        "add r24, r0 \n\t"
16467        "adc r22, r1 \n\t"
16468        "adc r23, r25 \n\t"
16469        "mul r4, r12 \n\t"
16470        "add r24, r0 \n\t"
16471        "adc r22, r1 \n\t"
16472        "adc r23, r25 \n\t"
16473        "mul r5, r15 \n\t"
16474        "add r24, r0 \n\t"
16475        "adc r22, r1 \n\t"
16476        "adc r23, r25 \n\t"
16477        "st z+, r24 \n\t"
16478
16479        "ld r15, y+ \n\t"
16480        "ldi r24, 0 \n\t"
16481        "mul r2, r15 \n\t"
16482        "add r22, r0 \n\t"
16483        "adc r23, r1 \n\t"
16484        "adc r24, r25 \n\t"
16485        "mul r3, r14 \n\t"
16486        "add r22, r0 \n\t"
16487        "adc r23, r1 \n\t"
16488        "adc r24, r25 \n\t"
16489        "mul r4, r13 \n\t"
16490        "add r22, r0 \n\t"
16491        "adc r23, r1 \n\t"
16492        "adc r24, r25 \n\t"
16493        "mul r5, r12 \n\t"
16494        "add r22, r0 \n\t"
16495        "adc r23, r1 \n\t"
16496        "adc r24, r25 \n\t"
16497        "st z+, r22 \n\t"
16498
16499        "ld r2, x+ \n\t"
16500        "ldi r22, 0 \n\t"
16501        "mul r3, r15 \n\t"
16502        "add r23, r0 \n\t"
16503        "adc r24, r1 \n\t"
16504        "adc r22, r25 \n\t"
16505        "mul r4, r14 \n\t"
16506        "add r23, r0 \n\t"
16507        "adc r24, r1 \n\t"
16508        "adc r22, r25 \n\t"
16509        "mul r5, r13 \n\t"
16510        "add r23, r0 \n\t"
16511        "adc r24, r1 \n\t"
16512        "adc r22, r25 \n\t"
16513        "mul r2, r12 \n\t"
16514        "add r23, r0 \n\t"
16515        "adc r24, r1 \n\t"
16516        "adc r22, r25 \n\t"
16517        "st z+, r23 \n\t"
16518
16519        "ld r3, x+ \n\t"
16520        "ldi r23, 0 \n\t"
16521        "mul r4, r15 \n\t"
16522        "add r24, r0 \n\t"
16523        "adc r22, r1 \n\t"
16524        "adc r23, r25 \n\t"
16525        "mul r5, r14 \n\t"
16526        "add r24, r0 \n\t"
16527        "adc r22, r1 \n\t"
16528        "adc r23, r25 \n\t"
16529        "mul r2, r13 \n\t"
16530        "add r24, r0 \n\t"
16531        "adc r22, r1 \n\t"
16532        "adc r23, r25 \n\t"
16533        "st z+, r24 \n\t"
16534
16535        "ld r4, x+ \n\t"
16536        "ldi r24, 0 \n\t"
16537        "mul r5, r15 \n\t"
16538        "add r22, r0 \n\t"
16539        "adc r23, r1 \n\t"
16540        "adc r24, r25 \n\t"
16541        "mul r2, r14 \n\t"
16542        "add r22, r0 \n\t"
16543        "adc r23, r1 \n\t"
16544        "adc r24, r25 \n\t"
16545        "mul r3, r13 \n\t"
16546        "add r22, r0 \n\t"
16547        "adc r23, r1 \n\t"
16548        "adc r24, r25 \n\t"
16549        "st z+, r22 \n\t"
16550
16551        "ld r5, x+ \n\t"
16552        "ldi r22, 0 \n\t"
16553        "mul r2, r15 \n\t"
16554        "add r23, r0 \n\t"
16555        "adc r24, r1 \n\t"
16556        "adc r22, r25 \n\t"
16557        "mul r3, r14 \n\t"
16558        "add r23, r0 \n\t"
16559        "adc r24, r1 \n\t"
16560        "adc r22, r25 \n\t"
16561        "st z+, r23 \n\t"
16562
16563        "ldi r23, 0 \n\t"
16564        "mul r3, r15 \n\t"
16565        "add r24, r0 \n\t"
16566        "adc r22, r1 \n\t"
16567        "adc r23, r25 \n\t"
16568        "mul r4, r14 \n\t"
16569        "add r24, r0 \n\t"
16570        "adc r22, r1 \n\t"
16571        "adc r23, r25 \n\t"
16572        "st z+, r24 \n\t"
16573
16574        "ldi r24, 0 \n\t"
16575        "mul r4, r15 \n\t"
16576        "add r22, r0 \n\t"
16577        "adc r23, r1 \n\t"
16578        "adc r24, r25 \n\t"
16579        "st z+, r22 \n\t"
16580
16581        "mul r5, r15 \n\t"
16582        "add r23, r0 \n\t"
16583        "adc r24, r1 \n\t"
16584        "st z+, r23 \n\t"
16585        "st z+, r24 \n\t"
16586
16587        "sbiw r26, 8 \n\t"
16588        "sbiw r30, 36 \n\t"
16589        "ld r2, x+ \n\t"
16590        "ld r3, x+ \n\t"
16591        "ld r4, x+ \n\t"
16592        "ld r5, x+ \n\t"
16593        "ld r6, x+ \n\t"
16594        "ld r7, x+ \n\t"
16595        "ld r8, x+ \n\t"
16596        "ld r9, x+ \n\t"
16597        "ld r10, x+ \n\t"
16598        "ld r11, x+ \n\t"
16599        "ld r12, x+ \n\t"
16600        "ld r13, x+ \n\t"
16601        "ld r14, x+ \n\t"
16602        "ld r15, x+ \n\t"
16603        "ld r16, x+ \n\t"
16604        "ld r17, x+ \n\t"
16605        "ld r18, x+ \n\t"
16606        "ld r19, x+ \n\t"
16607        "ld r20, x+ \n\t"
16608        "ld r21, x+ \n\t"
16609
16610        "ldi r23, 0 \n\t"
16611        "mul r2, r2 \n\t"
16612        "st z+, r0 \n\t"
16613        "mov r22, r1 \n\t"
16614
16615        "ldi r24, 0 \n\t"
16616        "mul r2, r3 \n\t"
16617        "add r22, r0 \n\t"
16618        "adc r23, r1 \n\t"
16619        "adc r24, r25 \n\t"
16620        "add r22, r0 \n\t"
16621        "adc r23, r1 \n\t"
16622        "adc r24, r25 \n\t"
16623        "st z+, r22 \n\t"
16624
16625        "ldi r22, 0 \n\t"
16626        "mul r2, r4 \n\t"
16627        "add r23, r0 \n\t"
16628        "adc r24, r1 \n\t"
16629        "adc r22, r25 \n\t"
16630        "add r23, r0 \n\t"
16631        "adc r24, r1 \n\t"
16632        "adc r22, r25 \n\t"
16633        "mul r3, r3 \n\t"
16634        "add r23, r0 \n\t"
16635        "adc r24, r1 \n\t"
16636        "adc r22, r25 \n\t"
16637        "st z+, r23 \n\t"
16638
16639        "ldi r29, 0 \n\t"
16640        "mul r2, r5 \n\t"
16641        "mov r23, r0 \n\t"
16642        "mov r28, r1 \n\t"
16643        "mul r3, r4 \n\t"
16644        "add r23, r0 \n\t"
16645        "adc r28, r1 \n\t"
16646        "adc r29, r25 \n\t"
16647        "lsl r23 \n\t"
16648        "rol r28 \n\t"
16649        "rol r29 \n\t"
16650        "add r23, r24 \n\t"
16651        "adc r28, r22 \n\t"
16652        "adc r29, r25 \n\t"
16653        "st z+, r23 \n\t"
16654
16655        "ldi r22, 0 \n\t"
16656        "mul r2, r6 \n\t"
16657        "mov r23, r0 \n\t"
16658        "mov r24, r1 \n\t"
16659        "mul r3, r5 \n\t"
16660        "add r23, r0 \n\t"
16661        "adc r24, r1 \n\t"
16662        "adc r22, r25 \n\t"
16663        "lsl r23 \n\t"
16664        "rol r24 \n\t"
16665        "rol r22 \n\t"
16666        "mul r4, r4 \n\t"
16667        "add r23, r0 \n\t"
16668        "adc r24, r1 \n\t"
16669        "adc r22, r25 \n\t"
16670        "add r23, r28 \n\t"
16671        "adc r24, r29 \n\t"
16672        "adc r22, r25 \n\t"
16673        "st z+, r23 \n\t"
16674
16675        "ldi r29, 0 \n\t"
16676        "mul r2, r7 \n\t"
16677        "mov r23, r0 \n\t"
16678        "mov r28, r1 \n\t"
16679        "mul r3, r6 \n\t"
16680        "add r23, r0 \n\t"
16681        "adc r28, r1 \n\t"
16682        "adc r29, r25 \n\t"
16683        "mul r4, r5 \n\t"
16684        "add r23, r0 \n\t"
16685        "adc r28, r1 \n\t"
16686        "adc r29, r25 \n\t"
16687        "lsl r23 \n\t"
16688        "rol r28 \n\t"
16689        "rol r29 \n\t"
16690        "add r23, r24 \n\t"
16691        "adc r28, r22 \n\t"
16692        "adc r29, r25 \n\t"
16693        "st z+, r23 \n\t"
16694
16695        "ldi r22, 0 \n\t"
16696        "mul r2, r8 \n\t"
16697        "mov r23, r0 \n\t"
16698        "mov r24, r1 \n\t"
16699        "mul r3, r7 \n\t"
16700        "add r23, r0 \n\t"
16701        "adc r24, r1 \n\t"
16702        "adc r22, r25 \n\t"
16703        "mul r4, r6 \n\t"
16704        "add r23, r0 \n\t"
16705        "adc r24, r1 \n\t"
16706        "adc r22, r25 \n\t"
16707        "lsl r23 \n\t"
16708        "rol r24 \n\t"
16709        "rol r22 \n\t"
16710        "mul r5, r5 \n\t"
16711        "add r23, r0 \n\t"
16712        "adc r24, r1 \n\t"
16713        "adc r22, r25 \n\t"
16714        "add r23, r28 \n\t"
16715        "adc r24, r29 \n\t"
16716        "adc r22, r25 \n\t"
16717        "st z+, r23 \n\t"
16718
16719        "ldi r29, 0 \n\t"
16720        "mul r2, r9 \n\t"
16721        "mov r23, r0 \n\t"
16722        "mov r28, r1 \n\t"
16723        "mul r3, r8 \n\t"
16724        "add r23, r0 \n\t"
16725        "adc r28, r1 \n\t"
16726        "adc r29, r25 \n\t"
16727        "mul r4, r7 \n\t"
16728        "add r23, r0 \n\t"
16729        "adc r28, r1 \n\t"
16730        "adc r29, r25 \n\t"
16731        "mul r5, r6 \n\t"
16732        "add r23, r0 \n\t"
16733        "adc r28, r1 \n\t"
16734        "adc r29, r25 \n\t"
16735        "lsl r23 \n\t"
16736        "rol r28 \n\t"
16737        "rol r29 \n\t"
16738        "add r23, r24 \n\t"
16739        "adc r28, r22 \n\t"
16740        "adc r29, r25 \n\t"
16741        "st z+, r23 \n\t"
16742
16743        "ldi r22, 0 \n\t"
16744        "mul r2, r10 \n\t"
16745        "mov r23, r0 \n\t"
16746        "mov r24, r1 \n\t"
16747        "mul r3, r9 \n\t"
16748        "add r23, r0 \n\t"
16749        "adc r24, r1 \n\t"
16750        "adc r22, r25 \n\t"
16751        "mul r4, r8 \n\t"
16752        "add r23, r0 \n\t"
16753        "adc r24, r1 \n\t"
16754        "adc r22, r25 \n\t"
16755        "mul r5, r7 \n\t"
16756        "add r23, r0 \n\t"
16757        "adc r24, r1 \n\t"
16758        "adc r22, r25 \n\t"
16759        "lsl r23 \n\t"
16760        "rol r24 \n\t"
16761        "rol r22 \n\t"
16762        "mul r6, r6 \n\t"
16763        "add r23, r0 \n\t"
16764        "adc r24, r1 \n\t"
16765        "adc r22, r25 \n\t"
16766        "add r23, r28 \n\t"
16767        "adc r24, r29 \n\t"
16768        "adc r22, r25 \n\t"
16769        "st z+, r23 \n\t"
16770
16771        "ldi r29, 0 \n\t"
16772        "mul r2, r11 \n\t"
16773        "mov r23, r0 \n\t"
16774        "mov r28, r1 \n\t"
16775        "mul r3, r10 \n\t"
16776        "add r23, r0 \n\t"
16777        "adc r28, r1 \n\t"
16778        "adc r29, r25 \n\t"
16779        "mul r4, r9 \n\t"
16780        "add r23, r0 \n\t"
16781        "adc r28, r1 \n\t"
16782        "adc r29, r25 \n\t"
16783        "mul r5, r8 \n\t"
16784        "add r23, r0 \n\t"
16785        "adc r28, r1 \n\t"
16786        "adc r29, r25 \n\t"
16787        "mul r6, r7 \n\t"
16788        "add r23, r0 \n\t"
16789        "adc r28, r1 \n\t"
16790        "adc r29, r25 \n\t"
16791        "lsl r23 \n\t"
16792        "rol r28 \n\t"
16793        "rol r29 \n\t"
16794        "add r23, r24 \n\t"
16795        "adc r28, r22 \n\t"
16796        "adc r29, r25 \n\t"
16797        "st z+, r23 \n\t"
16798
16799        "ldi r22, 0 \n\t"
16800        "mul r2, r12 \n\t"
16801        "mov r23, r0 \n\t"
16802        "mov r24, r1 \n\t"
16803        "mul r3, r11 \n\t"
16804        "add r23, r0 \n\t"
16805        "adc r24, r1 \n\t"
16806        "adc r22, r25 \n\t"
16807        "mul r4, r10 \n\t"
16808        "add r23, r0 \n\t"
16809        "adc r24, r1 \n\t"
16810        "adc r22, r25 \n\t"
16811        "mul r5, r9 \n\t"
16812        "add r23, r0 \n\t"
16813        "adc r24, r1 \n\t"
16814        "adc r22, r25 \n\t"
16815        "mul r6, r8 \n\t"
16816        "add r23, r0 \n\t"
16817        "adc r24, r1 \n\t"
16818        "adc r22, r25 \n\t"
16819        "lsl r23 \n\t"
16820        "rol r24 \n\t"
16821        "rol r22 \n\t"
16822        "mul r7, r7 \n\t"
16823        "add r23, r0 \n\t"
16824        "adc r24, r1 \n\t"
16825        "adc r22, r25 \n\t"
16826        "add r23, r28 \n\t"
16827        "adc r24, r29 \n\t"
16828        "adc r22, r25 \n\t"
16829        "st z+, r23 \n\t"
16830
16831        "ldi r29, 0 \n\t"
16832        "mul r2, r13 \n\t"
16833        "mov r23, r0 \n\t"
16834        "mov r28, r1 \n\t"
16835        "mul r3, r12 \n\t"
16836        "add r23, r0 \n\t"
16837        "adc r28, r1 \n\t"
16838        "adc r29, r25 \n\t"
16839        "mul r4, r11 \n\t"
16840        "add r23, r0 \n\t"
16841        "adc r28, r1 \n\t"
16842        "adc r29, r25 \n\t"
16843        "mul r5, r10 \n\t"
16844        "add r23, r0 \n\t"
16845        "adc r28, r1 \n\t"
16846        "adc r29, r25 \n\t"
16847        "mul r6, r9 \n\t"
16848        "add r23, r0 \n\t"
16849        "adc r28, r1 \n\t"
16850        "adc r29, r25 \n\t"
16851        "mul r7, r8 \n\t"
16852        "add r23, r0 \n\t"
16853        "adc r28, r1 \n\t"
16854        "adc r29, r25 \n\t"
16855        "lsl r23 \n\t"
16856        "rol r28 \n\t"
16857        "rol r29 \n\t"
16858        "add r23, r24 \n\t"
16859        "adc r28, r22 \n\t"
16860        "adc r29, r25 \n\t"
16861        "st z+, r23 \n\t"
16862
16863        "ldi r22, 0 \n\t"
16864        "mul r2, r14 \n\t"
16865        "mov r23, r0 \n\t"
16866        "mov r24, r1 \n\t"
16867        "mul r3, r13 \n\t"
16868        "add r23, r0 \n\t"
16869        "adc r24, r1 \n\t"
16870        "adc r22, r25 \n\t"
16871        "mul r4, r12 \n\t"
16872        "add r23, r0 \n\t"
16873        "adc r24, r1 \n\t"
16874        "adc r22, r25 \n\t"
16875        "mul r5, r11 \n\t"
16876        "add r23, r0 \n\t"
16877        "adc r24, r1 \n\t"
16878        "adc r22, r25 \n\t"
16879        "mul r6, r10 \n\t"
16880        "add r23, r0 \n\t"
16881        "adc r24, r1 \n\t"
16882        "adc r22, r25 \n\t"
16883        "mul r7, r9 \n\t"
16884        "add r23, r0 \n\t"
16885        "adc r24, r1 \n\t"
16886        "adc r22, r25 \n\t"
16887        "lsl r23 \n\t"
16888        "rol r24 \n\t"
16889        "rol r22 \n\t"
16890        "mul r8, r8 \n\t"
16891        "add r23, r0 \n\t"
16892        "adc r24, r1 \n\t"
16893        "adc r22, r25 \n\t"
16894        "add r23, r28 \n\t"
16895        "adc r24, r29 \n\t"
16896        "adc r22, r25 \n\t"
16897        "st z+, r23 \n\t"
16898
16899        "ldi r29, 0 \n\t"
16900        "mul r2, r15 \n\t"
16901        "mov r23, r0 \n\t"
16902        "mov r28, r1 \n\t"
16903        "mul r3, r14 \n\t"
16904        "add r23, r0 \n\t"
16905        "adc r28, r1 \n\t"
16906        "adc r29, r25 \n\t"
16907        "mul r4, r13 \n\t"
16908        "add r23, r0 \n\t"
16909        "adc r28, r1 \n\t"
16910        "adc r29, r25 \n\t"
16911        "mul r5, r12 \n\t"
16912        "add r23, r0 \n\t"
16913        "adc r28, r1 \n\t"
16914        "adc r29, r25 \n\t"
16915        "mul r6, r11 \n\t"
16916        "add r23, r0 \n\t"
16917        "adc r28, r1 \n\t"
16918        "adc r29, r25 \n\t"
16919        "mul r7, r10 \n\t"
16920        "add r23, r0 \n\t"
16921        "adc r28, r1 \n\t"
16922        "adc r29, r25 \n\t"
16923        "mul r8, r9 \n\t"
16924        "add r23, r0 \n\t"
16925        "adc r28, r1 \n\t"
16926        "adc r29, r25 \n\t"
16927        "lsl r23 \n\t"
16928        "rol r28 \n\t"
16929        "rol r29 \n\t"
16930        "add r23, r24 \n\t"
16931        "adc r28, r22 \n\t"
16932        "adc r29, r25 \n\t"
16933        "st z+, r23 \n\t"
16934
16935        "ldi r22, 0 \n\t"
16936        "mul r2, r16 \n\t"
16937        "mov r23, r0 \n\t"
16938        "mov r24, r1 \n\t"
16939        "mul r3, r15 \n\t"
16940        "add r23, r0 \n\t"
16941        "adc r24, r1 \n\t"
16942        "adc r22, r25 \n\t"
16943        "mul r4, r14 \n\t"
16944        "add r23, r0 \n\t"
16945        "adc r24, r1 \n\t"
16946        "adc r22, r25 \n\t"
16947        "mul r5, r13 \n\t"
16948        "add r23, r0 \n\t"
16949        "adc r24, r1 \n\t"
16950        "adc r22, r25 \n\t"
16951        "mul r6, r12 \n\t"
16952        "add r23, r0 \n\t"
16953        "adc r24, r1 \n\t"
16954        "adc r22, r25 \n\t"
16955        "mul r7, r11 \n\t"
16956        "add r23, r0 \n\t"
16957        "adc r24, r1 \n\t"
16958        "adc r22, r25 \n\t"
16959        "mul r8, r10 \n\t"
16960        "add r23, r0 \n\t"
16961        "adc r24, r1 \n\t"
16962        "adc r22, r25 \n\t"
16963        "lsl r23 \n\t"
16964        "rol r24 \n\t"
16965        "rol r22 \n\t"
16966        "mul r9, r9 \n\t"
16967        "add r23, r0 \n\t"
16968        "adc r24, r1 \n\t"
16969        "adc r22, r25 \n\t"
16970        "add r23, r28 \n\t"
16971        "adc r24, r29 \n\t"
16972        "adc r22, r25 \n\t"
16973        "st z+, r23 \n\t"
16974
16975        "ldi r29, 0 \n\t"
16976        "mul r2, r17 \n\t"
16977        "mov r23, r0 \n\t"
16978        "mov r28, r1 \n\t"
16979        "mul r3, r16 \n\t"
16980        "add r23, r0 \n\t"
16981        "adc r28, r1 \n\t"
16982        "adc r29, r25 \n\t"
16983        "mul r4, r15 \n\t"
16984        "add r23, r0 \n\t"
16985        "adc r28, r1 \n\t"
16986        "adc r29, r25 \n\t"
16987        "mul r5, r14 \n\t"
16988        "add r23, r0 \n\t"
16989        "adc r28, r1 \n\t"
16990        "adc r29, r25 \n\t"
16991        "mul r6, r13 \n\t"
16992        "add r23, r0 \n\t"
16993        "adc r28, r1 \n\t"
16994        "adc r29, r25 \n\t"
16995        "mul r7, r12 \n\t"
16996        "add r23, r0 \n\t"
16997        "adc r28, r1 \n\t"
16998        "adc r29, r25 \n\t"
16999        "mul r8, r11 \n\t"
17000        "add r23, r0 \n\t"
17001        "adc r28, r1 \n\t"
17002        "adc r29, r25 \n\t"
17003        "mul r9, r10 \n\t"
17004        "add r23, r0 \n\t"
17005        "adc r28, r1 \n\t"
17006        "adc r29, r25 \n\t"
17007        "lsl r23 \n\t"
17008        "rol r28 \n\t"
17009        "rol r29 \n\t"
17010        "add r23, r24 \n\t"
17011        "adc r28, r22 \n\t"
17012        "adc r29, r25 \n\t"
17013        "st z+, r23 \n\t"
17014
17015        "ldi r22, 0 \n\t"
17016        "mul r2, r18 \n\t"
17017        "mov r23, r0 \n\t"
17018        "mov r24, r1 \n\t"
17019        "mul r3, r17 \n\t"
17020        "add r23, r0 \n\t"
17021        "adc r24, r1 \n\t"
17022        "adc r22, r25 \n\t"
17023        "mul r4, r16 \n\t"
17024        "add r23, r0 \n\t"
17025        "adc r24, r1 \n\t"
17026        "adc r22, r25 \n\t"
17027        "mul r5, r15 \n\t"
17028        "add r23, r0 \n\t"
17029        "adc r24, r1 \n\t"
17030        "adc r22, r25 \n\t"
17031        "mul r6, r14 \n\t"
17032        "add r23, r0 \n\t"
17033        "adc r24, r1 \n\t"
17034        "adc r22, r25 \n\t"
17035        "mul r7, r13 \n\t"
17036        "add r23, r0 \n\t"
17037        "adc r24, r1 \n\t"
17038        "adc r22, r25 \n\t"
17039        "mul r8, r12 \n\t"
17040        "add r23, r0 \n\t"
17041        "adc r24, r1 \n\t"
17042        "adc r22, r25 \n\t"
17043        "mul r9, r11 \n\t"
17044        "add r23, r0 \n\t"
17045        "adc r24, r1 \n\t"
17046        "adc r22, r25 \n\t"
17047        "lsl r23 \n\t"
17048        "rol r24 \n\t"
17049        "rol r22 \n\t"
17050        "mul r10, r10 \n\t"
17051        "add r23, r0 \n\t"
17052        "adc r24, r1 \n\t"
17053        "adc r22, r25 \n\t"
17054        "add r23, r28 \n\t"
17055        "adc r24, r29 \n\t"
17056        "adc r22, r25 \n\t"
17057        "st z+, r23 \n\t"
17058
17059        "ldi r29, 0 \n\t"
17060        "mul r2, r19 \n\t"
17061        "mov r23, r0 \n\t"
17062        "mov r28, r1 \n\t"
17063        "mul r3, r18 \n\t"
17064        "add r23, r0 \n\t"
17065        "adc r28, r1 \n\t"
17066        "adc r29, r25 \n\t"
17067        "mul r4, r17 \n\t"
17068        "add r23, r0 \n\t"
17069        "adc r28, r1 \n\t"
17070        "adc r29, r25 \n\t"
17071        "mul r5, r16 \n\t"
17072        "add r23, r0 \n\t"
17073        "adc r28, r1 \n\t"
17074        "adc r29, r25 \n\t"
17075        "mul r6, r15 \n\t"
17076        "add r23, r0 \n\t"
17077        "adc r28, r1 \n\t"
17078        "adc r29, r25 \n\t"
17079        "mul r7, r14 \n\t"
17080        "add r23, r0 \n\t"
17081        "adc r28, r1 \n\t"
17082        "adc r29, r25 \n\t"
17083        "mul r8, r13 \n\t"
17084        "add r23, r0 \n\t"
17085        "adc r28, r1 \n\t"
17086        "adc r29, r25 \n\t"
17087        "mul r9, r12 \n\t"
17088        "add r23, r0 \n\t"
17089        "adc r28, r1 \n\t"
17090        "adc r29, r25 \n\t"
17091        "mul r10, r11 \n\t"
17092        "add r23, r0 \n\t"
17093        "adc r28, r1 \n\t"
17094        "adc r29, r25 \n\t"
17095        "lsl r23 \n\t"
17096        "rol r28 \n\t"
17097        "rol r29 \n\t"
17098        "add r23, r24 \n\t"
17099        "adc r28, r22 \n\t"
17100        "adc r29, r25 \n\t"
17101        "st z+, r23 \n\t"
17102
17103        "ldi r22, 0 \n\t"
17104        "mul r2, r20 \n\t"
17105        "mov r23, r0 \n\t"
17106        "mov r24, r1 \n\t"
17107        "mul r3, r19 \n\t"
17108        "add r23, r0 \n\t"
17109        "adc r24, r1 \n\t"
17110        "adc r22, r25 \n\t"
17111        "mul r4, r18 \n\t"
17112        "add r23, r0 \n\t"
17113        "adc r24, r1 \n\t"
17114        "adc r22, r25 \n\t"
17115        "mul r5, r17 \n\t"
17116        "add r23, r0 \n\t"
17117        "adc r24, r1 \n\t"
17118        "adc r22, r25 \n\t"
17119        "mul r6, r16 \n\t"
17120        "add r23, r0 \n\t"
17121        "adc r24, r1 \n\t"
17122        "adc r22, r25 \n\t"
17123        "mul r7, r15 \n\t"
17124        "add r23, r0 \n\t"
17125        "adc r24, r1 \n\t"
17126        "adc r22, r25 \n\t"
17127        "mul r8, r14 \n\t"
17128        "add r23, r0 \n\t"
17129        "adc r24, r1 \n\t"
17130        "adc r22, r25 \n\t"
17131        "mul r9, r13 \n\t"
17132        "add r23, r0 \n\t"
17133        "adc r24, r1 \n\t"
17134        "adc r22, r25 \n\t"
17135        "mul r10, r12 \n\t"
17136        "add r23, r0 \n\t"
17137        "adc r24, r1 \n\t"
17138        "adc r22, r25 \n\t"
17139        "lsl r23 \n\t"
17140        "rol r24 \n\t"
17141        "rol r22 \n\t"
17142        "mul r11, r11 \n\t"
17143        "add r23, r0 \n\t"
17144        "adc r24, r1 \n\t"
17145        "adc r22, r25 \n\t"
17146        "add r23, r28 \n\t"
17147        "adc r24, r29 \n\t"
17148        "adc r22, r25 \n\t"
17149        "st z+, r23 \n\t"
17150
17151        "ldi r29, 0 \n\t"
17152        "mul r2, r21 \n\t"
17153        "mov r23, r0 \n\t"
17154        "mov r28, r1 \n\t"
17155        "mul r3, r20 \n\t"
17156        "add r23, r0 \n\t"
17157        "adc r28, r1 \n\t"
17158        "adc r29, r25 \n\t"
17159        "mul r4, r19 \n\t"
17160        "add r23, r0 \n\t"
17161        "adc r28, r1 \n\t"
17162        "adc r29, r25 \n\t"
17163        "mul r5, r18 \n\t"
17164        "add r23, r0 \n\t"
17165        "adc r28, r1 \n\t"
17166        "adc r29, r25 \n\t"
17167        "mul r6, r17 \n\t"
17168        "add r23, r0 \n\t"
17169        "adc r28, r1 \n\t"
17170        "adc r29, r25 \n\t"
17171        "mul r7, r16 \n\t"
17172        "add r23, r0 \n\t"
17173        "adc r28, r1 \n\t"
17174        "adc r29, r25 \n\t"
17175        "mul r8, r15 \n\t"
17176        "add r23, r0 \n\t"
17177        "adc r28, r1 \n\t"
17178        "adc r29, r25 \n\t"
17179        "mul r9, r14 \n\t"
17180        "add r23, r0 \n\t"
17181        "adc r28, r1 \n\t"
17182        "adc r29, r25 \n\t"
17183        "mul r10, r13 \n\t"
17184        "add r23, r0 \n\t"
17185        "adc r28, r1 \n\t"
17186        "adc r29, r25 \n\t"
17187        "mul r11, r12 \n\t"
17188        "add r23, r0 \n\t"
17189        "adc r28, r1 \n\t"
17190        "adc r29, r25 \n\t"
17191        "lsl r23 \n\t"
17192        "rol r28 \n\t"
17193        "rol r29 \n\t"
17194        "add r23, r24 \n\t"
17195        "adc r28, r22 \n\t"
17196        "adc r29, r25 \n\t"
17197        "st z+, r23 \n\t"
17198
17199        "ld r2, x+ \n\t"
17200        "ldi r22, 0 \n\t"
17201        "mul r3, r21 \n\t"
17202        "mov r23, r0 \n\t"
17203        "mov r24, r1 \n\t"
17204        "mul r4, r20 \n\t"
17205        "add r23, r0 \n\t"
17206        "adc r24, r1 \n\t"
17207        "adc r22, r25 \n\t"
17208        "mul r5, r19 \n\t"
17209        "add r23, r0 \n\t"
17210        "adc r24, r1 \n\t"
17211        "adc r22, r25 \n\t"
17212        "mul r6, r18 \n\t"
17213        "add r23, r0 \n\t"
17214        "adc r24, r1 \n\t"
17215        "adc r22, r25 \n\t"
17216        "mul r7, r17 \n\t"
17217        "add r23, r0 \n\t"
17218        "adc r24, r1 \n\t"
17219        "adc r22, r25 \n\t"
17220        "mul r8, r16 \n\t"
17221        "add r23, r0 \n\t"
17222        "adc r24, r1 \n\t"
17223        "adc r22, r25 \n\t"
17224        "mul r9, r15 \n\t"
17225        "add r23, r0 \n\t"
17226        "adc r24, r1 \n\t"
17227        "adc r22, r25 \n\t"
17228        "mul r10, r14 \n\t"
17229        "add r23, r0 \n\t"
17230        "adc r24, r1 \n\t"
17231        "adc r22, r25 \n\t"
17232        "mul r11, r13 \n\t"
17233        "add r23, r0 \n\t"
17234        "adc r24, r1 \n\t"
17235        "adc r22, r25 \n\t"
17236        "ld r0, z \n\t"
17237        "add r23, r0 \n\t"
17238        "adc r24, r25 \n\t"
17239        "adc r22, r25 \n\t"
17240        "lsl r23 \n\t"
17241        "rol r24 \n\t"
17242        "rol r22 \n\t"
17243        "mul r12, r12 \n\t"
17244        "add r23, r0 \n\t"
17245        "adc r24, r1 \n\t"
17246        "adc r22, r25 \n\t"
17247        "add r23, r28 \n\t"
17248        "adc r24, r29 \n\t"
17249        "adc r22, r25 \n\t"
17250        "st z+, r23 \n\t"
17251
17252        "ldi r29, 0 \n\t"
17253        "mul r3, r2 \n\t"
17254        "mov r23, r0 \n\t"
17255        "mov r28, r1 \n\t"
17256        "mul r4, r21 \n\t"
17257        "add r23, r0 \n\t"
17258        "adc r28, r1 \n\t"
17259        "adc r29, r25 \n\t"
17260        "mul r5, r20 \n\t"
17261        "add r23, r0 \n\t"
17262        "adc r28, r1 \n\t"
17263        "adc r29, r25 \n\t"
17264        "mul r6, r19 \n\t"
17265        "add r23, r0 \n\t"
17266        "adc r28, r1 \n\t"
17267        "adc r29, r25 \n\t"
17268        "mul r7, r18 \n\t"
17269        "add r23, r0 \n\t"
17270        "adc r28, r1 \n\t"
17271        "adc r29, r25 \n\t"
17272        "mul r8, r17 \n\t"
17273        "add r23, r0 \n\t"
17274        "adc r28, r1 \n\t"
17275        "adc r29, r25 \n\t"
17276        "mul r9, r16 \n\t"
17277        "add r23, r0 \n\t"
17278        "adc r28, r1 \n\t"
17279        "adc r29, r25 \n\t"
17280        "mul r10, r15 \n\t"
17281        "add r23, r0 \n\t"
17282        "adc r28, r1 \n\t"
17283        "adc r29, r25 \n\t"
17284        "mul r11, r14 \n\t"
17285        "add r23, r0 \n\t"
17286        "adc r28, r1 \n\t"
17287        "adc r29, r25 \n\t"
17288        "mul r12, r13 \n\t"
17289        "add r23, r0 \n\t"
17290        "adc r28, r1 \n\t"
17291        "adc r29, r25 \n\t"
17292        "ld r0, z \n\t"
17293        "add r23, r0 \n\t"
17294        "adc r28, r25 \n\t"
17295        "adc r29, r25 \n\t"
17296        "lsl r23 \n\t"
17297        "rol r28 \n\t"
17298        "rol r29 \n\t"
17299        "add r23, r24 \n\t"
17300        "adc r28, r22 \n\t"
17301        "adc r29, r25 \n\t"
17302        "st z+, r23 \n\t"
17303
17304        "ld r3, x+ \n\t"
17305        "ldi r22, 0 \n\t"
17306        "mul r4, r2 \n\t"
17307        "mov r23, r0 \n\t"
17308        "mov r24, r1 \n\t"
17309        "mul r5, r21 \n\t"
17310        "add r23, r0 \n\t"
17311        "adc r24, r1 \n\t"
17312        "adc r22, r25 \n\t"
17313        "mul r6, r20 \n\t"
17314        "add r23, r0 \n\t"
17315        "adc r24, r1 \n\t"
17316        "adc r22, r25 \n\t"
17317        "mul r7, r19 \n\t"
17318        "add r23, r0 \n\t"
17319        "adc r24, r1 \n\t"
17320        "adc r22, r25 \n\t"
17321        "mul r8, r18 \n\t"
17322        "add r23, r0 \n\t"
17323        "adc r24, r1 \n\t"
17324        "adc r22, r25 \n\t"
17325        "mul r9, r17 \n\t"
17326        "add r23, r0 \n\t"
17327        "adc r24, r1 \n\t"
17328        "adc r22, r25 \n\t"
17329        "mul r10, r16 \n\t"
17330        "add r23, r0 \n\t"
17331        "adc r24, r1 \n\t"
17332        "adc r22, r25 \n\t"
17333        "mul r11, r15 \n\t"
17334        "add r23, r0 \n\t"
17335        "adc r24, r1 \n\t"
17336        "adc r22, r25 \n\t"
17337        "mul r12, r14 \n\t"
17338        "add r23, r0 \n\t"
17339        "adc r24, r1 \n\t"
17340        "adc r22, r25 \n\t"
17341        "ld r0, z \n\t"
17342        "add r23, r0 \n\t"
17343        "adc r24, r25 \n\t"
17344        "adc r22, r25 \n\t"
17345        "lsl r23 \n\t"
17346        "rol r24 \n\t"
17347        "rol r22 \n\t"
17348        "mul r13, r13 \n\t"
17349        "add r23, r0 \n\t"
17350        "adc r24, r1 \n\t"
17351        "adc r22, r25 \n\t"
17352        "add r23, r28 \n\t"
17353        "adc r24, r29 \n\t"
17354        "adc r22, r25 \n\t"
17355        "st z+, r23 \n\t"
17356
17357        "ldi r29, 0 \n\t"
17358        "mul r4, r3 \n\t"
17359        "mov r23, r0 \n\t"
17360        "mov r28, r1 \n\t"
17361        "mul r5, r2 \n\t"
17362        "add r23, r0 \n\t"
17363        "adc r28, r1 \n\t"
17364        "adc r29, r25 \n\t"
17365        "mul r6, r21 \n\t"
17366        "add r23, r0 \n\t"
17367        "adc r28, r1 \n\t"
17368        "adc r29, r25 \n\t"
17369        "mul r7, r20 \n\t"
17370        "add r23, r0 \n\t"
17371        "adc r28, r1 \n\t"
17372        "adc r29, r25 \n\t"
17373        "mul r8, r19 \n\t"
17374        "add r23, r0 \n\t"
17375        "adc r28, r1 \n\t"
17376        "adc r29, r25 \n\t"
17377        "mul r9, r18 \n\t"
17378        "add r23, r0 \n\t"
17379        "adc r28, r1 \n\t"
17380        "adc r29, r25 \n\t"
17381        "mul r10, r17 \n\t"
17382        "add r23, r0 \n\t"
17383        "adc r28, r1 \n\t"
17384        "adc r29, r25 \n\t"
17385        "mul r11, r16 \n\t"
17386        "add r23, r0 \n\t"
17387        "adc r28, r1 \n\t"
17388        "adc r29, r25 \n\t"
17389        "mul r12, r15 \n\t"
17390        "add r23, r0 \n\t"
17391        "adc r28, r1 \n\t"
17392        "adc r29, r25 \n\t"
17393        "mul r13, r14 \n\t"
17394        "add r23, r0 \n\t"
17395        "adc r28, r1 \n\t"
17396        "adc r29, r25 \n\t"
17397        "ld r0, z \n\t"
17398        "add r23, r0 \n\t"
17399        "adc r28, r25 \n\t"
17400        "adc r29, r25 \n\t"
17401        "lsl r23 \n\t"
17402        "rol r28 \n\t"
17403        "rol r29 \n\t"
17404        "add r23, r24 \n\t"
17405        "adc r28, r22 \n\t"
17406        "adc r29, r25 \n\t"
17407        "st z+, r23 \n\t"
17408
17409        "ld r4, x+ \n\t"
17410        "ldi r22, 0 \n\t"
17411        "mul r5, r3 \n\t"
17412        "mov r23, r0 \n\t"
17413        "mov r24, r1 \n\t"
17414        "mul r6, r2 \n\t"
17415        "add r23, r0 \n\t"
17416        "adc r24, r1 \n\t"
17417        "adc r22, r25 \n\t"
17418        "mul r7, r21 \n\t"
17419        "add r23, r0 \n\t"
17420        "adc r24, r1 \n\t"
17421        "adc r22, r25 \n\t"
17422        "mul r8, r20 \n\t"
17423        "add r23, r0 \n\t"
17424        "adc r24, r1 \n\t"
17425        "adc r22, r25 \n\t"
17426        "mul r9, r19 \n\t"
17427        "add r23, r0 \n\t"
17428        "adc r24, r1 \n\t"
17429        "adc r22, r25 \n\t"
17430        "mul r10, r18 \n\t"
17431        "add r23, r0 \n\t"
17432        "adc r24, r1 \n\t"
17433        "adc r22, r25 \n\t"
17434        "mul r11, r17 \n\t"
17435        "add r23, r0 \n\t"
17436        "adc r24, r1 \n\t"
17437        "adc r22, r25 \n\t"
17438        "mul r12, r16 \n\t"
17439        "add r23, r0 \n\t"
17440        "adc r24, r1 \n\t"
17441        "adc r22, r25 \n\t"
17442        "mul r13, r15 \n\t"
17443        "add r23, r0 \n\t"
17444        "adc r24, r1 \n\t"
17445        "adc r22, r25 \n\t"
17446        "ld r0, z \n\t"
17447        "add r23, r0 \n\t"
17448        "adc r24, r25 \n\t"
17449        "adc r22, r25 \n\t"
17450        "lsl r23 \n\t"
17451        "rol r24 \n\t"
17452        "rol r22 \n\t"
17453        "mul r14, r14 \n\t"
17454        "add r23, r0 \n\t"
17455        "adc r24, r1 \n\t"
17456        "adc r22, r25 \n\t"
17457        "add r23, r28 \n\t"
17458        "adc r24, r29 \n\t"
17459        "adc r22, r25 \n\t"
17460        "st z+, r23 \n\t"
17461
17462        "ldi r29, 0 \n\t"
17463        "mul r5, r4 \n\t"
17464        "mov r23, r0 \n\t"
17465        "mov r28, r1 \n\t"
17466        "mul r6, r3 \n\t"
17467        "add r23, r0 \n\t"
17468        "adc r28, r1 \n\t"
17469        "adc r29, r25 \n\t"
17470        "mul r7, r2 \n\t"
17471        "add r23, r0 \n\t"
17472        "adc r28, r1 \n\t"
17473        "adc r29, r25 \n\t"
17474        "mul r8, r21 \n\t"
17475        "add r23, r0 \n\t"
17476        "adc r28, r1 \n\t"
17477        "adc r29, r25 \n\t"
17478        "mul r9, r20 \n\t"
17479        "add r23, r0 \n\t"
17480        "adc r28, r1 \n\t"
17481        "adc r29, r25 \n\t"
17482        "mul r10, r19 \n\t"
17483        "add r23, r0 \n\t"
17484        "adc r28, r1 \n\t"
17485        "adc r29, r25 \n\t"
17486        "mul r11, r18 \n\t"
17487        "add r23, r0 \n\t"
17488        "adc r28, r1 \n\t"
17489        "adc r29, r25 \n\t"
17490        "mul r12, r17 \n\t"
17491        "add r23, r0 \n\t"
17492        "adc r28, r1 \n\t"
17493        "adc r29, r25 \n\t"
17494        "mul r13, r16 \n\t"
17495        "add r23, r0 \n\t"
17496        "adc r28, r1 \n\t"
17497        "adc r29, r25 \n\t"
17498        "mul r14, r15 \n\t"
17499        "add r23, r0 \n\t"
17500        "adc r28, r1 \n\t"
17501        "adc r29, r25 \n\t"
17502        "ld r0, z \n\t"
17503        "add r23, r0 \n\t"
17504        "adc r28, r25 \n\t"
17505        "adc r29, r25 \n\t"
17506        "lsl r23 \n\t"
17507        "rol r28 \n\t"
17508        "rol r29 \n\t"
17509        "add r23, r24 \n\t"
17510        "adc r28, r22 \n\t"
17511        "adc r29, r25 \n\t"
17512        "st z+, r23 \n\t"
17513
17514        "ld r5, x+ \n\t"
17515        "ldi r22, 0 \n\t"
17516        "mul r6, r4 \n\t"
17517        "mov r23, r0 \n\t"
17518        "mov r24, r1 \n\t"
17519        "mul r7, r3 \n\t"
17520        "add r23, r0 \n\t"
17521        "adc r24, r1 \n\t"
17522        "adc r22, r25 \n\t"
17523        "mul r8, r2 \n\t"
17524        "add r23, r0 \n\t"
17525        "adc r24, r1 \n\t"
17526        "adc r22, r25 \n\t"
17527        "mul r9, r21 \n\t"
17528        "add r23, r0 \n\t"
17529        "adc r24, r1 \n\t"
17530        "adc r22, r25 \n\t"
17531        "mul r10, r20 \n\t"
17532        "add r23, r0 \n\t"
17533        "adc r24, r1 \n\t"
17534        "adc r22, r25 \n\t"
17535        "mul r11, r19 \n\t"
17536        "add r23, r0 \n\t"
17537        "adc r24, r1 \n\t"
17538        "adc r22, r25 \n\t"
17539        "mul r12, r18 \n\t"
17540        "add r23, r0 \n\t"
17541        "adc r24, r1 \n\t"
17542        "adc r22, r25 \n\t"
17543        "mul r13, r17 \n\t"
17544        "add r23, r0 \n\t"
17545        "adc r24, r1 \n\t"
17546        "adc r22, r25 \n\t"
17547        "mul r14, r16 \n\t"
17548        "add r23, r0 \n\t"
17549        "adc r24, r1 \n\t"
17550        "adc r22, r25 \n\t"
17551        "ld r0, z \n\t"
17552        "add r23, r0 \n\t"
17553        "adc r24, r25 \n\t"
17554        "adc r22, r25 \n\t"
17555        "lsl r23 \n\t"
17556        "rol r24 \n\t"
17557        "rol r22 \n\t"
17558        "mul r15, r15 \n\t"
17559        "add r23, r0 \n\t"
17560        "adc r24, r1 \n\t"
17561        "adc r22, r25 \n\t"
17562        "add r23, r28 \n\t"
17563        "adc r24, r29 \n\t"
17564        "adc r22, r25 \n\t"
17565        "st z+, r23 \n\t"
17566
17567        "ldi r29, 0 \n\t"
17568        "mul r6, r5 \n\t"
17569        "mov r23, r0 \n\t"
17570        "mov r28, r1 \n\t"
17571        "mul r7, r4 \n\t"
17572        "add r23, r0 \n\t"
17573        "adc r28, r1 \n\t"
17574        "adc r29, r25 \n\t"
17575        "mul r8, r3 \n\t"
17576        "add r23, r0 \n\t"
17577        "adc r28, r1 \n\t"
17578        "adc r29, r25 \n\t"
17579        "mul r9, r2 \n\t"
17580        "add r23, r0 \n\t"
17581        "adc r28, r1 \n\t"
17582        "adc r29, r25 \n\t"
17583        "mul r10, r21 \n\t"
17584        "add r23, r0 \n\t"
17585        "adc r28, r1 \n\t"
17586        "adc r29, r25 \n\t"
17587        "mul r11, r20 \n\t"
17588        "add r23, r0 \n\t"
17589        "adc r28, r1 \n\t"
17590        "adc r29, r25 \n\t"
17591        "mul r12, r19 \n\t"
17592        "add r23, r0 \n\t"
17593        "adc r28, r1 \n\t"
17594        "adc r29, r25 \n\t"
17595        "mul r13, r18 \n\t"
17596        "add r23, r0 \n\t"
17597        "adc r28, r1 \n\t"
17598        "adc r29, r25 \n\t"
17599        "mul r14, r17 \n\t"
17600        "add r23, r0 \n\t"
17601        "adc r28, r1 \n\t"
17602        "adc r29, r25 \n\t"
17603        "mul r15, r16 \n\t"
17604        "add r23, r0 \n\t"
17605        "adc r28, r1 \n\t"
17606        "adc r29, r25 \n\t"
17607        "ld r0, z \n\t"
17608        "add r23, r0 \n\t"
17609        "adc r28, r25 \n\t"
17610        "adc r29, r25 \n\t"
17611        "lsl r23 \n\t"
17612        "rol r28 \n\t"
17613        "rol r29 \n\t"
17614        "add r23, r24 \n\t"
17615        "adc r28, r22 \n\t"
17616        "adc r29, r25 \n\t"
17617        "st z+, r23 \n\t"
17618
17619        "ld r6, x+ \n\t"
17620        "ldi r22, 0 \n\t"
17621        "mul r7, r5 \n\t"
17622        "mov r23, r0 \n\t"
17623        "mov r24, r1 \n\t"
17624        "mul r8, r4 \n\t"
17625        "add r23, r0 \n\t"
17626        "adc r24, r1 \n\t"
17627        "adc r22, r25 \n\t"
17628        "mul r9, r3 \n\t"
17629        "add r23, r0 \n\t"
17630        "adc r24, r1 \n\t"
17631        "adc r22, r25 \n\t"
17632        "mul r10, r2 \n\t"
17633        "add r23, r0 \n\t"
17634        "adc r24, r1 \n\t"
17635        "adc r22, r25 \n\t"
17636        "mul r11, r21 \n\t"
17637        "add r23, r0 \n\t"
17638        "adc r24, r1 \n\t"
17639        "adc r22, r25 \n\t"
17640        "mul r12, r20 \n\t"
17641        "add r23, r0 \n\t"
17642        "adc r24, r1 \n\t"
17643        "adc r22, r25 \n\t"
17644        "mul r13, r19 \n\t"
17645        "add r23, r0 \n\t"
17646        "adc r24, r1 \n\t"
17647        "adc r22, r25 \n\t"
17648        "mul r14, r18 \n\t"
17649        "add r23, r0 \n\t"
17650        "adc r24, r1 \n\t"
17651        "adc r22, r25 \n\t"
17652        "mul r15, r17 \n\t"
17653        "add r23, r0 \n\t"
17654        "adc r24, r1 \n\t"
17655        "adc r22, r25 \n\t"
17656        "ld r0, z \n\t"
17657        "add r23, r0 \n\t"
17658        "adc r24, r25 \n\t"
17659        "adc r22, r25 \n\t"
17660        "lsl r23 \n\t"
17661        "rol r24 \n\t"
17662        "rol r22 \n\t"
17663        "mul r16, r16 \n\t"
17664        "add r23, r0 \n\t"
17665        "adc r24, r1 \n\t"
17666        "adc r22, r25 \n\t"
17667        "add r23, r28 \n\t"
17668        "adc r24, r29 \n\t"
17669        "adc r22, r25 \n\t"
17670        "st z+, r23 \n\t"
17671
17672        "ldi r29, 0 \n\t"
17673        "mul r7, r6 \n\t"
17674        "mov r23, r0 \n\t"
17675        "mov r28, r1 \n\t"
17676        "mul r8, r5 \n\t"
17677        "add r23, r0 \n\t"
17678        "adc r28, r1 \n\t"
17679        "adc r29, r25 \n\t"
17680        "mul r9, r4 \n\t"
17681        "add r23, r0 \n\t"
17682        "adc r28, r1 \n\t"
17683        "adc r29, r25 \n\t"
17684        "mul r10, r3 \n\t"
17685        "add r23, r0 \n\t"
17686        "adc r28, r1 \n\t"
17687        "adc r29, r25 \n\t"
17688        "mul r11, r2 \n\t"
17689        "add r23, r0 \n\t"
17690        "adc r28, r1 \n\t"
17691        "adc r29, r25 \n\t"
17692        "mul r12, r21 \n\t"
17693        "add r23, r0 \n\t"
17694        "adc r28, r1 \n\t"
17695        "adc r29, r25 \n\t"
17696        "mul r13, r20 \n\t"
17697        "add r23, r0 \n\t"
17698        "adc r28, r1 \n\t"
17699        "adc r29, r25 \n\t"
17700        "mul r14, r19 \n\t"
17701        "add r23, r0 \n\t"
17702        "adc r28, r1 \n\t"
17703        "adc r29, r25 \n\t"
17704        "mul r15, r18 \n\t"
17705        "add r23, r0 \n\t"
17706        "adc r28, r1 \n\t"
17707        "adc r29, r25 \n\t"
17708        "mul r16, r17 \n\t"
17709        "add r23, r0 \n\t"
17710        "adc r28, r1 \n\t"
17711        "adc r29, r25 \n\t"
17712        "ld r0, z \n\t"
17713        "add r23, r0 \n\t"
17714        "adc r28, r25 \n\t"
17715        "adc r29, r25 \n\t"
17716        "lsl r23 \n\t"
17717        "rol r28 \n\t"
17718        "rol r29 \n\t"
17719        "add r23, r24 \n\t"
17720        "adc r28, r22 \n\t"
17721        "adc r29, r25 \n\t"
17722        "st z+, r23 \n\t"
17723
17724        "ld r7, x+ \n\t"
17725        "ldi r22, 0 \n\t"
17726        "mul r8, r6 \n\t"
17727        "mov r23, r0 \n\t"
17728        "mov r24, r1 \n\t"
17729        "mul r9, r5 \n\t"
17730        "add r23, r0 \n\t"
17731        "adc r24, r1 \n\t"
17732        "adc r22, r25 \n\t"
17733        "mul r10, r4 \n\t"
17734        "add r23, r0 \n\t"
17735        "adc r24, r1 \n\t"
17736        "adc r22, r25 \n\t"
17737        "mul r11, r3 \n\t"
17738        "add r23, r0 \n\t"
17739        "adc r24, r1 \n\t"
17740        "adc r22, r25 \n\t"
17741        "mul r12, r2 \n\t"
17742        "add r23, r0 \n\t"
17743        "adc r24, r1 \n\t"
17744        "adc r22, r25 \n\t"
17745        "mul r13, r21 \n\t"
17746        "add r23, r0 \n\t"
17747        "adc r24, r1 \n\t"
17748        "adc r22, r25 \n\t"
17749        "mul r14, r20 \n\t"
17750        "add r23, r0 \n\t"
17751        "adc r24, r1 \n\t"
17752        "adc r22, r25 \n\t"
17753        "mul r15, r19 \n\t"
17754        "add r23, r0 \n\t"
17755        "adc r24, r1 \n\t"
17756        "adc r22, r25 \n\t"
17757        "mul r16, r18 \n\t"
17758        "add r23, r0 \n\t"
17759        "adc r24, r1 \n\t"
17760        "adc r22, r25 \n\t"
17761        "ld r0, z \n\t"
17762        "add r23, r0 \n\t"
17763        "adc r24, r25 \n\t"
17764        "adc r22, r25 \n\t"
17765        "lsl r23 \n\t"
17766        "rol r24 \n\t"
17767        "rol r22 \n\t"
17768        "mul r17, r17 \n\t"
17769        "add r23, r0 \n\t"
17770        "adc r24, r1 \n\t"
17771        "adc r22, r25 \n\t"
17772        "add r23, r28 \n\t"
17773        "adc r24, r29 \n\t"
17774        "adc r22, r25 \n\t"
17775        "st z+, r23 \n\t"
17776
17777        "ldi r29, 0 \n\t"
17778        "mul r8, r7 \n\t"
17779        "mov r23, r0 \n\t"
17780        "mov r28, r1 \n\t"
17781        "mul r9, r6 \n\t"
17782        "add r23, r0 \n\t"
17783        "adc r28, r1 \n\t"
17784        "adc r29, r25 \n\t"
17785        "mul r10, r5 \n\t"
17786        "add r23, r0 \n\t"
17787        "adc r28, r1 \n\t"
17788        "adc r29, r25 \n\t"
17789        "mul r11, r4 \n\t"
17790        "add r23, r0 \n\t"
17791        "adc r28, r1 \n\t"
17792        "adc r29, r25 \n\t"
17793        "mul r12, r3 \n\t"
17794        "add r23, r0 \n\t"
17795        "adc r28, r1 \n\t"
17796        "adc r29, r25 \n\t"
17797        "mul r13, r2 \n\t"
17798        "add r23, r0 \n\t"
17799        "adc r28, r1 \n\t"
17800        "adc r29, r25 \n\t"
17801        "mul r14, r21 \n\t"
17802        "add r23, r0 \n\t"
17803        "adc r28, r1 \n\t"
17804        "adc r29, r25 \n\t"
17805        "mul r15, r20 \n\t"
17806        "add r23, r0 \n\t"
17807        "adc r28, r1 \n\t"
17808        "adc r29, r25 \n\t"
17809        "mul r16, r19 \n\t"
17810        "add r23, r0 \n\t"
17811        "adc r28, r1 \n\t"
17812        "adc r29, r25 \n\t"
17813        "mul r17, r18 \n\t"
17814        "add r23, r0 \n\t"
17815        "adc r28, r1 \n\t"
17816        "adc r29, r25 \n\t"
17817        "ld r0, z \n\t"
17818        "add r23, r0 \n\t"
17819        "adc r28, r25 \n\t"
17820        "adc r29, r25 \n\t"
17821        "lsl r23 \n\t"
17822        "rol r28 \n\t"
17823        "rol r29 \n\t"
17824        "add r23, r24 \n\t"
17825        "adc r28, r22 \n\t"
17826        "adc r29, r25 \n\t"
17827        "st z+, r23 \n\t"
17828
17829        "ld r8, x+ \n\t"
17830        "ldi r22, 0 \n\t"
17831        "mul r9, r7 \n\t"
17832        "mov r23, r0 \n\t"
17833        "mov r24, r1 \n\t"
17834        "mul r10, r6 \n\t"
17835        "add r23, r0 \n\t"
17836        "adc r24, r1 \n\t"
17837        "adc r22, r25 \n\t"
17838        "mul r11, r5 \n\t"
17839        "add r23, r0 \n\t"
17840        "adc r24, r1 \n\t"
17841        "adc r22, r25 \n\t"
17842        "mul r12, r4 \n\t"
17843        "add r23, r0 \n\t"
17844        "adc r24, r1 \n\t"
17845        "adc r22, r25 \n\t"
17846        "mul r13, r3 \n\t"
17847        "add r23, r0 \n\t"
17848        "adc r24, r1 \n\t"
17849        "adc r22, r25 \n\t"
17850        "mul r14, r2 \n\t"
17851        "add r23, r0 \n\t"
17852        "adc r24, r1 \n\t"
17853        "adc r22, r25 \n\t"
17854        "mul r15, r21 \n\t"
17855        "add r23, r0 \n\t"
17856        "adc r24, r1 \n\t"
17857        "adc r22, r25 \n\t"
17858        "mul r16, r20 \n\t"
17859        "add r23, r0 \n\t"
17860        "adc r24, r1 \n\t"
17861        "adc r22, r25 \n\t"
17862        "mul r17, r19 \n\t"
17863        "add r23, r0 \n\t"
17864        "adc r24, r1 \n\t"
17865        "adc r22, r25 \n\t"
17866        "ld r0, z \n\t"
17867        "add r23, r0 \n\t"
17868        "adc r24, r25 \n\t"
17869        "adc r22, r25 \n\t"
17870        "lsl r23 \n\t"
17871        "rol r24 \n\t"
17872        "rol r22 \n\t"
17873        "mul r18, r18 \n\t"
17874        "add r23, r0 \n\t"
17875        "adc r24, r1 \n\t"
17876        "adc r22, r25 \n\t"
17877        "add r23, r28 \n\t"
17878        "adc r24, r29 \n\t"
17879        "adc r22, r25 \n\t"
17880        "st z+, r23 \n\t"
17881
17882        "ldi r29, 0 \n\t"
17883        "mul r9, r8 \n\t"
17884        "mov r23, r0 \n\t"
17885        "mov r28, r1 \n\t"
17886        "mul r10, r7 \n\t"
17887        "add r23, r0 \n\t"
17888        "adc r28, r1 \n\t"
17889        "adc r29, r25 \n\t"
17890        "mul r11, r6 \n\t"
17891        "add r23, r0 \n\t"
17892        "adc r28, r1 \n\t"
17893        "adc r29, r25 \n\t"
17894        "mul r12, r5 \n\t"
17895        "add r23, r0 \n\t"
17896        "adc r28, r1 \n\t"
17897        "adc r29, r25 \n\t"
17898        "mul r13, r4 \n\t"
17899        "add r23, r0 \n\t"
17900        "adc r28, r1 \n\t"
17901        "adc r29, r25 \n\t"
17902        "mul r14, r3 \n\t"
17903        "add r23, r0 \n\t"
17904        "adc r28, r1 \n\t"
17905        "adc r29, r25 \n\t"
17906        "mul r15, r2 \n\t"
17907        "add r23, r0 \n\t"
17908        "adc r28, r1 \n\t"
17909        "adc r29, r25 \n\t"
17910        "mul r16, r21 \n\t"
17911        "add r23, r0 \n\t"
17912        "adc r28, r1 \n\t"
17913        "adc r29, r25 \n\t"
17914        "mul r17, r20 \n\t"
17915        "add r23, r0 \n\t"
17916        "adc r28, r1 \n\t"
17917        "adc r29, r25 \n\t"
17918        "mul r18, r19 \n\t"
17919        "add r23, r0 \n\t"
17920        "adc r28, r1 \n\t"
17921        "adc r29, r25 \n\t"
17922        "ld r0, z \n\t"
17923        "add r23, r0 \n\t"
17924        "adc r28, r25 \n\t"
17925        "adc r29, r25 \n\t"
17926        "lsl r23 \n\t"
17927        "rol r28 \n\t"
17928        "rol r29 \n\t"
17929        "add r23, r24 \n\t"
17930        "adc r28, r22 \n\t"
17931        "adc r29, r25 \n\t"
17932        "st z+, r23 \n\t"
17933
17934        "ld r9, x+ \n\t"
17935        "ldi r22, 0 \n\t"
17936        "mul r10, r8 \n\t"
17937        "mov r23, r0 \n\t"
17938        "mov r24, r1 \n\t"
17939        "mul r11, r7 \n\t"
17940        "add r23, r0 \n\t"
17941        "adc r24, r1 \n\t"
17942        "adc r22, r25 \n\t"
17943        "mul r12, r6 \n\t"
17944        "add r23, r0 \n\t"
17945        "adc r24, r1 \n\t"
17946        "adc r22, r25 \n\t"
17947        "mul r13, r5 \n\t"
17948        "add r23, r0 \n\t"
17949        "adc r24, r1 \n\t"
17950        "adc r22, r25 \n\t"
17951        "mul r14, r4 \n\t"
17952        "add r23, r0 \n\t"
17953        "adc r24, r1 \n\t"
17954        "adc r22, r25 \n\t"
17955        "mul r15, r3 \n\t"
17956        "add r23, r0 \n\t"
17957        "adc r24, r1 \n\t"
17958        "adc r22, r25 \n\t"
17959        "mul r16, r2 \n\t"
17960        "add r23, r0 \n\t"
17961        "adc r24, r1 \n\t"
17962        "adc r22, r25 \n\t"
17963        "mul r17, r21 \n\t"
17964        "add r23, r0 \n\t"
17965        "adc r24, r1 \n\t"
17966        "adc r22, r25 \n\t"
17967        "mul r18, r20 \n\t"
17968        "add r23, r0 \n\t"
17969        "adc r24, r1 \n\t"
17970        "adc r22, r25 \n\t"
17971        "ld r0, z \n\t"
17972        "add r23, r0 \n\t"
17973        "adc r24, r25 \n\t"
17974        "adc r22, r25 \n\t"
17975        "lsl r23 \n\t"
17976        "rol r24 \n\t"
17977        "rol r22 \n\t"
17978        "mul r19, r19 \n\t"
17979        "add r23, r0 \n\t"
17980        "adc r24, r1 \n\t"
17981        "adc r22, r25 \n\t"
17982        "add r23, r28 \n\t"
17983        "adc r24, r29 \n\t"
17984        "adc r22, r25 \n\t"
17985        "st z+, r23 \n\t"
17986
17987        "ldi r29, 0 \n\t"
17988        "mul r10, r9 \n\t"
17989        "mov r23, r0 \n\t"
17990        "mov r28, r1 \n\t"
17991        "mul r11, r8 \n\t"
17992        "add r23, r0 \n\t"
17993        "adc r28, r1 \n\t"
17994        "adc r29, r25 \n\t"
17995        "mul r12, r7 \n\t"
17996        "add r23, r0 \n\t"
17997        "adc r28, r1 \n\t"
17998        "adc r29, r25 \n\t"
17999        "mul r13, r6 \n\t"
18000        "add r23, r0 \n\t"
18001        "adc r28, r1 \n\t"
18002        "adc r29, r25 \n\t"
18003        "mul r14, r5 \n\t"
18004        "add r23, r0 \n\t"
18005        "adc r28, r1 \n\t"
18006        "adc r29, r25 \n\t"
18007        "mul r15, r4 \n\t"
18008        "add r23, r0 \n\t"
18009        "adc r28, r1 \n\t"
18010        "adc r29, r25 \n\t"
18011        "mul r16, r3 \n\t"
18012        "add r23, r0 \n\t"
18013        "adc r28, r1 \n\t"
18014        "adc r29, r25 \n\t"
18015        "mul r17, r2 \n\t"
18016        "add r23, r0 \n\t"
18017        "adc r28, r1 \n\t"
18018        "adc r29, r25 \n\t"
18019        "mul r18, r21 \n\t"
18020        "add r23, r0 \n\t"
18021        "adc r28, r1 \n\t"
18022        "adc r29, r25 \n\t"
18023        "mul r19, r20 \n\t"
18024        "add r23, r0 \n\t"
18025        "adc r28, r1 \n\t"
18026        "adc r29, r25 \n\t"
18027        "ld r0, z \n\t"
18028        "add r23, r0 \n\t"
18029        "adc r28, r25 \n\t"
18030        "adc r29, r25 \n\t"
18031        "lsl r23 \n\t"
18032        "rol r28 \n\t"
18033        "rol r29 \n\t"
18034        "add r23, r24 \n\t"
18035        "adc r28, r22 \n\t"
18036        "adc r29, r25 \n\t"
18037        "st z+, r23 \n\t"
18038
18039        "ldi r22, 0 \n\t"
18040        "mul r11, r9 \n\t"
18041        "mov r23, r0 \n\t"
18042        "mov r24, r1 \n\t"
18043        "mul r12, r8 \n\t"
18044        "add r23, r0 \n\t"
18045        "adc r24, r1 \n\t"
18046        "adc r22, r25 \n\t"
18047        "mul r13, r7 \n\t"
18048        "add r23, r0 \n\t"
18049        "adc r24, r1 \n\t"
18050        "adc r22, r25 \n\t"
18051        "mul r14, r6 \n\t"
18052        "add r23, r0 \n\t"
18053        "adc r24, r1 \n\t"
18054        "adc r22, r25 \n\t"
18055        "mul r15, r5 \n\t"
18056        "add r23, r0 \n\t"
18057        "adc r24, r1 \n\t"
18058        "adc r22, r25 \n\t"
18059        "mul r16, r4 \n\t"
18060        "add r23, r0 \n\t"
18061        "adc r24, r1 \n\t"
18062        "adc r22, r25 \n\t"
18063        "mul r17, r3 \n\t"
18064        "add r23, r0 \n\t"
18065        "adc r24, r1 \n\t"
18066        "adc r22, r25 \n\t"
18067        "mul r18, r2 \n\t"
18068        "add r23, r0 \n\t"
18069        "adc r24, r1 \n\t"
18070        "adc r22, r25 \n\t"
18071        "mul r19, r21 \n\t"
18072        "add r23, r0 \n\t"
18073        "adc r24, r1 \n\t"
18074        "adc r22, r25 \n\t"
18075        "lsl r23 \n\t"
18076        "rol r24 \n\t"
18077        "rol r22 \n\t"
18078        "mul r20, r20 \n\t"
18079        "add r23, r0 \n\t"
18080        "adc r24, r1 \n\t"
18081        "adc r22, r25 \n\t"
18082        "add r23, r28 \n\t"
18083        "adc r24, r29 \n\t"
18084        "adc r22, r25 \n\t"
18085        "st z+, r23 \n\t"
18086
18087        "ldi r29, 0 \n\t"
18088        "mul r12, r9 \n\t"
18089        "mov r23, r0 \n\t"
18090        "mov r28, r1 \n\t"
18091        "mul r13, r8 \n\t"
18092        "add r23, r0 \n\t"
18093        "adc r28, r1 \n\t"
18094        "adc r29, r25 \n\t"
18095        "mul r14, r7 \n\t"
18096        "add r23, r0 \n\t"
18097        "adc r28, r1 \n\t"
18098        "adc r29, r25 \n\t"
18099        "mul r15, r6 \n\t"
18100        "add r23, r0 \n\t"
18101        "adc r28, r1 \n\t"
18102        "adc r29, r25 \n\t"
18103        "mul r16, r5 \n\t"
18104        "add r23, r0 \n\t"
18105        "adc r28, r1 \n\t"
18106        "adc r29, r25 \n\t"
18107        "mul r17, r4 \n\t"
18108        "add r23, r0 \n\t"
18109        "adc r28, r1 \n\t"
18110        "adc r29, r25 \n\t"
18111        "mul r18, r3 \n\t"
18112        "add r23, r0 \n\t"
18113        "adc r28, r1 \n\t"
18114        "adc r29, r25 \n\t"
18115        "mul r19, r2 \n\t"
18116        "add r23, r0 \n\t"
18117        "adc r28, r1 \n\t"
18118        "adc r29, r25 \n\t"
18119        "mul r20, r21 \n\t"
18120        "add r23, r0 \n\t"
18121        "adc r28, r1 \n\t"
18122        "adc r29, r25 \n\t"
18123        "lsl r23 \n\t"
18124        "rol r28 \n\t"
18125        "rol r29 \n\t"
18126        "add r23, r24 \n\t"
18127        "adc r28, r22 \n\t"
18128        "adc r29, r25 \n\t"
18129        "st z+, r23 \n\t"
18130
18131        "ldi r22, 0 \n\t"
18132        "mul r13, r9 \n\t"
18133        "mov r23, r0 \n\t"
18134        "mov r24, r1 \n\t"
18135        "mul r14, r8 \n\t"
18136        "add r23, r0 \n\t"
18137        "adc r24, r1 \n\t"
18138        "adc r22, r25 \n\t"
18139        "mul r15, r7 \n\t"
18140        "add r23, r0 \n\t"
18141        "adc r24, r1 \n\t"
18142        "adc r22, r25 \n\t"
18143        "mul r16, r6 \n\t"
18144        "add r23, r0 \n\t"
18145        "adc r24, r1 \n\t"
18146        "adc r22, r25 \n\t"
18147        "mul r17, r5 \n\t"
18148        "add r23, r0 \n\t"
18149        "adc r24, r1 \n\t"
18150        "adc r22, r25 \n\t"
18151        "mul r18, r4 \n\t"
18152        "add r23, r0 \n\t"
18153        "adc r24, r1 \n\t"
18154        "adc r22, r25 \n\t"
18155        "mul r19, r3 \n\t"
18156        "add r23, r0 \n\t"
18157        "adc r24, r1 \n\t"
18158        "adc r22, r25 \n\t"
18159        "mul r20, r2 \n\t"
18160        "add r23, r0 \n\t"
18161        "adc r24, r1 \n\t"
18162        "adc r22, r25 \n\t"
18163        "lsl r23 \n\t"
18164        "rol r24 \n\t"
18165        "rol r22 \n\t"
18166        "mul r21, r21 \n\t"
18167        "add r23, r0 \n\t"
18168        "adc r24, r1 \n\t"
18169        "adc r22, r25 \n\t"
18170        "add r23, r28 \n\t"
18171        "adc r24, r29 \n\t"
18172        "adc r22, r25 \n\t"
18173        "st z+, r23 \n\t"
18174
18175        "ldi r29, 0 \n\t"
18176        "mul r14, r9 \n\t"
18177        "mov r23, r0 \n\t"
18178        "mov r28, r1 \n\t"
18179        "mul r15, r8 \n\t"
18180        "add r23, r0 \n\t"
18181        "adc r28, r1 \n\t"
18182        "adc r29, r25 \n\t"
18183        "mul r16, r7 \n\t"
18184        "add r23, r0 \n\t"
18185        "adc r28, r1 \n\t"
18186        "adc r29, r25 \n\t"
18187        "mul r17, r6 \n\t"
18188        "add r23, r0 \n\t"
18189        "adc r28, r1 \n\t"
18190        "adc r29, r25 \n\t"
18191        "mul r18, r5 \n\t"
18192        "add r23, r0 \n\t"
18193        "adc r28, r1 \n\t"
18194        "adc r29, r25 \n\t"
18195        "mul r19, r4 \n\t"
18196        "add r23, r0 \n\t"
18197        "adc r28, r1 \n\t"
18198        "adc r29, r25 \n\t"
18199        "mul r20, r3 \n\t"
18200        "add r23, r0 \n\t"
18201        "adc r28, r1 \n\t"
18202        "adc r29, r25 \n\t"
18203        "mul r21, r2 \n\t"
18204        "add r23, r0 \n\t"
18205        "adc r28, r1 \n\t"
18206        "adc r29, r25 \n\t"
18207        "lsl r23 \n\t"
18208        "rol r28 \n\t"
18209        "rol r29 \n\t"
18210        "add r23, r24 \n\t"
18211        "adc r28, r22 \n\t"
18212        "adc r29, r25 \n\t"
18213        "st z+, r23 \n\t"
18214
18215        "ldi r22, 0 \n\t"
18216        "mul r15, r9 \n\t"
18217        "mov r23, r0 \n\t"
18218        "mov r24, r1 \n\t"
18219        "mul r16, r8 \n\t"
18220        "add r23, r0 \n\t"
18221        "adc r24, r1 \n\t"
18222        "adc r22, r25 \n\t"
18223        "mul r17, r7 \n\t"
18224        "add r23, r0 \n\t"
18225        "adc r24, r1 \n\t"
18226        "adc r22, r25 \n\t"
18227        "mul r18, r6 \n\t"
18228        "add r23, r0 \n\t"
18229        "adc r24, r1 \n\t"
18230        "adc r22, r25 \n\t"
18231        "mul r19, r5 \n\t"
18232        "add r23, r0 \n\t"
18233        "adc r24, r1 \n\t"
18234        "adc r22, r25 \n\t"
18235        "mul r20, r4 \n\t"
18236        "add r23, r0 \n\t"
18237        "adc r24, r1 \n\t"
18238        "adc r22, r25 \n\t"
18239        "mul r21, r3 \n\t"
18240        "add r23, r0 \n\t"
18241        "adc r24, r1 \n\t"
18242        "adc r22, r25 \n\t"
18243        "lsl r23 \n\t"
18244        "rol r24 \n\t"
18245        "rol r22 \n\t"
18246        "mul r2, r2 \n\t"
18247        "add r23, r0 \n\t"
18248        "adc r24, r1 \n\t"
18249        "adc r22, r25 \n\t"
18250        "add r23, r28 \n\t"
18251        "adc r24, r29 \n\t"
18252        "adc r22, r25 \n\t"
18253        "st z+, r23 \n\t"
18254
18255        "ldi r29, 0 \n\t"
18256        "mul r16, r9 \n\t"
18257        "mov r23, r0 \n\t"
18258        "mov r28, r1 \n\t"
18259        "mul r17, r8 \n\t"
18260        "add r23, r0 \n\t"
18261        "adc r28, r1 \n\t"
18262        "adc r29, r25 \n\t"
18263        "mul r18, r7 \n\t"
18264        "add r23, r0 \n\t"
18265        "adc r28, r1 \n\t"
18266        "adc r29, r25 \n\t"
18267        "mul r19, r6 \n\t"
18268        "add r23, r0 \n\t"
18269        "adc r28, r1 \n\t"
18270        "adc r29, r25 \n\t"
18271        "mul r20, r5 \n\t"
18272        "add r23, r0 \n\t"
18273        "adc r28, r1 \n\t"
18274        "adc r29, r25 \n\t"
18275        "mul r21, r4 \n\t"
18276        "add r23, r0 \n\t"
18277        "adc r28, r1 \n\t"
18278        "adc r29, r25 \n\t"
18279        "mul r2, r3 \n\t"
18280        "add r23, r0 \n\t"
18281        "adc r28, r1 \n\t"
18282        "adc r29, r25 \n\t"
18283        "lsl r23 \n\t"
18284        "rol r28 \n\t"
18285        "rol r29 \n\t"
18286        "add r23, r24 \n\t"
18287        "adc r28, r22 \n\t"
18288        "adc r29, r25 \n\t"
18289        "st z+, r23 \n\t"
18290
18291        "ldi r22, 0 \n\t"
18292        "mul r17, r9 \n\t"
18293        "mov r23, r0 \n\t"
18294        "mov r24, r1 \n\t"
18295        "mul r18, r8 \n\t"
18296        "add r23, r0 \n\t"
18297        "adc r24, r1 \n\t"
18298        "adc r22, r25 \n\t"
18299        "mul r19, r7 \n\t"
18300        "add r23, r0 \n\t"
18301        "adc r24, r1 \n\t"
18302        "adc r22, r25 \n\t"
18303        "mul r20, r6 \n\t"
18304        "add r23, r0 \n\t"
18305        "adc r24, r1 \n\t"
18306        "adc r22, r25 \n\t"
18307        "mul r21, r5 \n\t"
18308        "add r23, r0 \n\t"
18309        "adc r24, r1 \n\t"
18310        "adc r22, r25 \n\t"
18311        "mul r2, r4 \n\t"
18312        "add r23, r0 \n\t"
18313        "adc r24, r1 \n\t"
18314        "adc r22, r25 \n\t"
18315        "lsl r23 \n\t"
18316        "rol r24 \n\t"
18317        "rol r22 \n\t"
18318        "mul r3, r3 \n\t"
18319        "add r23, r0 \n\t"
18320        "adc r24, r1 \n\t"
18321        "adc r22, r25 \n\t"
18322        "add r23, r28 \n\t"
18323        "adc r24, r29 \n\t"
18324        "adc r22, r25 \n\t"
18325        "st z+, r23 \n\t"
18326
18327        "ldi r29, 0 \n\t"
18328        "mul r18, r9 \n\t"
18329        "mov r23, r0 \n\t"
18330        "mov r28, r1 \n\t"
18331        "mul r19, r8 \n\t"
18332        "add r23, r0 \n\t"
18333        "adc r28, r1 \n\t"
18334        "adc r29, r25 \n\t"
18335        "mul r20, r7 \n\t"
18336        "add r23, r0 \n\t"
18337        "adc r28, r1 \n\t"
18338        "adc r29, r25 \n\t"
18339        "mul r21, r6 \n\t"
18340        "add r23, r0 \n\t"
18341        "adc r28, r1 \n\t"
18342        "adc r29, r25 \n\t"
18343        "mul r2, r5 \n\t"
18344        "add r23, r0 \n\t"
18345        "adc r28, r1 \n\t"
18346        "adc r29, r25 \n\t"
18347        "mul r3, r4 \n\t"
18348        "add r23, r0 \n\t"
18349        "adc r28, r1 \n\t"
18350        "adc r29, r25 \n\t"
18351        "lsl r23 \n\t"
18352        "rol r28 \n\t"
18353        "rol r29 \n\t"
18354        "add r23, r24 \n\t"
18355        "adc r28, r22 \n\t"
18356        "adc r29, r25 \n\t"
18357        "st z+, r23 \n\t"
18358
18359        "ldi r22, 0 \n\t"
18360        "mul r19, r9 \n\t"
18361        "mov r23, r0 \n\t"
18362        "mov r24, r1 \n\t"
18363        "mul r20, r8 \n\t"
18364        "add r23, r0 \n\t"
18365        "adc r24, r1 \n\t"
18366        "adc r22, r25 \n\t"
18367        "mul r21, r7 \n\t"
18368        "add r23, r0 \n\t"
18369        "adc r24, r1 \n\t"
18370        "adc r22, r25 \n\t"
18371        "mul r2, r6 \n\t"
18372        "add r23, r0 \n\t"
18373        "adc r24, r1 \n\t"
18374        "adc r22, r25 \n\t"
18375        "mul r3, r5 \n\t"
18376        "add r23, r0 \n\t"
18377        "adc r24, r1 \n\t"
18378        "adc r22, r25 \n\t"
18379        "lsl r23 \n\t"
18380        "rol r24 \n\t"
18381        "rol r22 \n\t"
18382        "mul r4, r4 \n\t"
18383        "add r23, r0 \n\t"
18384        "adc r24, r1 \n\t"
18385        "adc r22, r25 \n\t"
18386        "add r23, r28 \n\t"
18387        "adc r24, r29 \n\t"
18388        "adc r22, r25 \n\t"
18389        "st z+, r23 \n\t"
18390
18391        "ldi r29, 0 \n\t"
18392        "mul r20, r9 \n\t"
18393        "mov r23, r0 \n\t"
18394        "mov r28, r1 \n\t"
18395        "mul r21, r8 \n\t"
18396        "add r23, r0 \n\t"
18397        "adc r28, r1 \n\t"
18398        "adc r29, r25 \n\t"
18399        "mul r2, r7 \n\t"
18400        "add r23, r0 \n\t"
18401        "adc r28, r1 \n\t"
18402        "adc r29, r25 \n\t"
18403        "mul r3, r6 \n\t"
18404        "add r23, r0 \n\t"
18405        "adc r28, r1 \n\t"
18406        "adc r29, r25 \n\t"
18407        "mul r4, r5 \n\t"
18408        "add r23, r0 \n\t"
18409        "adc r28, r1 \n\t"
18410        "adc r29, r25 \n\t"
18411        "lsl r23 \n\t"
18412        "rol r28 \n\t"
18413        "rol r29 \n\t"
18414        "add r23, r24 \n\t"
18415        "adc r28, r22 \n\t"
18416        "adc r29, r25 \n\t"
18417        "st z+, r23 \n\t"
18418
18419        "ldi r22, 0 \n\t"
18420        "mul r21, r9 \n\t"
18421        "mov r23, r0 \n\t"
18422        "mov r24, r1 \n\t"
18423        "mul r2, r8 \n\t"
18424        "add r23, r0 \n\t"
18425        "adc r24, r1 \n\t"
18426        "adc r22, r25 \n\t"
18427        "mul r3, r7 \n\t"
18428        "add r23, r0 \n\t"
18429        "adc r24, r1 \n\t"
18430        "adc r22, r25 \n\t"
18431        "mul r4, r6 \n\t"
18432        "add r23, r0 \n\t"
18433        "adc r24, r1 \n\t"
18434        "adc r22, r25 \n\t"
18435        "lsl r23 \n\t"
18436        "rol r24 \n\t"
18437        "rol r22 \n\t"
18438        "mul r5, r5 \n\t"
18439        "add r23, r0 \n\t"
18440        "adc r24, r1 \n\t"
18441        "adc r22, r25 \n\t"
18442        "add r23, r28 \n\t"
18443        "adc r24, r29 \n\t"
18444        "adc r22, r25 \n\t"
18445        "st z+, r23 \n\t"
18446
18447        "ldi r29, 0 \n\t"
18448        "mul r2, r9 \n\t"
18449        "mov r23, r0 \n\t"
18450        "mov r28, r1 \n\t"
18451        "mul r3, r8 \n\t"
18452        "add r23, r0 \n\t"
18453        "adc r28, r1 \n\t"
18454        "adc r29, r25 \n\t"
18455        "mul r4, r7 \n\t"
18456        "add r23, r0 \n\t"
18457        "adc r28, r1 \n\t"
18458        "adc r29, r25 \n\t"
18459        "mul r5, r6 \n\t"
18460        "add r23, r0 \n\t"
18461        "adc r28, r1 \n\t"
18462        "adc r29, r25 \n\t"
18463        "lsl r23 \n\t"
18464        "rol r28 \n\t"
18465        "rol r29 \n\t"
18466        "add r23, r24 \n\t"
18467        "adc r28, r22 \n\t"
18468        "adc r29, r25 \n\t"
18469        "st z+, r23 \n\t"
18470
18471        "ldi r22, 0 \n\t"
18472        "mul r3, r9 \n\t"
18473        "mov r23, r0 \n\t"
18474        "mov r24, r1 \n\t"
18475        "mul r4, r8 \n\t"
18476        "add r23, r0 \n\t"
18477        "adc r24, r1 \n\t"
18478        "adc r22, r25 \n\t"
18479        "mul r5, r7 \n\t"
18480        "add r23, r0 \n\t"
18481        "adc r24, r1 \n\t"
18482        "adc r22, r25 \n\t"
18483        "lsl r23 \n\t"
18484        "rol r24 \n\t"
18485        "rol r22 \n\t"
18486        "mul r6, r6 \n\t"
18487        "add r23, r0 \n\t"
18488        "adc r24, r1 \n\t"
18489        "adc r22, r25 \n\t"
18490        "add r23, r28 \n\t"
18491        "adc r24, r29 \n\t"
18492        "adc r22, r25 \n\t"
18493        "st z+, r23 \n\t"
18494
18495        "ldi r29, 0 \n\t"
18496        "mul r4, r9 \n\t"
18497        "mov r23, r0 \n\t"
18498        "mov r28, r1 \n\t"
18499        "mul r5, r8 \n\t"
18500        "add r23, r0 \n\t"
18501        "adc r28, r1 \n\t"
18502        "adc r29, r25 \n\t"
18503        "mul r6, r7 \n\t"
18504        "add r23, r0 \n\t"
18505        "adc r28, r1 \n\t"
18506        "adc r29, r25 \n\t"
18507        "lsl r23 \n\t"
18508        "rol r28 \n\t"
18509        "rol r29 \n\t"
18510        "add r23, r24 \n\t"
18511        "adc r28, r22 \n\t"
18512        "adc r29, r25 \n\t"
18513        "st z+, r23 \n\t"
18514
18515        "ldi r22, 0 \n\t"
18516        "mul r5, r9 \n\t"
18517        "mov r23, r0 \n\t"
18518        "mov r24, r1 \n\t"
18519        "mul r6, r8 \n\t"
18520        "add r23, r0 \n\t"
18521        "adc r24, r1 \n\t"
18522        "adc r22, r25 \n\t"
18523        "lsl r23 \n\t"
18524        "rol r24 \n\t"
18525        "rol r22 \n\t"
18526        "mul r7, r7 \n\t"
18527        "add r23, r0 \n\t"
18528        "adc r24, r1 \n\t"
18529        "adc r22, r25 \n\t"
18530        "add r23, r28 \n\t"
18531        "adc r24, r29 \n\t"
18532        "adc r22, r25 \n\t"
18533        "st z+, r23 \n\t"
18534
18535        "ldi r29, 0 \n\t"
18536        "mul r6, r9 \n\t"
18537        "mov r23, r0 \n\t"
18538        "mov r28, r1 \n\t"
18539        "mul r7, r8 \n\t"
18540        "add r23, r0 \n\t"
18541        "adc r28, r1 \n\t"
18542        "adc r29, r25 \n\t"
18543        "lsl r23 \n\t"
18544        "rol r28 \n\t"
18545        "rol r29 \n\t"
18546        "add r23, r24 \n\t"
18547        "adc r28, r22 \n\t"
18548        "adc r29, r25 \n\t"
18549        "st z+, r23 \n\t"
18550
18551        "ldi r23, 0 \n\t"
18552        "mul r7, r9 \n\t"
18553        "add r28, r0 \n\t"
18554        "adc r29, r1 \n\t"
18555        "adc r23, r25 \n\t"
18556        "add r28, r0 \n\t"
18557        "adc r29, r1 \n\t"
18558        "adc r23, r25 \n\t"
18559        "mul r8, r8 \n\t"
18560        "add r28, r0 \n\t"
18561        "adc r29, r1 \n\t"
18562        "adc r23, r25 \n\t"
18563        "st z+, r28 \n\t"
18564
18565        "ldi r28, 0 \n\t"
18566        "mul r8, r9 \n\t"
18567        "add r29, r0 \n\t"
18568        "adc r23, r1 \n\t"
18569        "adc r28, r25 \n\t"
18570        "add r29, r0 \n\t"
18571        "adc r23, r1 \n\t"
18572        "adc r28, r25 \n\t"
18573        "st z+, r29 \n\t"
18574
18575        "mul r9, r9 \n\t"
18576        "add r23, r0 \n\t"
18577        "adc r28, r1 \n\t"
18578        "st z+, r23 \n\t"
18579        "st z+, r28 \n\t"
18580        "eor r1, r1 \n\t"
18581        : "+x" (left), "+z" (result)
18582        :
18583        : "r0", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10",
18584          "r11", "r12", "r13", "r14", "r15", "r16", "r17", "r18", "r19", "r20",
18585          "r21", "r22", "r23", "r24", "r25", "r28", "r29", "cc", "memory"
18586    );
18587}
18588#define asm_square 1
18589
18590#elif (uECC_BYTES == 32)
18591
18592__attribute((noinline))
18593static void vli_square(uint8_t *result, const uint8_t *left) {
18594    __asm__ volatile (
18595        "ldi r25, 0 \n\t"
18596        "movw r28, r26 \n\t"
18597        "ld r2, x+ \n\t"
18598        "ld r3, x+ \n\t"
18599        "ld r4, x+ \n\t"
18600        "ld r5, x+ \n\t"
18601        "ld r6, x+ \n\t"
18602        "ld r7, x+ \n\t"
18603        "adiw r28, 20 \n\t"
18604        "ld r12, y+ \n\t"
18605        "ld r13, y+ \n\t"
18606        "ld r14, y+ \n\t"
18607        "ld r15, y+ \n\t"
18608        "ld r16, y+ \n\t"
18609        "ld r17, y+ \n\t"
18610        "adiw r30, 20 \n\t"
18611
18612        "ldi r23, 0 \n\t"
18613        "mul 2, 12 \n\t"
18614        "st z+, r0 \n\t"
18615        "mov r22, r1 \n\t"
18616
18617        "ldi r24, 0 \n\t"
18618        "mul r2, r13 \n\t"
18619        "add r22, r0 \n\t"
18620        "adc r23, r1 \n\t"
18621        "adc r24, r25 \n\t"
18622        "st z+, r22 \n\t"
18623
18624        "ldi r22, 0 \n\t"
18625        "mul r2, r14 \n\t"
18626        "add r23, r0 \n\t"
18627        "adc r24, r1 \n\t"
18628        "adc r22, r25 \n\t"
18629        "mul r3, r13 \n\t"
18630        "add r23, r0 \n\t"
18631        "adc r24, r1 \n\t"
18632        "adc r22, r25 \n\t"
18633        "st z+, r23 \n\t"
18634
18635        "ldi r23, 0 \n\t"
18636        "mul r2, r15 \n\t"
18637        "add r24, r0 \n\t"
18638        "adc r22, r1 \n\t"
18639        "adc r23, r25 \n\t"
18640        "mul r3, r14 \n\t"
18641        "add r24, r0 \n\t"
18642        "adc r22, r1 \n\t"
18643        "adc r23, r25 \n\t"
18644        "st z+, r24 \n\t"
18645
18646        "ldi r24, 0 \n\t"
18647        "mul r2, r16 \n\t"
18648        "add r22, r0 \n\t"
18649        "adc r23, r1 \n\t"
18650        "adc r24, r25 \n\t"
18651        "mul r3, r15 \n\t"
18652        "add r22, r0 \n\t"
18653        "adc r23, r1 \n\t"
18654        "adc r24, r25 \n\t"
18655        "mul r4, r14 \n\t"
18656        "add r22, r0 \n\t"
18657        "adc r23, r1 \n\t"
18658        "adc r24, r25 \n\t"
18659        "st z+, r22 \n\t"
18660
18661        "ldi r22, 0 \n\t"
18662        "mul r2, r17 \n\t"
18663        "add r23, r0 \n\t"
18664        "adc r24, r1 \n\t"
18665        "adc r22, r25 \n\t"
18666        "mul r3, r16 \n\t"
18667        "add r23, r0 \n\t"
18668        "adc r24, r1 \n\t"
18669        "adc r22, r25 \n\t"
18670        "mul r4, r15 \n\t"
18671        "add r23, r0 \n\t"
18672        "adc r24, r1 \n\t"
18673        "adc r22, r25 \n\t"
18674        "st z+, r23 \n\t"
18675
18676        "ld r12, y+ \n\t"
18677        "ldi r23, 0 \n\t"
18678        "mul r2, r12 \n\t"
18679        "add r24, r0 \n\t"
18680        "adc r22, r1 \n\t"
18681        "adc r23, r25 \n\t"
18682        "mul r3, r17 \n\t"
18683        "add r24, r0 \n\t"
18684        "adc r22, r1 \n\t"
18685        "adc r23, r25 \n\t"
18686        "mul r4, r16 \n\t"
18687        "add r24, r0 \n\t"
18688        "adc r22, r1 \n\t"
18689        "adc r23, r25 \n\t"
18690        "mul r5, r15 \n\t"
18691        "add r24, r0 \n\t"
18692        "adc r22, r1 \n\t"
18693        "adc r23, r25 \n\t"
18694        "st z+, r24 \n\t"
18695
18696        "ld r13, y+ \n\t"
18697        "ldi r24, 0 \n\t"
18698        "mul r2, r13 \n\t"
18699        "add r22, r0 \n\t"
18700        "adc r23, r1 \n\t"
18701        "adc r24, r25 \n\t"
18702        "mul r3, r12 \n\t"
18703        "add r22, r0 \n\t"
18704        "adc r23, r1 \n\t"
18705        "adc r24, r25 \n\t"
18706        "mul r4, r17 \n\t"
18707        "add r22, r0 \n\t"
18708        "adc r23, r1 \n\t"
18709        "adc r24, r25 \n\t"
18710        "mul r5, r16 \n\t"
18711        "add r22, r0 \n\t"
18712        "adc r23, r1 \n\t"
18713        "adc r24, r25 \n\t"
18714        "st z+, r22 \n\t"
18715
18716        "ld r14, y+ \n\t"
18717        "ldi r22, 0 \n\t"
18718        "mul r2, r14 \n\t"
18719        "add r23, r0 \n\t"
18720        "adc r24, r1 \n\t"
18721        "adc r22, r25 \n\t"
18722        "mul r3, r13 \n\t"
18723        "add r23, r0 \n\t"
18724        "adc r24, r1 \n\t"
18725        "adc r22, r25 \n\t"
18726        "mul r4, r12 \n\t"
18727        "add r23, r0 \n\t"
18728        "adc r24, r1 \n\t"
18729        "adc r22, r25 \n\t"
18730        "mul r5, r17 \n\t"
18731        "add r23, r0 \n\t"
18732        "adc r24, r1 \n\t"
18733        "adc r22, r25 \n\t"
18734        "mul r6, r16 \n\t"
18735        "add r23, r0 \n\t"
18736        "adc r24, r1 \n\t"
18737        "adc r22, r25 \n\t"
18738        "st z+, r23 \n\t"
18739
18740        "ld r15, y+ \n\t"
18741        "ldi r23, 0 \n\t"
18742        "mul r2, r15 \n\t"
18743        "add r24, r0 \n\t"
18744        "adc r22, r1 \n\t"
18745        "adc r23, r25 \n\t"
18746        "mul r3, r14 \n\t"
18747        "add r24, r0 \n\t"
18748        "adc r22, r1 \n\t"
18749        "adc r23, r25 \n\t"
18750        "mul r4, r13 \n\t"
18751        "add r24, r0 \n\t"
18752        "adc r22, r1 \n\t"
18753        "adc r23, r25 \n\t"
18754        "mul r5, r12 \n\t"
18755        "add r24, r0 \n\t"
18756        "adc r22, r1 \n\t"
18757        "adc r23, r25 \n\t"
18758        "mul r6, r17 \n\t"
18759        "add r24, r0 \n\t"
18760        "adc r22, r1 \n\t"
18761        "adc r23, r25 \n\t"
18762        "st z+, r24 \n\t"
18763
18764        "ld r16, y+ \n\t"
18765        "ldi r24, 0 \n\t"
18766        "mul r2, r16 \n\t"
18767        "add r22, r0 \n\t"
18768        "adc r23, r1 \n\t"
18769        "adc r24, r25 \n\t"
18770        "mul r3, r15 \n\t"
18771        "add r22, r0 \n\t"
18772        "adc r23, r1 \n\t"
18773        "adc r24, r25 \n\t"
18774        "mul r4, r14 \n\t"
18775        "add r22, r0 \n\t"
18776        "adc r23, r1 \n\t"
18777        "adc r24, r25 \n\t"
18778        "mul r5, r13 \n\t"
18779        "add r22, r0 \n\t"
18780        "adc r23, r1 \n\t"
18781        "adc r24, r25 \n\t"
18782        "mul r6, r12 \n\t"
18783        "add r22, r0 \n\t"
18784        "adc r23, r1 \n\t"
18785        "adc r24, r25 \n\t"
18786        "mul r7, r17 \n\t"
18787        "add r22, r0 \n\t"
18788        "adc r23, r1 \n\t"
18789        "adc r24, r25 \n\t"
18790        "st z+, r22 \n\t"
18791
18792        "ld r17, y+ \n\t"
18793        "ldi r22, 0 \n\t"
18794        "mul r2, r17 \n\t"
18795        "add r23, r0 \n\t"
18796        "adc r24, r1 \n\t"
18797        "adc r22, r25 \n\t"
18798        "mul r3, r16 \n\t"
18799        "add r23, r0 \n\t"
18800        "adc r24, r1 \n\t"
18801        "adc r22, r25 \n\t"
18802        "mul r4, r15 \n\t"
18803        "add r23, r0 \n\t"
18804        "adc r24, r1 \n\t"
18805        "adc r22, r25 \n\t"
18806        "mul r5, r14 \n\t"
18807        "add r23, r0 \n\t"
18808        "adc r24, r1 \n\t"
18809        "adc r22, r25 \n\t"
18810        "mul r6, r13 \n\t"
18811        "add r23, r0 \n\t"
18812        "adc r24, r1 \n\t"
18813        "adc r22, r25 \n\t"
18814        "mul r7, r12 \n\t"
18815        "add r23, r0 \n\t"
18816        "adc r24, r1 \n\t"
18817        "adc r22, r25 \n\t"
18818        "st z+, r23 \n\t"
18819
18820        "ld r2, x+ \n\t"
18821        "ldi r23, 0 \n\t"
18822        "mul r3, r17 \n\t"
18823        "add r24, r0 \n\t"
18824        "adc r22, r1 \n\t"
18825        "adc r23, r25 \n\t"
18826        "mul r4, r16 \n\t"
18827        "add r24, r0 \n\t"
18828        "adc r22, r1 \n\t"
18829        "adc r23, r25 \n\t"
18830        "mul r5, r15 \n\t"
18831        "add r24, r0 \n\t"
18832        "adc r22, r1 \n\t"
18833        "adc r23, r25 \n\t"
18834        "mul r6, r14 \n\t"
18835        "add r24, r0 \n\t"
18836        "adc r22, r1 \n\t"
18837        "adc r23, r25 \n\t"
18838        "mul r7, r13 \n\t"
18839        "add r24, r0 \n\t"
18840        "adc r22, r1 \n\t"
18841        "adc r23, r25 \n\t"
18842        "mul r2, r12 \n\t"
18843        "add r24, r0 \n\t"
18844        "adc r22, r1 \n\t"
18845        "adc r23, r25 \n\t"
18846        "st z+, r24 \n\t"
18847
18848        "ld r3, x+ \n\t"
18849        "ldi r24, 0 \n\t"
18850        "mul r4, r17 \n\t"
18851        "add r22, r0 \n\t"
18852        "adc r23, r1 \n\t"
18853        "adc r24, r25 \n\t"
18854        "mul r5, r16 \n\t"
18855        "add r22, r0 \n\t"
18856        "adc r23, r1 \n\t"
18857        "adc r24, r25 \n\t"
18858        "mul r6, r15 \n\t"
18859        "add r22, r0 \n\t"
18860        "adc r23, r1 \n\t"
18861        "adc r24, r25 \n\t"
18862        "mul r7, r14 \n\t"
18863        "add r22, r0 \n\t"
18864        "adc r23, r1 \n\t"
18865        "adc r24, r25 \n\t"
18866        "mul r2, r13 \n\t"
18867        "add r22, r0 \n\t"
18868        "adc r23, r1 \n\t"
18869        "adc r24, r25 \n\t"
18870        "st z+, r22 \n\t"
18871
18872        "ld r4, x+ \n\t"
18873        "ldi r22, 0 \n\t"
18874        "mul r5, r17 \n\t"
18875        "add r23, r0 \n\t"
18876        "adc r24, r1 \n\t"
18877        "adc r22, r25 \n\t"
18878        "mul r6, r16 \n\t"
18879        "add r23, r0 \n\t"
18880        "adc r24, r1 \n\t"
18881        "adc r22, r25 \n\t"
18882        "mul r7, r15 \n\t"
18883        "add r23, r0 \n\t"
18884        "adc r24, r1 \n\t"
18885        "adc r22, r25 \n\t"
18886        "mul r2, r14 \n\t"
18887        "add r23, r0 \n\t"
18888        "adc r24, r1 \n\t"
18889        "adc r22, r25 \n\t"
18890        "mul r3, r13 \n\t"
18891        "add r23, r0 \n\t"
18892        "adc r24, r1 \n\t"
18893        "adc r22, r25 \n\t"
18894        "st z+, r23 \n\t"
18895
18896        "ld r5, x+ \n\t"
18897        "ldi r23, 0 \n\t"
18898        "mul r6, r17 \n\t"
18899        "add r24, r0 \n\t"
18900        "adc r22, r1 \n\t"
18901        "adc r23, r25 \n\t"
18902        "mul r7, r16 \n\t"
18903        "add r24, r0 \n\t"
18904        "adc r22, r1 \n\t"
18905        "adc r23, r25 \n\t"
18906        "mul r2, r15 \n\t"
18907        "add r24, r0 \n\t"
18908        "adc r22, r1 \n\t"
18909        "adc r23, r25 \n\t"
18910        "mul r3, r14 \n\t"
18911        "add r24, r0 \n\t"
18912        "adc r22, r1 \n\t"
18913        "adc r23, r25 \n\t"
18914        "st z+, r24 \n\t"
18915
18916        "ld r6, x+ \n\t"
18917        "ldi r24, 0 \n\t"
18918        "mul r7, r17 \n\t"
18919        "add r22, r0 \n\t"
18920        "adc r23, r1 \n\t"
18921        "adc r24, r25 \n\t"
18922        "mul r2, r16 \n\t"
18923        "add r22, r0 \n\t"
18924        "adc r23, r1 \n\t"
18925        "adc r24, r25 \n\t"
18926        "mul r3, r15 \n\t"
18927        "add r22, r0 \n\t"
18928        "adc r23, r1 \n\t"
18929        "adc r24, r25 \n\t"
18930        "mul r4, r14 \n\t"
18931        "add r22, r0 \n\t"
18932        "adc r23, r1 \n\t"
18933        "adc r24, r25 \n\t"
18934        "st z+, r22 \n\t"
18935
18936        "ld r7, x+ \n\t"
18937        "ldi r22, 0 \n\t"
18938        "mul r2, r17 \n\t"
18939        "add r23, r0 \n\t"
18940        "adc r24, r1 \n\t"
18941        "adc r22, r25 \n\t"
18942        "mul r3, r16 \n\t"
18943        "add r23, r0 \n\t"
18944        "adc r24, r1 \n\t"
18945        "adc r22, r25 \n\t"
18946        "mul r4, r15 \n\t"
18947        "add r23, r0 \n\t"
18948        "adc r24, r1 \n\t"
18949        "adc r22, r25 \n\t"
18950        "st z+, r23 \n\t"
18951
18952        "ldi r23, 0 \n\t"
18953        "mul r3, r17 \n\t"
18954        "add r24, r0 \n\t"
18955        "adc r22, r1 \n\t"
18956        "adc r23, r25 \n\t"
18957        "mul r4, r16 \n\t"
18958        "add r24, r0 \n\t"
18959        "adc r22, r1 \n\t"
18960        "adc r23, r25 \n\t"
18961        "mul r5, r15 \n\t"
18962        "add r24, r0 \n\t"
18963        "adc r22, r1 \n\t"
18964        "adc r23, r25 \n\t"
18965        "st z+, r24 \n\t"
18966
18967        "ldi r24, 0 \n\t"
18968        "mul r4, r17 \n\t"
18969        "add r22, r0 \n\t"
18970        "adc r23, r1 \n\t"
18971        "adc r24, r25 \n\t"
18972        "mul r5, r16 \n\t"
18973        "add r22, r0 \n\t"
18974        "adc r23, r1 \n\t"
18975        "adc r24, r25 \n\t"
18976        "st z+, r22 \n\t"
18977
18978        "ldi r22, 0 \n\t"
18979        "mul r5, r17 \n\t"
18980        "add r23, r0 \n\t"
18981        "adc r24, r1 \n\t"
18982        "adc r22, r25 \n\t"
18983        "mul r6, r16 \n\t"
18984        "add r23, r0 \n\t"
18985        "adc r24, r1 \n\t"
18986        "adc r22, r25 \n\t"
18987        "st z+, r23 \n\t"
18988
18989        "ldi r23, 0 \n\t"
18990        "mul r6, r17 \n\t"
18991        "add r24, r0 \n\t"
18992        "adc r22, r1 \n\t"
18993        "adc r23, r25 \n\t"
18994        "st z+, r24 \n\t"
18995
18996        "mul r7, r17 \n\t"
18997        "add r22, r0 \n\t"
18998        "adc r23, r1 \n\t"
18999        "st z+, r22 \n\t"
19000        "st z+, r23 \n\t"
19001
19002        "sbiw r26, 12 \n\t"
19003        "sbiw r30, 44 \n\t"
19004        "ld r2, x+ \n\t"
19005        "ld r3, x+ \n\t"
19006        "ld r4, x+ \n\t"
19007        "ld r5, x+ \n\t"
19008        "ld r6, x+ \n\t"
19009        "ld r7, x+ \n\t"
19010        "ld r8, x+ \n\t"
19011        "ld r9, x+ \n\t"
19012        "ld r10, x+ \n\t"
19013        "ld r11, x+ \n\t"
19014        "ld r12, x+ \n\t"
19015        "ld r13, x+ \n\t"
19016        "ld r14, x+ \n\t"
19017        "ld r15, x+ \n\t"
19018        "ld r16, x+ \n\t"
19019        "ld r17, x+ \n\t"
19020        "ld r18, x+ \n\t"
19021        "ld r19, x+ \n\t"
19022        "ld r20, x+ \n\t"
19023        "ld r21, x+ \n\t"
19024
19025        "ldi r23, 0 \n\t"
19026        "mul r2, r2 \n\t"
19027        "st z+, r0 \n\t"
19028        "mov r22, r1 \n\t"
19029
19030        "ldi r24, 0 \n\t"
19031        "mul r2, r3 \n\t"
19032        "add r22, r0 \n\t"
19033        "adc r23, r1 \n\t"
19034        "adc r24, r25 \n\t"
19035        "add r22, r0 \n\t"
19036        "adc r23, r1 \n\t"
19037        "adc r24, r25 \n\t"
19038        "st z+, r22 \n\t"
19039
19040        "ldi r22, 0 \n\t"
19041        "mul r2, r4 \n\t"
19042        "add r23, r0 \n\t"
19043        "adc r24, r1 \n\t"
19044        "adc r22, r25 \n\t"
19045        "add r23, r0 \n\t"
19046        "adc r24, r1 \n\t"
19047        "adc r22, r25 \n\t"
19048        "mul r3, r3 \n\t"
19049        "add r23, r0 \n\t"
19050        "adc r24, r1 \n\t"
19051        "adc r22, r25 \n\t"
19052        "st z+, r23 \n\t"
19053
19054        "ldi r29, 0 \n\t"
19055        "mul r2, r5 \n\t"
19056        "mov r23, r0 \n\t"
19057        "mov r28, r1 \n\t"
19058        "mul r3, r4 \n\t"
19059        "add r23, r0 \n\t"
19060        "adc r28, r1 \n\t"
19061        "adc r29, r25 \n\t"
19062        "lsl r23 \n\t"
19063        "rol r28 \n\t"
19064        "rol r29 \n\t"
19065        "add r23, r24 \n\t"
19066        "adc r28, r22 \n\t"
19067        "adc r29, r25 \n\t"
19068        "st z+, r23 \n\t"
19069
19070        "ldi r22, 0 \n\t"
19071        "mul r2, r6 \n\t"
19072        "mov r23, r0 \n\t"
19073        "mov r24, r1 \n\t"
19074        "mul r3, r5 \n\t"
19075        "add r23, r0 \n\t"
19076        "adc r24, r1 \n\t"
19077        "adc r22, r25 \n\t"
19078        "lsl r23 \n\t"
19079        "rol r24 \n\t"
19080        "rol r22 \n\t"
19081        "mul r4, r4 \n\t"
19082        "add r23, r0 \n\t"
19083        "adc r24, r1 \n\t"
19084        "adc r22, r25 \n\t"
19085        "add r23, r28 \n\t"
19086        "adc r24, r29 \n\t"
19087        "adc r22, r25 \n\t"
19088        "st z+, r23 \n\t"
19089
19090        "ldi r29, 0 \n\t"
19091        "mul r2, r7 \n\t"
19092        "mov r23, r0 \n\t"
19093        "mov r28, r1 \n\t"
19094        "mul r3, r6 \n\t"
19095        "add r23, r0 \n\t"
19096        "adc r28, r1 \n\t"
19097        "adc r29, r25 \n\t"
19098        "mul r4, r5 \n\t"
19099        "add r23, r0 \n\t"
19100        "adc r28, r1 \n\t"
19101        "adc r29, r25 \n\t"
19102        "lsl r23 \n\t"
19103        "rol r28 \n\t"
19104        "rol r29 \n\t"
19105        "add r23, r24 \n\t"
19106        "adc r28, r22 \n\t"
19107        "adc r29, r25 \n\t"
19108        "st z+, r23 \n\t"
19109
19110        "ldi r22, 0 \n\t"
19111        "mul r2, r8 \n\t"
19112        "mov r23, r0 \n\t"
19113        "mov r24, r1 \n\t"
19114        "mul r3, r7 \n\t"
19115        "add r23, r0 \n\t"
19116        "adc r24, r1 \n\t"
19117        "adc r22, r25 \n\t"
19118        "mul r4, r6 \n\t"
19119        "add r23, r0 \n\t"
19120        "adc r24, r1 \n\t"
19121        "adc r22, r25 \n\t"
19122        "lsl r23 \n\t"
19123        "rol r24 \n\t"
19124        "rol r22 \n\t"
19125        "mul r5, r5 \n\t"
19126        "add r23, r0 \n\t"
19127        "adc r24, r1 \n\t"
19128        "adc r22, r25 \n\t"
19129        "add r23, r28 \n\t"
19130        "adc r24, r29 \n\t"
19131        "adc r22, r25 \n\t"
19132        "st z+, r23 \n\t"
19133
19134        "ldi r29, 0 \n\t"
19135        "mul r2, r9 \n\t"
19136        "mov r23, r0 \n\t"
19137        "mov r28, r1 \n\t"
19138        "mul r3, r8 \n\t"
19139        "add r23, r0 \n\t"
19140        "adc r28, r1 \n\t"
19141        "adc r29, r25 \n\t"
19142        "mul r4, r7 \n\t"
19143        "add r23, r0 \n\t"
19144        "adc r28, r1 \n\t"
19145        "adc r29, r25 \n\t"
19146        "mul r5, r6 \n\t"
19147        "add r23, r0 \n\t"
19148        "adc r28, r1 \n\t"
19149        "adc r29, r25 \n\t"
19150        "lsl r23 \n\t"
19151        "rol r28 \n\t"
19152        "rol r29 \n\t"
19153        "add r23, r24 \n\t"
19154        "adc r28, r22 \n\t"
19155        "adc r29, r25 \n\t"
19156        "st z+, r23 \n\t"
19157
19158        "ldi r22, 0 \n\t"
19159        "mul r2, r10 \n\t"
19160        "mov r23, r0 \n\t"
19161        "mov r24, r1 \n\t"
19162        "mul r3, r9 \n\t"
19163        "add r23, r0 \n\t"
19164        "adc r24, r1 \n\t"
19165        "adc r22, r25 \n\t"
19166        "mul r4, r8 \n\t"
19167        "add r23, r0 \n\t"
19168        "adc r24, r1 \n\t"
19169        "adc r22, r25 \n\t"
19170        "mul r5, r7 \n\t"
19171        "add r23, r0 \n\t"
19172        "adc r24, r1 \n\t"
19173        "adc r22, r25 \n\t"
19174        "lsl r23 \n\t"
19175        "rol r24 \n\t"
19176        "rol r22 \n\t"
19177        "mul r6, r6 \n\t"
19178        "add r23, r0 \n\t"
19179        "adc r24, r1 \n\t"
19180        "adc r22, r25 \n\t"
19181        "add r23, r28 \n\t"
19182        "adc r24, r29 \n\t"
19183        "adc r22, r25 \n\t"
19184        "st z+, r23 \n\t"
19185
19186        "ldi r29, 0 \n\t"
19187        "mul r2, r11 \n\t"
19188        "mov r23, r0 \n\t"
19189        "mov r28, r1 \n\t"
19190        "mul r3, r10 \n\t"
19191        "add r23, r0 \n\t"
19192        "adc r28, r1 \n\t"
19193        "adc r29, r25 \n\t"
19194        "mul r4, r9 \n\t"
19195        "add r23, r0 \n\t"
19196        "adc r28, r1 \n\t"
19197        "adc r29, r25 \n\t"
19198        "mul r5, r8 \n\t"
19199        "add r23, r0 \n\t"
19200        "adc r28, r1 \n\t"
19201        "adc r29, r25 \n\t"
19202        "mul r6, r7 \n\t"
19203        "add r23, r0 \n\t"
19204        "adc r28, r1 \n\t"
19205        "adc r29, r25 \n\t"
19206        "lsl r23 \n\t"
19207        "rol r28 \n\t"
19208        "rol r29 \n\t"
19209        "add r23, r24 \n\t"
19210        "adc r28, r22 \n\t"
19211        "adc r29, r25 \n\t"
19212        "st z+, r23 \n\t"
19213
19214        "ldi r22, 0 \n\t"
19215        "mul r2, r12 \n\t"
19216        "mov r23, r0 \n\t"
19217        "mov r24, r1 \n\t"
19218        "mul r3, r11 \n\t"
19219        "add r23, r0 \n\t"
19220        "adc r24, r1 \n\t"
19221        "adc r22, r25 \n\t"
19222        "mul r4, r10 \n\t"
19223        "add r23, r0 \n\t"
19224        "adc r24, r1 \n\t"
19225        "adc r22, r25 \n\t"
19226        "mul r5, r9 \n\t"
19227        "add r23, r0 \n\t"
19228        "adc r24, r1 \n\t"
19229        "adc r22, r25 \n\t"
19230        "mul r6, r8 \n\t"
19231        "add r23, r0 \n\t"
19232        "adc r24, r1 \n\t"
19233        "adc r22, r25 \n\t"
19234        "lsl r23 \n\t"
19235        "rol r24 \n\t"
19236        "rol r22 \n\t"
19237        "mul r7, r7 \n\t"
19238        "add r23, r0 \n\t"
19239        "adc r24, r1 \n\t"
19240        "adc r22, r25 \n\t"
19241        "add r23, r28 \n\t"
19242        "adc r24, r29 \n\t"
19243        "adc r22, r25 \n\t"
19244        "st z+, r23 \n\t"
19245
19246        "ldi r29, 0 \n\t"
19247        "mul r2, r13 \n\t"
19248        "mov r23, r0 \n\t"
19249        "mov r28, r1 \n\t"
19250        "mul r3, r12 \n\t"
19251        "add r23, r0 \n\t"
19252        "adc r28, r1 \n\t"
19253        "adc r29, r25 \n\t"
19254        "mul r4, r11 \n\t"
19255        "add r23, r0 \n\t"
19256        "adc r28, r1 \n\t"
19257        "adc r29, r25 \n\t"
19258        "mul r5, r10 \n\t"
19259        "add r23, r0 \n\t"
19260        "adc r28, r1 \n\t"
19261        "adc r29, r25 \n\t"
19262        "mul r6, r9 \n\t"
19263        "add r23, r0 \n\t"
19264        "adc r28, r1 \n\t"
19265        "adc r29, r25 \n\t"
19266        "mul r7, r8 \n\t"
19267        "add r23, r0 \n\t"
19268        "adc r28, r1 \n\t"
19269        "adc r29, r25 \n\t"
19270        "lsl r23 \n\t"
19271        "rol r28 \n\t"
19272        "rol r29 \n\t"
19273        "add r23, r24 \n\t"
19274        "adc r28, r22 \n\t"
19275        "adc r29, r25 \n\t"
19276        "st z+, r23 \n\t"
19277
19278        "ldi r22, 0 \n\t"
19279        "mul r2, r14 \n\t"
19280        "mov r23, r0 \n\t"
19281        "mov r24, r1 \n\t"
19282        "mul r3, r13 \n\t"
19283        "add r23, r0 \n\t"
19284        "adc r24, r1 \n\t"
19285        "adc r22, r25 \n\t"
19286        "mul r4, r12 \n\t"
19287        "add r23, r0 \n\t"
19288        "adc r24, r1 \n\t"
19289        "adc r22, r25 \n\t"
19290        "mul r5, r11 \n\t"
19291        "add r23, r0 \n\t"
19292        "adc r24, r1 \n\t"
19293        "adc r22, r25 \n\t"
19294        "mul r6, r10 \n\t"
19295        "add r23, r0 \n\t"
19296        "adc r24, r1 \n\t"
19297        "adc r22, r25 \n\t"
19298        "mul r7, r9 \n\t"
19299        "add r23, r0 \n\t"
19300        "adc r24, r1 \n\t"
19301        "adc r22, r25 \n\t"
19302        "lsl r23 \n\t"
19303        "rol r24 \n\t"
19304        "rol r22 \n\t"
19305        "mul r8, r8 \n\t"
19306        "add r23, r0 \n\t"
19307        "adc r24, r1 \n\t"
19308        "adc r22, r25 \n\t"
19309        "add r23, r28 \n\t"
19310        "adc r24, r29 \n\t"
19311        "adc r22, r25 \n\t"
19312        "st z+, r23 \n\t"
19313
19314        "ldi r29, 0 \n\t"
19315        "mul r2, r15 \n\t"
19316        "mov r23, r0 \n\t"
19317        "mov r28, r1 \n\t"
19318        "mul r3, r14 \n\t"
19319        "add r23, r0 \n\t"
19320        "adc r28, r1 \n\t"
19321        "adc r29, r25 \n\t"
19322        "mul r4, r13 \n\t"
19323        "add r23, r0 \n\t"
19324        "adc r28, r1 \n\t"
19325        "adc r29, r25 \n\t"
19326        "mul r5, r12 \n\t"
19327        "add r23, r0 \n\t"
19328        "adc r28, r1 \n\t"
19329        "adc r29, r25 \n\t"
19330        "mul r6, r11 \n\t"
19331        "add r23, r0 \n\t"
19332        "adc r28, r1 \n\t"
19333        "adc r29, r25 \n\t"
19334        "mul r7, r10 \n\t"
19335        "add r23, r0 \n\t"
19336        "adc r28, r1 \n\t"
19337        "adc r29, r25 \n\t"
19338        "mul r8, r9 \n\t"
19339        "add r23, r0 \n\t"
19340        "adc r28, r1 \n\t"
19341        "adc r29, r25 \n\t"
19342        "lsl r23 \n\t"
19343        "rol r28 \n\t"
19344        "rol r29 \n\t"
19345        "add r23, r24 \n\t"
19346        "adc r28, r22 \n\t"
19347        "adc r29, r25 \n\t"
19348        "st z+, r23 \n\t"
19349
19350        "ldi r22, 0 \n\t"
19351        "mul r2, r16 \n\t"
19352        "mov r23, r0 \n\t"
19353        "mov r24, r1 \n\t"
19354        "mul r3, r15 \n\t"
19355        "add r23, r0 \n\t"
19356        "adc r24, r1 \n\t"
19357        "adc r22, r25 \n\t"
19358        "mul r4, r14 \n\t"
19359        "add r23, r0 \n\t"
19360        "adc r24, r1 \n\t"
19361        "adc r22, r25 \n\t"
19362        "mul r5, r13 \n\t"
19363        "add r23, r0 \n\t"
19364        "adc r24, r1 \n\t"
19365        "adc r22, r25 \n\t"
19366        "mul r6, r12 \n\t"
19367        "add r23, r0 \n\t"
19368        "adc r24, r1 \n\t"
19369        "adc r22, r25 \n\t"
19370        "mul r7, r11 \n\t"
19371        "add r23, r0 \n\t"
19372        "adc r24, r1 \n\t"
19373        "adc r22, r25 \n\t"
19374        "mul r8, r10 \n\t"
19375        "add r23, r0 \n\t"
19376        "adc r24, r1 \n\t"
19377        "adc r22, r25 \n\t"
19378        "lsl r23 \n\t"
19379        "rol r24 \n\t"
19380        "rol r22 \n\t"
19381        "mul r9, r9 \n\t"
19382        "add r23, r0 \n\t"
19383        "adc r24, r1 \n\t"
19384        "adc r22, r25 \n\t"
19385        "add r23, r28 \n\t"
19386        "adc r24, r29 \n\t"
19387        "adc r22, r25 \n\t"
19388        "st z+, r23 \n\t"
19389
19390        "ldi r29, 0 \n\t"
19391        "mul r2, r17 \n\t"
19392        "mov r23, r0 \n\t"
19393        "mov r28, r1 \n\t"
19394        "mul r3, r16 \n\t"
19395        "add r23, r0 \n\t"
19396        "adc r28, r1 \n\t"
19397        "adc r29, r25 \n\t"
19398        "mul r4, r15 \n\t"
19399        "add r23, r0 \n\t"
19400        "adc r28, r1 \n\t"
19401        "adc r29, r25 \n\t"
19402        "mul r5, r14 \n\t"
19403        "add r23, r0 \n\t"
19404        "adc r28, r1 \n\t"
19405        "adc r29, r25 \n\t"
19406        "mul r6, r13 \n\t"
19407        "add r23, r0 \n\t"
19408        "adc r28, r1 \n\t"
19409        "adc r29, r25 \n\t"
19410        "mul r7, r12 \n\t"
19411        "add r23, r0 \n\t"
19412        "adc r28, r1 \n\t"
19413        "adc r29, r25 \n\t"
19414        "mul r8, r11 \n\t"
19415        "add r23, r0 \n\t"
19416        "adc r28, r1 \n\t"
19417        "adc r29, r25 \n\t"
19418        "mul r9, r10 \n\t"
19419        "add r23, r0 \n\t"
19420        "adc r28, r1 \n\t"
19421        "adc r29, r25 \n\t"
19422        "lsl r23 \n\t"
19423        "rol r28 \n\t"
19424        "rol r29 \n\t"
19425        "add r23, r24 \n\t"
19426        "adc r28, r22 \n\t"
19427        "adc r29, r25 \n\t"
19428        "st z+, r23 \n\t"
19429
19430        "ldi r22, 0 \n\t"
19431        "mul r2, r18 \n\t"
19432        "mov r23, r0 \n\t"
19433        "mov r24, r1 \n\t"
19434        "mul r3, r17 \n\t"
19435        "add r23, r0 \n\t"
19436        "adc r24, r1 \n\t"
19437        "adc r22, r25 \n\t"
19438        "mul r4, r16 \n\t"
19439        "add r23, r0 \n\t"
19440        "adc r24, r1 \n\t"
19441        "adc r22, r25 \n\t"
19442        "mul r5, r15 \n\t"
19443        "add r23, r0 \n\t"
19444        "adc r24, r1 \n\t"
19445        "adc r22, r25 \n\t"
19446        "mul r6, r14 \n\t"
19447        "add r23, r0 \n\t"
19448        "adc r24, r1 \n\t"
19449        "adc r22, r25 \n\t"
19450        "mul r7, r13 \n\t"
19451        "add r23, r0 \n\t"
19452        "adc r24, r1 \n\t"
19453        "adc r22, r25 \n\t"
19454        "mul r8, r12 \n\t"
19455        "add r23, r0 \n\t"
19456        "adc r24, r1 \n\t"
19457        "adc r22, r25 \n\t"
19458        "mul r9, r11 \n\t"
19459        "add r23, r0 \n\t"
19460        "adc r24, r1 \n\t"
19461        "adc r22, r25 \n\t"
19462        "lsl r23 \n\t"
19463        "rol r24 \n\t"
19464        "rol r22 \n\t"
19465        "mul r10, r10 \n\t"
19466        "add r23, r0 \n\t"
19467        "adc r24, r1 \n\t"
19468        "adc r22, r25 \n\t"
19469        "add r23, r28 \n\t"
19470        "adc r24, r29 \n\t"
19471        "adc r22, r25 \n\t"
19472        "st z+, r23 \n\t"
19473
19474        "ldi r29, 0 \n\t"
19475        "mul r2, r19 \n\t"
19476        "mov r23, r0 \n\t"
19477        "mov r28, r1 \n\t"
19478        "mul r3, r18 \n\t"
19479        "add r23, r0 \n\t"
19480        "adc r28, r1 \n\t"
19481        "adc r29, r25 \n\t"
19482        "mul r4, r17 \n\t"
19483        "add r23, r0 \n\t"
19484        "adc r28, r1 \n\t"
19485        "adc r29, r25 \n\t"
19486        "mul r5, r16 \n\t"
19487        "add r23, r0 \n\t"
19488        "adc r28, r1 \n\t"
19489        "adc r29, r25 \n\t"
19490        "mul r6, r15 \n\t"
19491        "add r23, r0 \n\t"
19492        "adc r28, r1 \n\t"
19493        "adc r29, r25 \n\t"
19494        "mul r7, r14 \n\t"
19495        "add r23, r0 \n\t"
19496        "adc r28, r1 \n\t"
19497        "adc r29, r25 \n\t"
19498        "mul r8, r13 \n\t"
19499        "add r23, r0 \n\t"
19500        "adc r28, r1 \n\t"
19501        "adc r29, r25 \n\t"
19502        "mul r9, r12 \n\t"
19503        "add r23, r0 \n\t"
19504        "adc r28, r1 \n\t"
19505        "adc r29, r25 \n\t"
19506        "mul r10, r11 \n\t"
19507        "add r23, r0 \n\t"
19508        "adc r28, r1 \n\t"
19509        "adc r29, r25 \n\t"
19510        "lsl r23 \n\t"
19511        "rol r28 \n\t"
19512        "rol r29 \n\t"
19513        "add r23, r24 \n\t"
19514        "adc r28, r22 \n\t"
19515        "adc r29, r25 \n\t"
19516        "st z+, r23 \n\t"
19517
19518        "ldi r22, 0 \n\t"
19519        "mul r2, r20 \n\t"
19520        "mov r23, r0 \n\t"
19521        "mov r24, r1 \n\t"
19522        "mul r3, r19 \n\t"
19523        "add r23, r0 \n\t"
19524        "adc r24, r1 \n\t"
19525        "adc r22, r25 \n\t"
19526        "mul r4, r18 \n\t"
19527        "add r23, r0 \n\t"
19528        "adc r24, r1 \n\t"
19529        "adc r22, r25 \n\t"
19530        "mul r5, r17 \n\t"
19531        "add r23, r0 \n\t"
19532        "adc r24, r1 \n\t"
19533        "adc r22, r25 \n\t"
19534        "mul r6, r16 \n\t"
19535        "add r23, r0 \n\t"
19536        "adc r24, r1 \n\t"
19537        "adc r22, r25 \n\t"
19538        "mul r7, r15 \n\t"
19539        "add r23, r0 \n\t"
19540        "adc r24, r1 \n\t"
19541        "adc r22, r25 \n\t"
19542        "mul r8, r14 \n\t"
19543        "add r23, r0 \n\t"
19544        "adc r24, r1 \n\t"
19545        "adc r22, r25 \n\t"
19546        "mul r9, r13 \n\t"
19547        "add r23, r0 \n\t"
19548        "adc r24, r1 \n\t"
19549        "adc r22, r25 \n\t"
19550        "mul r10, r12 \n\t"
19551        "add r23, r0 \n\t"
19552        "adc r24, r1 \n\t"
19553        "adc r22, r25 \n\t"
19554        "lsl r23 \n\t"
19555        "rol r24 \n\t"
19556        "rol r22 \n\t"
19557        "mul r11, r11 \n\t"
19558        "add r23, r0 \n\t"
19559        "adc r24, r1 \n\t"
19560        "adc r22, r25 \n\t"
19561        "add r23, r28 \n\t"
19562        "adc r24, r29 \n\t"
19563        "adc r22, r25 \n\t"
19564        "st z+, r23 \n\t"
19565
19566        "ldi r29, 0 \n\t"
19567        "mul r2, r21 \n\t"
19568        "mov r23, r0 \n\t"
19569        "mov r28, r1 \n\t"
19570        "mul r3, r20 \n\t"
19571        "add r23, r0 \n\t"
19572        "adc r28, r1 \n\t"
19573        "adc r29, r25 \n\t"
19574        "mul r4, r19 \n\t"
19575        "add r23, r0 \n\t"
19576        "adc r28, r1 \n\t"
19577        "adc r29, r25 \n\t"
19578        "mul r5, r18 \n\t"
19579        "add r23, r0 \n\t"
19580        "adc r28, r1 \n\t"
19581        "adc r29, r25 \n\t"
19582        "mul r6, r17 \n\t"
19583        "add r23, r0 \n\t"
19584        "adc r28, r1 \n\t"
19585        "adc r29, r25 \n\t"
19586        "mul r7, r16 \n\t"
19587        "add r23, r0 \n\t"
19588        "adc r28, r1 \n\t"
19589        "adc r29, r25 \n\t"
19590        "mul r8, r15 \n\t"
19591        "add r23, r0 \n\t"
19592        "adc r28, r1 \n\t"
19593        "adc r29, r25 \n\t"
19594        "mul r9, r14 \n\t"
19595        "add r23, r0 \n\t"
19596        "adc r28, r1 \n\t"
19597        "adc r29, r25 \n\t"
19598        "mul r10, r13 \n\t"
19599        "add r23, r0 \n\t"
19600        "adc r28, r1 \n\t"
19601        "adc r29, r25 \n\t"
19602        "mul r11, r12 \n\t"
19603        "add r23, r0 \n\t"
19604        "adc r28, r1 \n\t"
19605        "adc r29, r25 \n\t"
19606        "lsl r23 \n\t"
19607        "rol r28 \n\t"
19608        "rol r29 \n\t"
19609        "add r23, r24 \n\t"
19610        "adc r28, r22 \n\t"
19611        "adc r29, r25 \n\t"
19612        "st z+, r23 \n\t"
19613
19614        "ld r2, x+ \n\t"
19615        "ldi r22, 0 \n\t"
19616        "mul r3, r21 \n\t"
19617        "mov r23, r0 \n\t"
19618        "mov r24, r1 \n\t"
19619        "mul r4, r20 \n\t"
19620        "add r23, r0 \n\t"
19621        "adc r24, r1 \n\t"
19622        "adc r22, r25 \n\t"
19623        "mul r5, r19 \n\t"
19624        "add r23, r0 \n\t"
19625        "adc r24, r1 \n\t"
19626        "adc r22, r25 \n\t"
19627        "mul r6, r18 \n\t"
19628        "add r23, r0 \n\t"
19629        "adc r24, r1 \n\t"
19630        "adc r22, r25 \n\t"
19631        "mul r7, r17 \n\t"
19632        "add r23, r0 \n\t"
19633        "adc r24, r1 \n\t"
19634        "adc r22, r25 \n\t"
19635        "mul r8, r16 \n\t"
19636        "add r23, r0 \n\t"
19637        "adc r24, r1 \n\t"
19638        "adc r22, r25 \n\t"
19639        "mul r9, r15 \n\t"
19640        "add r23, r0 \n\t"
19641        "adc r24, r1 \n\t"
19642        "adc r22, r25 \n\t"
19643        "mul r10, r14 \n\t"
19644        "add r23, r0 \n\t"
19645        "adc r24, r1 \n\t"
19646        "adc r22, r25 \n\t"
19647        "mul r11, r13 \n\t"
19648        "add r23, r0 \n\t"
19649        "adc r24, r1 \n\t"
19650        "adc r22, r25 \n\t"
19651        "ld r0, z \n\t"
19652        "add r23, r0 \n\t"
19653        "adc r24, r25 \n\t"
19654        "adc r22, r25 \n\t"
19655        "lsl r23 \n\t"
19656        "rol r24 \n\t"
19657        "rol r22 \n\t"
19658        "mul r12, r12 \n\t"
19659        "add r23, r0 \n\t"
19660        "adc r24, r1 \n\t"
19661        "adc r22, r25 \n\t"
19662        "add r23, r28 \n\t"
19663        "adc r24, r29 \n\t"
19664        "adc r22, r25 \n\t"
19665        "st z+, r23 \n\t"
19666
19667        "ldi r29, 0 \n\t"
19668        "mul r3, r2 \n\t"
19669        "mov r23, r0 \n\t"
19670        "mov r28, r1 \n\t"
19671        "mul r4, r21 \n\t"
19672        "add r23, r0 \n\t"
19673        "adc r28, r1 \n\t"
19674        "adc r29, r25 \n\t"
19675        "mul r5, r20 \n\t"
19676        "add r23, r0 \n\t"
19677        "adc r28, r1 \n\t"
19678        "adc r29, r25 \n\t"
19679        "mul r6, r19 \n\t"
19680        "add r23, r0 \n\t"
19681        "adc r28, r1 \n\t"
19682        "adc r29, r25 \n\t"
19683        "mul r7, r18 \n\t"
19684        "add r23, r0 \n\t"
19685        "adc r28, r1 \n\t"
19686        "adc r29, r25 \n\t"
19687        "mul r8, r17 \n\t"
19688        "add r23, r0 \n\t"
19689        "adc r28, r1 \n\t"
19690        "adc r29, r25 \n\t"
19691        "mul r9, r16 \n\t"
19692        "add r23, r0 \n\t"
19693        "adc r28, r1 \n\t"
19694        "adc r29, r25 \n\t"
19695        "mul r10, r15 \n\t"
19696        "add r23, r0 \n\t"
19697        "adc r28, r1 \n\t"
19698        "adc r29, r25 \n\t"
19699        "mul r11, r14 \n\t"
19700        "add r23, r0 \n\t"
19701        "adc r28, r1 \n\t"
19702        "adc r29, r25 \n\t"
19703        "mul r12, r13 \n\t"
19704        "add r23, r0 \n\t"
19705        "adc r28, r1 \n\t"
19706        "adc r29, r25 \n\t"
19707        "ld r0, z \n\t"
19708        "add r23, r0 \n\t"
19709        "adc r28, r25 \n\t"
19710        "adc r29, r25 \n\t"
19711        "lsl r23 \n\t"
19712        "rol r28 \n\t"
19713        "rol r29 \n\t"
19714        "add r23, r24 \n\t"
19715        "adc r28, r22 \n\t"
19716        "adc r29, r25 \n\t"
19717        "st z+, r23 \n\t"
19718
19719        "ld r3, x+ \n\t"
19720        "ldi r22, 0 \n\t"
19721        "mul r4, r2 \n\t"
19722        "mov r23, r0 \n\t"
19723        "mov r24, r1 \n\t"
19724        "mul r5, r21 \n\t"
19725        "add r23, r0 \n\t"
19726        "adc r24, r1 \n\t"
19727        "adc r22, r25 \n\t"
19728        "mul r6, r20 \n\t"
19729        "add r23, r0 \n\t"
19730        "adc r24, r1 \n\t"
19731        "adc r22, r25 \n\t"
19732        "mul r7, r19 \n\t"
19733        "add r23, r0 \n\t"
19734        "adc r24, r1 \n\t"
19735        "adc r22, r25 \n\t"
19736        "mul r8, r18 \n\t"
19737        "add r23, r0 \n\t"
19738        "adc r24, r1 \n\t"
19739        "adc r22, r25 \n\t"
19740        "mul r9, r17 \n\t"
19741        "add r23, r0 \n\t"
19742        "adc r24, r1 \n\t"
19743        "adc r22, r25 \n\t"
19744        "mul r10, r16 \n\t"
19745        "add r23, r0 \n\t"
19746        "adc r24, r1 \n\t"
19747        "adc r22, r25 \n\t"
19748        "mul r11, r15 \n\t"
19749        "add r23, r0 \n\t"
19750        "adc r24, r1 \n\t"
19751        "adc r22, r25 \n\t"
19752        "mul r12, r14 \n\t"
19753        "add r23, r0 \n\t"
19754        "adc r24, r1 \n\t"
19755        "adc r22, r25 \n\t"
19756        "ld r0, z \n\t"
19757        "add r23, r0 \n\t"
19758        "adc r24, r25 \n\t"
19759        "adc r22, r25 \n\t"
19760        "lsl r23 \n\t"
19761        "rol r24 \n\t"
19762        "rol r22 \n\t"
19763        "mul r13, r13 \n\t"
19764        "add r23, r0 \n\t"
19765        "adc r24, r1 \n\t"
19766        "adc r22, r25 \n\t"
19767        "add r23, r28 \n\t"
19768        "adc r24, r29 \n\t"
19769        "adc r22, r25 \n\t"
19770        "st z+, r23 \n\t"
19771
19772        "ldi r29, 0 \n\t"
19773        "mul r4, r3 \n\t"
19774        "mov r23, r0 \n\t"
19775        "mov r28, r1 \n\t"
19776        "mul r5, r2 \n\t"
19777        "add r23, r0 \n\t"
19778        "adc r28, r1 \n\t"
19779        "adc r29, r25 \n\t"
19780        "mul r6, r21 \n\t"
19781        "add r23, r0 \n\t"
19782        "adc r28, r1 \n\t"
19783        "adc r29, r25 \n\t"
19784        "mul r7, r20 \n\t"
19785        "add r23, r0 \n\t"
19786        "adc r28, r1 \n\t"
19787        "adc r29, r25 \n\t"
19788        "mul r8, r19 \n\t"
19789        "add r23, r0 \n\t"
19790        "adc r28, r1 \n\t"
19791        "adc r29, r25 \n\t"
19792        "mul r9, r18 \n\t"
19793        "add r23, r0 \n\t"
19794        "adc r28, r1 \n\t"
19795        "adc r29, r25 \n\t"
19796        "mul r10, r17 \n\t"
19797        "add r23, r0 \n\t"
19798        "adc r28, r1 \n\t"
19799        "adc r29, r25 \n\t"
19800        "mul r11, r16 \n\t"
19801        "add r23, r0 \n\t"
19802        "adc r28, r1 \n\t"
19803        "adc r29, r25 \n\t"
19804        "mul r12, r15 \n\t"
19805        "add r23, r0 \n\t"
19806        "adc r28, r1 \n\t"
19807        "adc r29, r25 \n\t"
19808        "mul r13, r14 \n\t"
19809        "add r23, r0 \n\t"
19810        "adc r28, r1 \n\t"
19811        "adc r29, r25 \n\t"
19812        "ld r0, z \n\t"
19813        "add r23, r0 \n\t"
19814        "adc r28, r25 \n\t"
19815        "adc r29, r25 \n\t"
19816        "lsl r23 \n\t"
19817        "rol r28 \n\t"
19818        "rol r29 \n\t"
19819        "add r23, r24 \n\t"
19820        "adc r28, r22 \n\t"
19821        "adc r29, r25 \n\t"
19822        "st z+, r23 \n\t"
19823
19824        "ld r4, x+ \n\t"
19825        "ldi r22, 0 \n\t"
19826        "mul r5, r3 \n\t"
19827        "mov r23, r0 \n\t"
19828        "mov r24, r1 \n\t"
19829        "mul r6, r2 \n\t"
19830        "add r23, r0 \n\t"
19831        "adc r24, r1 \n\t"
19832        "adc r22, r25 \n\t"
19833        "mul r7, r21 \n\t"
19834        "add r23, r0 \n\t"
19835        "adc r24, r1 \n\t"
19836        "adc r22, r25 \n\t"
19837        "mul r8, r20 \n\t"
19838        "add r23, r0 \n\t"
19839        "adc r24, r1 \n\t"
19840        "adc r22, r25 \n\t"
19841        "mul r9, r19 \n\t"
19842        "add r23, r0 \n\t"
19843        "adc r24, r1 \n\t"
19844        "adc r22, r25 \n\t"
19845        "mul r10, r18 \n\t"
19846        "add r23, r0 \n\t"
19847        "adc r24, r1 \n\t"
19848        "adc r22, r25 \n\t"
19849        "mul r11, r17 \n\t"
19850        "add r23, r0 \n\t"
19851        "adc r24, r1 \n\t"
19852        "adc r22, r25 \n\t"
19853        "mul r12, r16 \n\t"
19854        "add r23, r0 \n\t"
19855        "adc r24, r1 \n\t"
19856        "adc r22, r25 \n\t"
19857        "mul r13, r15 \n\t"
19858        "add r23, r0 \n\t"
19859        "adc r24, r1 \n\t"
19860        "adc r22, r25 \n\t"
19861        "ld r0, z \n\t"
19862        "add r23, r0 \n\t"
19863        "adc r24, r25 \n\t"
19864        "adc r22, r25 \n\t"
19865        "lsl r23 \n\t"
19866        "rol r24 \n\t"
19867        "rol r22 \n\t"
19868        "mul r14, r14 \n\t"
19869        "add r23, r0 \n\t"
19870        "adc r24, r1 \n\t"
19871        "adc r22, r25 \n\t"
19872        "add r23, r28 \n\t"
19873        "adc r24, r29 \n\t"
19874        "adc r22, r25 \n\t"
19875        "st z+, r23 \n\t"
19876
19877        "ldi r29, 0 \n\t"
19878        "mul r5, r4 \n\t"
19879        "mov r23, r0 \n\t"
19880        "mov r28, r1 \n\t"
19881        "mul r6, r3 \n\t"
19882        "add r23, r0 \n\t"
19883        "adc r28, r1 \n\t"
19884        "adc r29, r25 \n\t"
19885        "mul r7, r2 \n\t"
19886        "add r23, r0 \n\t"
19887        "adc r28, r1 \n\t"
19888        "adc r29, r25 \n\t"
19889        "mul r8, r21 \n\t"
19890        "add r23, r0 \n\t"
19891        "adc r28, r1 \n\t"
19892        "adc r29, r25 \n\t"
19893        "mul r9, r20 \n\t"
19894        "add r23, r0 \n\t"
19895        "adc r28, r1 \n\t"
19896        "adc r29, r25 \n\t"
19897        "mul r10, r19 \n\t"
19898        "add r23, r0 \n\t"
19899        "adc r28, r1 \n\t"
19900        "adc r29, r25 \n\t"
19901        "mul r11, r18 \n\t"
19902        "add r23, r0 \n\t"
19903        "adc r28, r1 \n\t"
19904        "adc r29, r25 \n\t"
19905        "mul r12, r17 \n\t"
19906        "add r23, r0 \n\t"
19907        "adc r28, r1 \n\t"
19908        "adc r29, r25 \n\t"
19909        "mul r13, r16 \n\t"
19910        "add r23, r0 \n\t"
19911        "adc r28, r1 \n\t"
19912        "adc r29, r25 \n\t"
19913        "mul r14, r15 \n\t"
19914        "add r23, r0 \n\t"
19915        "adc r28, r1 \n\t"
19916        "adc r29, r25 \n\t"
19917        "ld r0, z \n\t"
19918        "add r23, r0 \n\t"
19919        "adc r28, r25 \n\t"
19920        "adc r29, r25 \n\t"
19921        "lsl r23 \n\t"
19922        "rol r28 \n\t"
19923        "rol r29 \n\t"
19924        "add r23, r24 \n\t"
19925        "adc r28, r22 \n\t"
19926        "adc r29, r25 \n\t"
19927        "st z+, r23 \n\t"
19928
19929        "ld r5, x+ \n\t"
19930        "ldi r22, 0 \n\t"
19931        "mul r6, r4 \n\t"
19932        "mov r23, r0 \n\t"
19933        "mov r24, r1 \n\t"
19934        "mul r7, r3 \n\t"
19935        "add r23, r0 \n\t"
19936        "adc r24, r1 \n\t"
19937        "adc r22, r25 \n\t"
19938        "mul r8, r2 \n\t"
19939        "add r23, r0 \n\t"
19940        "adc r24, r1 \n\t"
19941        "adc r22, r25 \n\t"
19942        "mul r9, r21 \n\t"
19943        "add r23, r0 \n\t"
19944        "adc r24, r1 \n\t"
19945        "adc r22, r25 \n\t"
19946        "mul r10, r20 \n\t"
19947        "add r23, r0 \n\t"
19948        "adc r24, r1 \n\t"
19949        "adc r22, r25 \n\t"
19950        "mul r11, r19 \n\t"
19951        "add r23, r0 \n\t"
19952        "adc r24, r1 \n\t"
19953        "adc r22, r25 \n\t"
19954        "mul r12, r18 \n\t"
19955        "add r23, r0 \n\t"
19956        "adc r24, r1 \n\t"
19957        "adc r22, r25 \n\t"
19958        "mul r13, r17 \n\t"
19959        "add r23, r0 \n\t"
19960        "adc r24, r1 \n\t"
19961        "adc r22, r25 \n\t"
19962        "mul r14, r16 \n\t"
19963        "add r23, r0 \n\t"
19964        "adc r24, r1 \n\t"
19965        "adc r22, r25 \n\t"
19966        "ld r0, z \n\t"
19967        "add r23, r0 \n\t"
19968        "adc r24, r25 \n\t"
19969        "adc r22, r25 \n\t"
19970        "lsl r23 \n\t"
19971        "rol r24 \n\t"
19972        "rol r22 \n\t"
19973        "mul r15, r15 \n\t"
19974        "add r23, r0 \n\t"
19975        "adc r24, r1 \n\t"
19976        "adc r22, r25 \n\t"
19977        "add r23, r28 \n\t"
19978        "adc r24, r29 \n\t"
19979        "adc r22, r25 \n\t"
19980        "st z+, r23 \n\t"
19981
19982        "ldi r29, 0 \n\t"
19983        "mul r6, r5 \n\t"
19984        "mov r23, r0 \n\t"
19985        "mov r28, r1 \n\t"
19986        "mul r7, r4 \n\t"
19987        "add r23, r0 \n\t"
19988        "adc r28, r1 \n\t"
19989        "adc r29, r25 \n\t"
19990        "mul r8, r3 \n\t"
19991        "add r23, r0 \n\t"
19992        "adc r28, r1 \n\t"
19993        "adc r29, r25 \n\t"
19994        "mul r9, r2 \n\t"
19995        "add r23, r0 \n\t"
19996        "adc r28, r1 \n\t"
19997        "adc r29, r25 \n\t"
19998        "mul r10, r21 \n\t"
19999        "add r23, r0 \n\t"
20000        "adc r28, r1 \n\t"
20001        "adc r29, r25 \n\t"
20002        "mul r11, r20 \n\t"
20003        "add r23, r0 \n\t"
20004        "adc r28, r1 \n\t"
20005        "adc r29, r25 \n\t"
20006        "mul r12, r19 \n\t"
20007        "add r23, r0 \n\t"
20008        "adc r28, r1 \n\t"
20009        "adc r29, r25 \n\t"
20010        "mul r13, r18 \n\t"
20011        "add r23, r0 \n\t"
20012        "adc r28, r1 \n\t"
20013        "adc r29, r25 \n\t"
20014        "mul r14, r17 \n\t"
20015        "add r23, r0 \n\t"
20016        "adc r28, r1 \n\t"
20017        "adc r29, r25 \n\t"
20018        "mul r15, r16 \n\t"
20019        "add r23, r0 \n\t"
20020        "adc r28, r1 \n\t"
20021        "adc r29, r25 \n\t"
20022        "ld r0, z \n\t"
20023        "add r23, r0 \n\t"
20024        "adc r28, r25 \n\t"
20025        "adc r29, r25 \n\t"
20026        "lsl r23 \n\t"
20027        "rol r28 \n\t"
20028        "rol r29 \n\t"
20029        "add r23, r24 \n\t"
20030        "adc r28, r22 \n\t"
20031        "adc r29, r25 \n\t"
20032        "st z+, r23 \n\t"
20033
20034        "ld r6, x+ \n\t"
20035        "ldi r22, 0 \n\t"
20036        "mul r7, r5 \n\t"
20037        "mov r23, r0 \n\t"
20038        "mov r24, r1 \n\t"
20039        "mul r8, r4 \n\t"
20040        "add r23, r0 \n\t"
20041        "adc r24, r1 \n\t"
20042        "adc r22, r25 \n\t"
20043        "mul r9, r3 \n\t"
20044        "add r23, r0 \n\t"
20045        "adc r24, r1 \n\t"
20046        "adc r22, r25 \n\t"
20047        "mul r10, r2 \n\t"
20048        "add r23, r0 \n\t"
20049        "adc r24, r1 \n\t"
20050        "adc r22, r25 \n\t"
20051        "mul r11, r21 \n\t"
20052        "add r23, r0 \n\t"
20053        "adc r24, r1 \n\t"
20054        "adc r22, r25 \n\t"
20055        "mul r12, r20 \n\t"
20056        "add r23, r0 \n\t"
20057        "adc r24, r1 \n\t"
20058        "adc r22, r25 \n\t"
20059        "mul r13, r19 \n\t"
20060        "add r23, r0 \n\t"
20061        "adc r24, r1 \n\t"
20062        "adc r22, r25 \n\t"
20063        "mul r14, r18 \n\t"
20064        "add r23, r0 \n\t"
20065        "adc r24, r1 \n\t"
20066        "adc r22, r25 \n\t"
20067        "mul r15, r17 \n\t"
20068        "add r23, r0 \n\t"
20069        "adc r24, r1 \n\t"
20070        "adc r22, r25 \n\t"
20071        "ld r0, z \n\t"
20072        "add r23, r0 \n\t"
20073        "adc r24, r25 \n\t"
20074        "adc r22, r25 \n\t"
20075        "lsl r23 \n\t"
20076        "rol r24 \n\t"
20077        "rol r22 \n\t"
20078        "mul r16, r16 \n\t"
20079        "add r23, r0 \n\t"
20080        "adc r24, r1 \n\t"
20081        "adc r22, r25 \n\t"
20082        "add r23, r28 \n\t"
20083        "adc r24, r29 \n\t"
20084        "adc r22, r25 \n\t"
20085        "st z+, r23 \n\t"
20086
20087        "ldi r29, 0 \n\t"
20088        "mul r7, r6 \n\t"
20089        "mov r23, r0 \n\t"
20090        "mov r28, r1 \n\t"
20091        "mul r8, r5 \n\t"
20092        "add r23, r0 \n\t"
20093        "adc r28, r1 \n\t"
20094        "adc r29, r25 \n\t"
20095        "mul r9, r4 \n\t"
20096        "add r23, r0 \n\t"
20097        "adc r28, r1 \n\t"
20098        "adc r29, r25 \n\t"
20099        "mul r10, r3 \n\t"
20100        "add r23, r0 \n\t"
20101        "adc r28, r1 \n\t"
20102        "adc r29, r25 \n\t"
20103        "mul r11, r2 \n\t"
20104        "add r23, r0 \n\t"
20105        "adc r28, r1 \n\t"
20106        "adc r29, r25 \n\t"
20107        "mul r12, r21 \n\t"
20108        "add r23, r0 \n\t"
20109        "adc r28, r1 \n\t"
20110        "adc r29, r25 \n\t"
20111        "mul r13, r20 \n\t"
20112        "add r23, r0 \n\t"
20113        "adc r28, r1 \n\t"
20114        "adc r29, r25 \n\t"
20115        "mul r14, r19 \n\t"
20116        "add r23, r0 \n\t"
20117        "adc r28, r1 \n\t"
20118        "adc r29, r25 \n\t"
20119        "mul r15, r18 \n\t"
20120        "add r23, r0 \n\t"
20121        "adc r28, r1 \n\t"
20122        "adc r29, r25 \n\t"
20123        "mul r16, r17 \n\t"
20124        "add r23, r0 \n\t"
20125        "adc r28, r1 \n\t"
20126        "adc r29, r25 \n\t"
20127        "ld r0, z \n\t"
20128        "add r23, r0 \n\t"
20129        "adc r28, r25 \n\t"
20130        "adc r29, r25 \n\t"
20131        "lsl r23 \n\t"
20132        "rol r28 \n\t"
20133        "rol r29 \n\t"
20134        "add r23, r24 \n\t"
20135        "adc r28, r22 \n\t"
20136        "adc r29, r25 \n\t"
20137        "st z+, r23 \n\t"
20138
20139        "ld r7, x+ \n\t"
20140        "ldi r22, 0 \n\t"
20141        "mul r8, r6 \n\t"
20142        "mov r23, r0 \n\t"
20143        "mov r24, r1 \n\t"
20144        "mul r9, r5 \n\t"
20145        "add r23, r0 \n\t"
20146        "adc r24, r1 \n\t"
20147        "adc r22, r25 \n\t"
20148        "mul r10, r4 \n\t"
20149        "add r23, r0 \n\t"
20150        "adc r24, r1 \n\t"
20151        "adc r22, r25 \n\t"
20152        "mul r11, r3 \n\t"
20153        "add r23, r0 \n\t"
20154        "adc r24, r1 \n\t"
20155        "adc r22, r25 \n\t"
20156        "mul r12, r2 \n\t"
20157        "add r23, r0 \n\t"
20158        "adc r24, r1 \n\t"
20159        "adc r22, r25 \n\t"
20160        "mul r13, r21 \n\t"
20161        "add r23, r0 \n\t"
20162        "adc r24, r1 \n\t"
20163        "adc r22, r25 \n\t"
20164        "mul r14, r20 \n\t"
20165        "add r23, r0 \n\t"
20166        "adc r24, r1 \n\t"
20167        "adc r22, r25 \n\t"
20168        "mul r15, r19 \n\t"
20169        "add r23, r0 \n\t"
20170        "adc r24, r1 \n\t"
20171        "adc r22, r25 \n\t"
20172        "mul r16, r18 \n\t"
20173        "add r23, r0 \n\t"
20174        "adc r24, r1 \n\t"
20175        "adc r22, r25 \n\t"
20176        "ld r0, z \n\t"
20177        "add r23, r0 \n\t"
20178        "adc r24, r25 \n\t"
20179        "adc r22, r25 \n\t"
20180        "lsl r23 \n\t"
20181        "rol r24 \n\t"
20182        "rol r22 \n\t"
20183        "mul r17, r17 \n\t"
20184        "add r23, r0 \n\t"
20185        "adc r24, r1 \n\t"
20186        "adc r22, r25 \n\t"
20187        "add r23, r28 \n\t"
20188        "adc r24, r29 \n\t"
20189        "adc r22, r25 \n\t"
20190        "st z+, r23 \n\t"
20191
20192        "ldi r29, 0 \n\t"
20193        "mul r8, r7 \n\t"
20194        "mov r23, r0 \n\t"
20195        "mov r28, r1 \n\t"
20196        "mul r9, r6 \n\t"
20197        "add r23, r0 \n\t"
20198        "adc r28, r1 \n\t"
20199        "adc r29, r25 \n\t"
20200        "mul r10, r5 \n\t"
20201        "add r23, r0 \n\t"
20202        "adc r28, r1 \n\t"
20203        "adc r29, r25 \n\t"
20204        "mul r11, r4 \n\t"
20205        "add r23, r0 \n\t"
20206        "adc r28, r1 \n\t"
20207        "adc r29, r25 \n\t"
20208        "mul r12, r3 \n\t"
20209        "add r23, r0 \n\t"
20210        "adc r28, r1 \n\t"
20211        "adc r29, r25 \n\t"
20212        "mul r13, r2 \n\t"
20213        "add r23, r0 \n\t"
20214        "adc r28, r1 \n\t"
20215        "adc r29, r25 \n\t"
20216        "mul r14, r21 \n\t"
20217        "add r23, r0 \n\t"
20218        "adc r28, r1 \n\t"
20219        "adc r29, r25 \n\t"
20220        "mul r15, r20 \n\t"
20221        "add r23, r0 \n\t"
20222        "adc r28, r1 \n\t"
20223        "adc r29, r25 \n\t"
20224        "mul r16, r19 \n\t"
20225        "add r23, r0 \n\t"
20226        "adc r28, r1 \n\t"
20227        "adc r29, r25 \n\t"
20228        "mul r17, r18 \n\t"
20229        "add r23, r0 \n\t"
20230        "adc r28, r1 \n\t"
20231        "adc r29, r25 \n\t"
20232        "ld r0, z \n\t"
20233        "add r23, r0 \n\t"
20234        "adc r28, r25 \n\t"
20235        "adc r29, r25 \n\t"
20236        "lsl r23 \n\t"
20237        "rol r28 \n\t"
20238        "rol r29 \n\t"
20239        "add r23, r24 \n\t"
20240        "adc r28, r22 \n\t"
20241        "adc r29, r25 \n\t"
20242        "st z+, r23 \n\t"
20243
20244        "ld r8, x+ \n\t"
20245        "ldi r22, 0 \n\t"
20246        "mul r9, r7 \n\t"
20247        "mov r23, r0 \n\t"
20248        "mov r24, r1 \n\t"
20249        "mul r10, r6 \n\t"
20250        "add r23, r0 \n\t"
20251        "adc r24, r1 \n\t"
20252        "adc r22, r25 \n\t"
20253        "mul r11, r5 \n\t"
20254        "add r23, r0 \n\t"
20255        "adc r24, r1 \n\t"
20256        "adc r22, r25 \n\t"
20257        "mul r12, r4 \n\t"
20258        "add r23, r0 \n\t"
20259        "adc r24, r1 \n\t"
20260        "adc r22, r25 \n\t"
20261        "mul r13, r3 \n\t"
20262        "add r23, r0 \n\t"
20263        "adc r24, r1 \n\t"
20264        "adc r22, r25 \n\t"
20265        "mul r14, r2 \n\t"
20266        "add r23, r0 \n\t"
20267        "adc r24, r1 \n\t"
20268        "adc r22, r25 \n\t"
20269        "mul r15, r21 \n\t"
20270        "add r23, r0 \n\t"
20271        "adc r24, r1 \n\t"
20272        "adc r22, r25 \n\t"
20273        "mul r16, r20 \n\t"
20274        "add r23, r0 \n\t"
20275        "adc r24, r1 \n\t"
20276        "adc r22, r25 \n\t"
20277        "mul r17, r19 \n\t"
20278        "add r23, r0 \n\t"
20279        "adc r24, r1 \n\t"
20280        "adc r22, r25 \n\t"
20281        "ld r0, z \n\t"
20282        "add r23, r0 \n\t"
20283        "adc r24, r25 \n\t"
20284        "adc r22, r25 \n\t"
20285        "lsl r23 \n\t"
20286        "rol r24 \n\t"
20287        "rol r22 \n\t"
20288        "mul r18, r18 \n\t"
20289        "add r23, r0 \n\t"
20290        "adc r24, r1 \n\t"
20291        "adc r22, r25 \n\t"
20292        "add r23, r28 \n\t"
20293        "adc r24, r29 \n\t"
20294        "adc r22, r25 \n\t"
20295        "st z+, r23 \n\t"
20296
20297        "ldi r29, 0 \n\t"
20298        "mul r9, r8 \n\t"
20299        "mov r23, r0 \n\t"
20300        "mov r28, r1 \n\t"
20301        "mul r10, r7 \n\t"
20302        "add r23, r0 \n\t"
20303        "adc r28, r1 \n\t"
20304        "adc r29, r25 \n\t"
20305        "mul r11, r6 \n\t"
20306        "add r23, r0 \n\t"
20307        "adc r28, r1 \n\t"
20308        "adc r29, r25 \n\t"
20309        "mul r12, r5 \n\t"
20310        "add r23, r0 \n\t"
20311        "adc r28, r1 \n\t"
20312        "adc r29, r25 \n\t"
20313        "mul r13, r4 \n\t"
20314        "add r23, r0 \n\t"
20315        "adc r28, r1 \n\t"
20316        "adc r29, r25 \n\t"
20317        "mul r14, r3 \n\t"
20318        "add r23, r0 \n\t"
20319        "adc r28, r1 \n\t"
20320        "adc r29, r25 \n\t"
20321        "mul r15, r2 \n\t"
20322        "add r23, r0 \n\t"
20323        "adc r28, r1 \n\t"
20324        "adc r29, r25 \n\t"
20325        "mul r16, r21 \n\t"
20326        "add r23, r0 \n\t"
20327        "adc r28, r1 \n\t"
20328        "adc r29, r25 \n\t"
20329        "mul r17, r20 \n\t"
20330        "add r23, r0 \n\t"
20331        "adc r28, r1 \n\t"
20332        "adc r29, r25 \n\t"
20333        "mul r18, r19 \n\t"
20334        "add r23, r0 \n\t"
20335        "adc r28, r1 \n\t"
20336        "adc r29, r25 \n\t"
20337        "ld r0, z \n\t"
20338        "add r23, r0 \n\t"
20339        "adc r28, r25 \n\t"
20340        "adc r29, r25 \n\t"
20341        "lsl r23 \n\t"
20342        "rol r28 \n\t"
20343        "rol r29 \n\t"
20344        "add r23, r24 \n\t"
20345        "adc r28, r22 \n\t"
20346        "adc r29, r25 \n\t"
20347        "st z+, r23 \n\t"
20348
20349        "ld r9, x+ \n\t"
20350        "ldi r22, 0 \n\t"
20351        "mul r10, r8 \n\t"
20352        "mov r23, r0 \n\t"
20353        "mov r24, r1 \n\t"
20354        "mul r11, r7 \n\t"
20355        "add r23, r0 \n\t"
20356        "adc r24, r1 \n\t"
20357        "adc r22, r25 \n\t"
20358        "mul r12, r6 \n\t"
20359        "add r23, r0 \n\t"
20360        "adc r24, r1 \n\t"
20361        "adc r22, r25 \n\t"
20362        "mul r13, r5 \n\t"
20363        "add r23, r0 \n\t"
20364        "adc r24, r1 \n\t"
20365        "adc r22, r25 \n\t"
20366        "mul r14, r4 \n\t"
20367        "add r23, r0 \n\t"
20368        "adc r24, r1 \n\t"
20369        "adc r22, r25 \n\t"
20370        "mul r15, r3 \n\t"
20371        "add r23, r0 \n\t"
20372        "adc r24, r1 \n\t"
20373        "adc r22, r25 \n\t"
20374        "mul r16, r2 \n\t"
20375        "add r23, r0 \n\t"
20376        "adc r24, r1 \n\t"
20377        "adc r22, r25 \n\t"
20378        "mul r17, r21 \n\t"
20379        "add r23, r0 \n\t"
20380        "adc r24, r1 \n\t"
20381        "adc r22, r25 \n\t"
20382        "mul r18, r20 \n\t"
20383        "add r23, r0 \n\t"
20384        "adc r24, r1 \n\t"
20385        "adc r22, r25 \n\t"
20386        "ld r0, z \n\t"
20387        "add r23, r0 \n\t"
20388        "adc r24, r25 \n\t"
20389        "adc r22, r25 \n\t"
20390        "lsl r23 \n\t"
20391        "rol r24 \n\t"
20392        "rol r22 \n\t"
20393        "mul r19, r19 \n\t"
20394        "add r23, r0 \n\t"
20395        "adc r24, r1 \n\t"
20396        "adc r22, r25 \n\t"
20397        "add r23, r28 \n\t"
20398        "adc r24, r29 \n\t"
20399        "adc r22, r25 \n\t"
20400        "st z+, r23 \n\t"
20401
20402        "ldi r29, 0 \n\t"
20403        "mul r10, r9 \n\t"
20404        "mov r23, r0 \n\t"
20405        "mov r28, r1 \n\t"
20406        "mul r11, r8 \n\t"
20407        "add r23, r0 \n\t"
20408        "adc r28, r1 \n\t"
20409        "adc r29, r25 \n\t"
20410        "mul r12, r7 \n\t"
20411        "add r23, r0 \n\t"
20412        "adc r28, r1 \n\t"
20413        "adc r29, r25 \n\t"
20414        "mul r13, r6 \n\t"
20415        "add r23, r0 \n\t"
20416        "adc r28, r1 \n\t"
20417        "adc r29, r25 \n\t"
20418        "mul r14, r5 \n\t"
20419        "add r23, r0 \n\t"
20420        "adc r28, r1 \n\t"
20421        "adc r29, r25 \n\t"
20422        "mul r15, r4 \n\t"
20423        "add r23, r0 \n\t"
20424        "adc r28, r1 \n\t"
20425        "adc r29, r25 \n\t"
20426        "mul r16, r3 \n\t"
20427        "add r23, r0 \n\t"
20428        "adc r28, r1 \n\t"
20429        "adc r29, r25 \n\t"
20430        "mul r17, r2 \n\t"
20431        "add r23, r0 \n\t"
20432        "adc r28, r1 \n\t"
20433        "adc r29, r25 \n\t"
20434        "mul r18, r21 \n\t"
20435        "add r23, r0 \n\t"
20436        "adc r28, r1 \n\t"
20437        "adc r29, r25 \n\t"
20438        "mul r19, r20 \n\t"
20439        "add r23, r0 \n\t"
20440        "adc r28, r1 \n\t"
20441        "adc r29, r25 \n\t"
20442        "ld r0, z \n\t"
20443        "add r23, r0 \n\t"
20444        "adc r28, r25 \n\t"
20445        "adc r29, r25 \n\t"
20446        "lsl r23 \n\t"
20447        "rol r28 \n\t"
20448        "rol r29 \n\t"
20449        "add r23, r24 \n\t"
20450        "adc r28, r22 \n\t"
20451        "adc r29, r25 \n\t"
20452        "st z+, r23 \n\t"
20453
20454        "ld r10, x+ \n\t"
20455        "ldi r22, 0 \n\t"
20456        "mul r11, r9 \n\t"
20457        "mov r23, r0 \n\t"
20458        "mov r24, r1 \n\t"
20459        "mul r12, r8 \n\t"
20460        "add r23, r0 \n\t"
20461        "adc r24, r1 \n\t"
20462        "adc r22, r25 \n\t"
20463        "mul r13, r7 \n\t"
20464        "add r23, r0 \n\t"
20465        "adc r24, r1 \n\t"
20466        "adc r22, r25 \n\t"
20467        "mul r14, r6 \n\t"
20468        "add r23, r0 \n\t"
20469        "adc r24, r1 \n\t"
20470        "adc r22, r25 \n\t"
20471        "mul r15, r5 \n\t"
20472        "add r23, r0 \n\t"
20473        "adc r24, r1 \n\t"
20474        "adc r22, r25 \n\t"
20475        "mul r16, r4 \n\t"
20476        "add r23, r0 \n\t"
20477        "adc r24, r1 \n\t"
20478        "adc r22, r25 \n\t"
20479        "mul r17, r3 \n\t"
20480        "add r23, r0 \n\t"
20481        "adc r24, r1 \n\t"
20482        "adc r22, r25 \n\t"
20483        "mul r18, r2 \n\t"
20484        "add r23, r0 \n\t"
20485        "adc r24, r1 \n\t"
20486        "adc r22, r25 \n\t"
20487        "mul r19, r21 \n\t"
20488        "add r23, r0 \n\t"
20489        "adc r24, r1 \n\t"
20490        "adc r22, r25 \n\t"
20491        "ld r0, z \n\t"
20492        "add r23, r0 \n\t"
20493        "adc r24, r25 \n\t"
20494        "adc r22, r25 \n\t"
20495        "lsl r23 \n\t"
20496        "rol r24 \n\t"
20497        "rol r22 \n\t"
20498        "mul r20, r20 \n\t"
20499        "add r23, r0 \n\t"
20500        "adc r24, r1 \n\t"
20501        "adc r22, r25 \n\t"
20502        "add r23, r28 \n\t"
20503        "adc r24, r29 \n\t"
20504        "adc r22, r25 \n\t"
20505        "st z+, r23 \n\t"
20506
20507        "ldi r29, 0 \n\t"
20508        "mul r11, r10 \n\t"
20509        "mov r23, r0 \n\t"
20510        "mov r28, r1 \n\t"
20511        "mul r12, r9 \n\t"
20512        "add r23, r0 \n\t"
20513        "adc r28, r1 \n\t"
20514        "adc r29, r25 \n\t"
20515        "mul r13, r8 \n\t"
20516        "add r23, r0 \n\t"
20517        "adc r28, r1 \n\t"
20518        "adc r29, r25 \n\t"
20519        "mul r14, r7 \n\t"
20520        "add r23, r0 \n\t"
20521        "adc r28, r1 \n\t"
20522        "adc r29, r25 \n\t"
20523        "mul r15, r6 \n\t"
20524        "add r23, r0 \n\t"
20525        "adc r28, r1 \n\t"
20526        "adc r29, r25 \n\t"
20527        "mul r16, r5 \n\t"
20528        "add r23, r0 \n\t"
20529        "adc r28, r1 \n\t"
20530        "adc r29, r25 \n\t"
20531        "mul r17, r4 \n\t"
20532        "add r23, r0 \n\t"
20533        "adc r28, r1 \n\t"
20534        "adc r29, r25 \n\t"
20535        "mul r18, r3 \n\t"
20536        "add r23, r0 \n\t"
20537        "adc r28, r1 \n\t"
20538        "adc r29, r25 \n\t"
20539        "mul r19, r2 \n\t"
20540        "add r23, r0 \n\t"
20541        "adc r28, r1 \n\t"
20542        "adc r29, r25 \n\t"
20543        "mul r20, r21 \n\t"
20544        "add r23, r0 \n\t"
20545        "adc r28, r1 \n\t"
20546        "adc r29, r25 \n\t"
20547        "ld r0, z \n\t"
20548        "add r23, r0 \n\t"
20549        "adc r28, r25 \n\t"
20550        "adc r29, r25 \n\t"
20551        "lsl r23 \n\t"
20552        "rol r28 \n\t"
20553        "rol r29 \n\t"
20554        "add r23, r24 \n\t"
20555        "adc r28, r22 \n\t"
20556        "adc r29, r25 \n\t"
20557        "st z+, r23 \n\t"
20558
20559        "ld r11, x+ \n\t"
20560        "ldi r22, 0 \n\t"
20561        "mul r12, r10 \n\t"
20562        "mov r23, r0 \n\t"
20563        "mov r24, r1 \n\t"
20564        "mul r13, r9 \n\t"
20565        "add r23, r0 \n\t"
20566        "adc r24, r1 \n\t"
20567        "adc r22, r25 \n\t"
20568        "mul r14, r8 \n\t"
20569        "add r23, r0 \n\t"
20570        "adc r24, r1 \n\t"
20571        "adc r22, r25 \n\t"
20572        "mul r15, r7 \n\t"
20573        "add r23, r0 \n\t"
20574        "adc r24, r1 \n\t"
20575        "adc r22, r25 \n\t"
20576        "mul r16, r6 \n\t"
20577        "add r23, r0 \n\t"
20578        "adc r24, r1 \n\t"
20579        "adc r22, r25 \n\t"
20580        "mul r17, r5 \n\t"
20581        "add r23, r0 \n\t"
20582        "adc r24, r1 \n\t"
20583        "adc r22, r25 \n\t"
20584        "mul r18, r4 \n\t"
20585        "add r23, r0 \n\t"
20586        "adc r24, r1 \n\t"
20587        "adc r22, r25 \n\t"
20588        "mul r19, r3 \n\t"
20589        "add r23, r0 \n\t"
20590        "adc r24, r1 \n\t"
20591        "adc r22, r25 \n\t"
20592        "mul r20, r2 \n\t"
20593        "add r23, r0 \n\t"
20594        "adc r24, r1 \n\t"
20595        "adc r22, r25 \n\t"
20596        "ld r0, z \n\t"
20597        "add r23, r0 \n\t"
20598        "adc r24, r25 \n\t"
20599        "adc r22, r25 \n\t"
20600        "lsl r23 \n\t"
20601        "rol r24 \n\t"
20602        "rol r22 \n\t"
20603        "mul r21, r21 \n\t"
20604        "add r23, r0 \n\t"
20605        "adc r24, r1 \n\t"
20606        "adc r22, r25 \n\t"
20607        "add r23, r28 \n\t"
20608        "adc r24, r29 \n\t"
20609        "adc r22, r25 \n\t"
20610        "st z+, r23 \n\t"
20611
20612        "ldi r29, 0 \n\t"
20613        "mul r12, r11 \n\t"
20614        "mov r23, r0 \n\t"
20615        "mov r28, r1 \n\t"
20616        "mul r13, r10 \n\t"
20617        "add r23, r0 \n\t"
20618        "adc r28, r1 \n\t"
20619        "adc r29, r25 \n\t"
20620        "mul r14, r9 \n\t"
20621        "add r23, r0 \n\t"
20622        "adc r28, r1 \n\t"
20623        "adc r29, r25 \n\t"
20624        "mul r15, r8 \n\t"
20625        "add r23, r0 \n\t"
20626        "adc r28, r1 \n\t"
20627        "adc r29, r25 \n\t"
20628        "mul r16, r7 \n\t"
20629        "add r23, r0 \n\t"
20630        "adc r28, r1 \n\t"
20631        "adc r29, r25 \n\t"
20632        "mul r17, r6 \n\t"
20633        "add r23, r0 \n\t"
20634        "adc r28, r1 \n\t"
20635        "adc r29, r25 \n\t"
20636        "mul r18, r5 \n\t"
20637        "add r23, r0 \n\t"
20638        "adc r28, r1 \n\t"
20639        "adc r29, r25 \n\t"
20640        "mul r19, r4 \n\t"
20641        "add r23, r0 \n\t"
20642        "adc r28, r1 \n\t"
20643        "adc r29, r25 \n\t"
20644        "mul r20, r3 \n\t"
20645        "add r23, r0 \n\t"
20646        "adc r28, r1 \n\t"
20647        "adc r29, r25 \n\t"
20648        "mul r21, r2 \n\t"
20649        "add r23, r0 \n\t"
20650        "adc r28, r1 \n\t"
20651        "adc r29, r25 \n\t"
20652        "ld r0, z \n\t"
20653        "add r23, r0 \n\t"
20654        "adc r28, r25 \n\t"
20655        "adc r29, r25 \n\t"
20656        "lsl r23 \n\t"
20657        "rol r28 \n\t"
20658        "rol r29 \n\t"
20659        "add r23, r24 \n\t"
20660        "adc r28, r22 \n\t"
20661        "adc r29, r25 \n\t"
20662        "st z+, r23 \n\t"
20663
20664        "ld r12, x+ \n\t"
20665        "ldi r22, 0 \n\t"
20666        "mul r13, r11 \n\t"
20667        "mov r23, r0 \n\t"
20668        "mov r24, r1 \n\t"
20669        "mul r14, r10 \n\t"
20670        "add r23, r0 \n\t"
20671        "adc r24, r1 \n\t"
20672        "adc r22, r25 \n\t"
20673        "mul r15, r9 \n\t"
20674        "add r23, r0 \n\t"
20675        "adc r24, r1 \n\t"
20676        "adc r22, r25 \n\t"
20677        "mul r16, r8 \n\t"
20678        "add r23, r0 \n\t"
20679        "adc r24, r1 \n\t"
20680        "adc r22, r25 \n\t"
20681        "mul r17, r7 \n\t"
20682        "add r23, r0 \n\t"
20683        "adc r24, r1 \n\t"
20684        "adc r22, r25 \n\t"
20685        "mul r18, r6 \n\t"
20686        "add r23, r0 \n\t"
20687        "adc r24, r1 \n\t"
20688        "adc r22, r25 \n\t"
20689        "mul r19, r5 \n\t"
20690        "add r23, r0 \n\t"
20691        "adc r24, r1 \n\t"
20692        "adc r22, r25 \n\t"
20693        "mul r20, r4 \n\t"
20694        "add r23, r0 \n\t"
20695        "adc r24, r1 \n\t"
20696        "adc r22, r25 \n\t"
20697        "mul r21, r3 \n\t"
20698        "add r23, r0 \n\t"
20699        "adc r24, r1 \n\t"
20700        "adc r22, r25 \n\t"
20701        "ld r0, z \n\t"
20702        "add r23, r0 \n\t"
20703        "adc r24, r25 \n\t"
20704        "adc r22, r25 \n\t"
20705        "lsl r23 \n\t"
20706        "rol r24 \n\t"
20707        "rol r22 \n\t"
20708        "mul r2, r2 \n\t"
20709        "add r23, r0 \n\t"
20710        "adc r24, r1 \n\t"
20711        "adc r22, r25 \n\t"
20712        "add r23, r28 \n\t"
20713        "adc r24, r29 \n\t"
20714        "adc r22, r25 \n\t"
20715        "st z+, r23 \n\t"
20716
20717        "ldi r29, 0 \n\t"
20718        "mul r13, r12 \n\t"
20719        "mov r23, r0 \n\t"
20720        "mov r28, r1 \n\t"
20721        "mul r14, r11 \n\t"
20722        "add r23, r0 \n\t"
20723        "adc r28, r1 \n\t"
20724        "adc r29, r25 \n\t"
20725        "mul r15, r10 \n\t"
20726        "add r23, r0 \n\t"
20727        "adc r28, r1 \n\t"
20728        "adc r29, r25 \n\t"
20729        "mul r16, r9 \n\t"
20730        "add r23, r0 \n\t"
20731        "adc r28, r1 \n\t"
20732        "adc r29, r25 \n\t"
20733        "mul r17, r8 \n\t"
20734        "add r23, r0 \n\t"
20735        "adc r28, r1 \n\t"
20736        "adc r29, r25 \n\t"
20737        "mul r18, r7 \n\t"
20738        "add r23, r0 \n\t"
20739        "adc r28, r1 \n\t"
20740        "adc r29, r25 \n\t"
20741        "mul r19, r6 \n\t"
20742        "add r23, r0 \n\t"
20743        "adc r28, r1 \n\t"
20744        "adc r29, r25 \n\t"
20745        "mul r20, r5 \n\t"
20746        "add r23, r0 \n\t"
20747        "adc r28, r1 \n\t"
20748        "adc r29, r25 \n\t"
20749        "mul r21, r4 \n\t"
20750        "add r23, r0 \n\t"
20751        "adc r28, r1 \n\t"
20752        "adc r29, r25 \n\t"
20753        "mul r2, r3 \n\t"
20754        "add r23, r0 \n\t"
20755        "adc r28, r1 \n\t"
20756        "adc r29, r25 \n\t"
20757        "ld r0, z \n\t"
20758        "add r23, r0 \n\t"
20759        "adc r28, r25 \n\t"
20760        "adc r29, r25 \n\t"
20761        "lsl r23 \n\t"
20762        "rol r28 \n\t"
20763        "rol r29 \n\t"
20764        "add r23, r24 \n\t"
20765        "adc r28, r22 \n\t"
20766        "adc r29, r25 \n\t"
20767        "st z+, r23 \n\t"
20768
20769        "ld r13, x+ \n\t"
20770        "ldi r22, 0 \n\t"
20771        "mul r14, r12 \n\t"
20772        "mov r23, r0 \n\t"
20773        "mov r24, r1 \n\t"
20774        "mul r15, r11 \n\t"
20775        "add r23, r0 \n\t"
20776        "adc r24, r1 \n\t"
20777        "adc r22, r25 \n\t"
20778        "mul r16, r10 \n\t"
20779        "add r23, r0 \n\t"
20780        "adc r24, r1 \n\t"
20781        "adc r22, r25 \n\t"
20782        "mul r17, r9 \n\t"
20783        "add r23, r0 \n\t"
20784        "adc r24, r1 \n\t"
20785        "adc r22, r25 \n\t"
20786        "mul r18, r8 \n\t"
20787        "add r23, r0 \n\t"
20788        "adc r24, r1 \n\t"
20789        "adc r22, r25 \n\t"
20790        "mul r19, r7 \n\t"
20791        "add r23, r0 \n\t"
20792        "adc r24, r1 \n\t"
20793        "adc r22, r25 \n\t"
20794        "mul r20, r6 \n\t"
20795        "add r23, r0 \n\t"
20796        "adc r24, r1 \n\t"
20797        "adc r22, r25 \n\t"
20798        "mul r21, r5 \n\t"
20799        "add r23, r0 \n\t"
20800        "adc r24, r1 \n\t"
20801        "adc r22, r25 \n\t"
20802        "mul r2, r4 \n\t"
20803        "add r23, r0 \n\t"
20804        "adc r24, r1 \n\t"
20805        "adc r22, r25 \n\t"
20806        "ld r0, z \n\t"
20807        "add r23, r0 \n\t"
20808        "adc r24, r25 \n\t"
20809        "adc r22, r25 \n\t"
20810        "lsl r23 \n\t"
20811        "rol r24 \n\t"
20812        "rol r22 \n\t"
20813        "mul r3, r3 \n\t"
20814        "add r23, r0 \n\t"
20815        "adc r24, r1 \n\t"
20816        "adc r22, r25 \n\t"
20817        "add r23, r28 \n\t"
20818        "adc r24, r29 \n\t"
20819        "adc r22, r25 \n\t"
20820        "st z+, r23 \n\t"
20821
20822        "ldi r29, 0 \n\t"
20823        "mul r14, r13 \n\t"
20824        "mov r23, r0 \n\t"
20825        "mov r28, r1 \n\t"
20826        "mul r15, r12 \n\t"
20827        "add r23, r0 \n\t"
20828        "adc r28, r1 \n\t"
20829        "adc r29, r25 \n\t"
20830        "mul r16, r11 \n\t"
20831        "add r23, r0 \n\t"
20832        "adc r28, r1 \n\t"
20833        "adc r29, r25 \n\t"
20834        "mul r17, r10 \n\t"
20835        "add r23, r0 \n\t"
20836        "adc r28, r1 \n\t"
20837        "adc r29, r25 \n\t"
20838        "mul r18, r9 \n\t"
20839        "add r23, r0 \n\t"
20840        "adc r28, r1 \n\t"
20841        "adc r29, r25 \n\t"
20842        "mul r19, r8 \n\t"
20843        "add r23, r0 \n\t"
20844        "adc r28, r1 \n\t"
20845        "adc r29, r25 \n\t"
20846        "mul r20, r7 \n\t"
20847        "add r23, r0 \n\t"
20848        "adc r28, r1 \n\t"
20849        "adc r29, r25 \n\t"
20850        "mul r21, r6 \n\t"
20851        "add r23, r0 \n\t"
20852        "adc r28, r1 \n\t"
20853        "adc r29, r25 \n\t"
20854        "mul r2, r5 \n\t"
20855        "add r23, r0 \n\t"
20856        "adc r28, r1 \n\t"
20857        "adc r29, r25 \n\t"
20858        "mul r3, r4 \n\t"
20859        "add r23, r0 \n\t"
20860        "adc r28, r1 \n\t"
20861        "adc r29, r25 \n\t"
20862        "ld r0, z \n\t"
20863        "add r23, r0 \n\t"
20864        "adc r28, r25 \n\t"
20865        "adc r29, r25 \n\t"
20866        "lsl r23 \n\t"
20867        "rol r28 \n\t"
20868        "rol r29 \n\t"
20869        "add r23, r24 \n\t"
20870        "adc r28, r22 \n\t"
20871        "adc r29, r25 \n\t"
20872        "st z+, r23 \n\t"
20873
20874        "ldi r22, 0 \n\t"
20875        "mul r15, r13 \n\t"
20876        "mov r23, r0 \n\t"
20877        "mov r24, r1 \n\t"
20878        "mul r16, r12 \n\t"
20879        "add r23, r0 \n\t"
20880        "adc r24, r1 \n\t"
20881        "adc r22, r25 \n\t"
20882        "mul r17, r11 \n\t"
20883        "add r23, r0 \n\t"
20884        "adc r24, r1 \n\t"
20885        "adc r22, r25 \n\t"
20886        "mul r18, r10 \n\t"
20887        "add r23, r0 \n\t"
20888        "adc r24, r1 \n\t"
20889        "adc r22, r25 \n\t"
20890        "mul r19, r9 \n\t"
20891        "add r23, r0 \n\t"
20892        "adc r24, r1 \n\t"
20893        "adc r22, r25 \n\t"
20894        "mul r20, r8 \n\t"
20895        "add r23, r0 \n\t"
20896        "adc r24, r1 \n\t"
20897        "adc r22, r25 \n\t"
20898        "mul r21, r7 \n\t"
20899        "add r23, r0 \n\t"
20900        "adc r24, r1 \n\t"
20901        "adc r22, r25 \n\t"
20902        "mul r2, r6 \n\t"
20903        "add r23, r0 \n\t"
20904        "adc r24, r1 \n\t"
20905        "adc r22, r25 \n\t"
20906        "mul r3, r5 \n\t"
20907        "add r23, r0 \n\t"
20908        "adc r24, r1 \n\t"
20909        "adc r22, r25 \n\t"
20910        "lsl r23 \n\t"
20911        "rol r24 \n\t"
20912        "rol r22 \n\t"
20913        "mul r4, r4 \n\t"
20914        "add r23, r0 \n\t"
20915        "adc r24, r1 \n\t"
20916        "adc r22, r25 \n\t"
20917        "add r23, r28 \n\t"
20918        "adc r24, r29 \n\t"
20919        "adc r22, r25 \n\t"
20920        "st z+, r23 \n\t"
20921
20922        "ldi r29, 0 \n\t"
20923        "mul r16, r13 \n\t"
20924        "mov r23, r0 \n\t"
20925        "mov r28, r1 \n\t"
20926        "mul r17, r12 \n\t"
20927        "add r23, r0 \n\t"
20928        "adc r28, r1 \n\t"
20929        "adc r29, r25 \n\t"
20930        "mul r18, r11 \n\t"
20931        "add r23, r0 \n\t"
20932        "adc r28, r1 \n\t"
20933        "adc r29, r25 \n\t"
20934        "mul r19, r10 \n\t"
20935        "add r23, r0 \n\t"
20936        "adc r28, r1 \n\t"
20937        "adc r29, r25 \n\t"
20938        "mul r20, r9 \n\t"
20939        "add r23, r0 \n\t"
20940        "adc r28, r1 \n\t"
20941        "adc r29, r25 \n\t"
20942        "mul r21, r8 \n\t"
20943        "add r23, r0 \n\t"
20944        "adc r28, r1 \n\t"
20945        "adc r29, r25 \n\t"
20946        "mul r2, r7 \n\t"
20947        "add r23, r0 \n\t"
20948        "adc r28, r1 \n\t"
20949        "adc r29, r25 \n\t"
20950        "mul r3, r6 \n\t"
20951        "add r23, r0 \n\t"
20952        "adc r28, r1 \n\t"
20953        "adc r29, r25 \n\t"
20954        "mul r4, r5 \n\t"
20955        "add r23, r0 \n\t"
20956        "adc r28, r1 \n\t"
20957        "adc r29, r25 \n\t"
20958        "lsl r23 \n\t"
20959        "rol r28 \n\t"
20960        "rol r29 \n\t"
20961        "add r23, r24 \n\t"
20962        "adc r28, r22 \n\t"
20963        "adc r29, r25 \n\t"
20964        "st z+, r23 \n\t"
20965
20966        "ldi r22, 0 \n\t"
20967        "mul r17, r13 \n\t"
20968        "mov r23, r0 \n\t"
20969        "mov r24, r1 \n\t"
20970        "mul r18, r12 \n\t"
20971        "add r23, r0 \n\t"
20972        "adc r24, r1 \n\t"
20973        "adc r22, r25 \n\t"
20974        "mul r19, r11 \n\t"
20975        "add r23, r0 \n\t"
20976        "adc r24, r1 \n\t"
20977        "adc r22, r25 \n\t"
20978        "mul r20, r10 \n\t"
20979        "add r23, r0 \n\t"
20980        "adc r24, r1 \n\t"
20981        "adc r22, r25 \n\t"
20982        "mul r21, r9 \n\t"
20983        "add r23, r0 \n\t"
20984        "adc r24, r1 \n\t"
20985        "adc r22, r25 \n\t"
20986        "mul r2, r8 \n\t"
20987        "add r23, r0 \n\t"
20988        "adc r24, r1 \n\t"
20989        "adc r22, r25 \n\t"
20990        "mul r3, r7 \n\t"
20991        "add r23, r0 \n\t"
20992        "adc r24, r1 \n\t"
20993        "adc r22, r25 \n\t"
20994        "mul r4, r6 \n\t"
20995        "add r23, r0 \n\t"
20996        "adc r24, r1 \n\t"
20997        "adc r22, r25 \n\t"
20998        "lsl r23 \n\t"
20999        "rol r24 \n\t"
21000        "rol r22 \n\t"
21001        "mul r5, r5 \n\t"
21002        "add r23, r0 \n\t"
21003        "adc r24, r1 \n\t"
21004        "adc r22, r25 \n\t"
21005        "add r23, r28 \n\t"
21006        "adc r24, r29 \n\t"
21007        "adc r22, r25 \n\t"
21008        "st z+, r23 \n\t"
21009
21010        "ldi r29, 0 \n\t"
21011        "mul r18, r13 \n\t"
21012        "mov r23, r0 \n\t"
21013        "mov r28, r1 \n\t"
21014        "mul r19, r12 \n\t"
21015        "add r23, r0 \n\t"
21016        "adc r28, r1 \n\t"
21017        "adc r29, r25 \n\t"
21018        "mul r20, r11 \n\t"
21019        "add r23, r0 \n\t"
21020        "adc r28, r1 \n\t"
21021        "adc r29, r25 \n\t"
21022        "mul r21, r10 \n\t"
21023        "add r23, r0 \n\t"
21024        "adc r28, r1 \n\t"
21025        "adc r29, r25 \n\t"
21026        "mul r2, r9 \n\t"
21027        "add r23, r0 \n\t"
21028        "adc r28, r1 \n\t"
21029        "adc r29, r25 \n\t"
21030        "mul r3, r8 \n\t"
21031        "add r23, r0 \n\t"
21032        "adc r28, r1 \n\t"
21033        "adc r29, r25 \n\t"
21034        "mul r4, r7 \n\t"
21035        "add r23, r0 \n\t"
21036        "adc r28, r1 \n\t"
21037        "adc r29, r25 \n\t"
21038        "mul r5, r6 \n\t"
21039        "add r23, r0 \n\t"
21040        "adc r28, r1 \n\t"
21041        "adc r29, r25 \n\t"
21042        "lsl r23 \n\t"
21043        "rol r28 \n\t"
21044        "rol r29 \n\t"
21045        "add r23, r24 \n\t"
21046        "adc r28, r22 \n\t"
21047        "adc r29, r25 \n\t"
21048        "st z+, r23 \n\t"
21049
21050        "ldi r22, 0 \n\t"
21051        "mul r19, r13 \n\t"
21052        "mov r23, r0 \n\t"
21053        "mov r24, r1 \n\t"
21054        "mul r20, r12 \n\t"
21055        "add r23, r0 \n\t"
21056        "adc r24, r1 \n\t"
21057        "adc r22, r25 \n\t"
21058        "mul r21, r11 \n\t"
21059        "add r23, r0 \n\t"
21060        "adc r24, r1 \n\t"
21061        "adc r22, r25 \n\t"
21062        "mul r2, r10 \n\t"
21063        "add r23, r0 \n\t"
21064        "adc r24, r1 \n\t"
21065        "adc r22, r25 \n\t"
21066        "mul r3, r9 \n\t"
21067        "add r23, r0 \n\t"
21068        "adc r24, r1 \n\t"
21069        "adc r22, r25 \n\t"
21070        "mul r4, r8 \n\t"
21071        "add r23, r0 \n\t"
21072        "adc r24, r1 \n\t"
21073        "adc r22, r25 \n\t"
21074        "mul r5, r7 \n\t"
21075        "add r23, r0 \n\t"
21076        "adc r24, r1 \n\t"
21077        "adc r22, r25 \n\t"
21078        "lsl r23 \n\t"
21079        "rol r24 \n\t"
21080        "rol r22 \n\t"
21081        "mul r6, r6 \n\t"
21082        "add r23, r0 \n\t"
21083        "adc r24, r1 \n\t"
21084        "adc r22, r25 \n\t"
21085        "add r23, r28 \n\t"
21086        "adc r24, r29 \n\t"
21087        "adc r22, r25 \n\t"
21088        "st z+, r23 \n\t"
21089
21090        "ldi r29, 0 \n\t"
21091        "mul r20, r13 \n\t"
21092        "mov r23, r0 \n\t"
21093        "mov r28, r1 \n\t"
21094        "mul r21, r12 \n\t"
21095        "add r23, r0 \n\t"
21096        "adc r28, r1 \n\t"
21097        "adc r29, r25 \n\t"
21098        "mul r2, r11 \n\t"
21099        "add r23, r0 \n\t"
21100        "adc r28, r1 \n\t"
21101        "adc r29, r25 \n\t"
21102        "mul r3, r10 \n\t"
21103        "add r23, r0 \n\t"
21104        "adc r28, r1 \n\t"
21105        "adc r29, r25 \n\t"
21106        "mul r4, r9 \n\t"
21107        "add r23, r0 \n\t"
21108        "adc r28, r1 \n\t"
21109        "adc r29, r25 \n\t"
21110        "mul r5, r8 \n\t"
21111        "add r23, r0 \n\t"
21112        "adc r28, r1 \n\t"
21113        "adc r29, r25 \n\t"
21114        "mul r6, r7 \n\t"
21115        "add r23, r0 \n\t"
21116        "adc r28, r1 \n\t"
21117        "adc r29, r25 \n\t"
21118        "lsl r23 \n\t"
21119        "rol r28 \n\t"
21120        "rol r29 \n\t"
21121        "add r23, r24 \n\t"
21122        "adc r28, r22 \n\t"
21123        "adc r29, r25 \n\t"
21124        "st z+, r23 \n\t"
21125
21126        "ldi r22, 0 \n\t"
21127        "mul r21, r13 \n\t"
21128        "mov r23, r0 \n\t"
21129        "mov r24, r1 \n\t"
21130        "mul r2, r12 \n\t"
21131        "add r23, r0 \n\t"
21132        "adc r24, r1 \n\t"
21133        "adc r22, r25 \n\t"
21134        "mul r3, r11 \n\t"
21135        "add r23, r0 \n\t"
21136        "adc r24, r1 \n\t"
21137        "adc r22, r25 \n\t"
21138        "mul r4, r10 \n\t"
21139        "add r23, r0 \n\t"
21140        "adc r24, r1 \n\t"
21141        "adc r22, r25 \n\t"
21142        "mul r5, r9 \n\t"
21143        "add r23, r0 \n\t"
21144        "adc r24, r1 \n\t"
21145        "adc r22, r25 \n\t"
21146        "mul r6, r8 \n\t"
21147        "add r23, r0 \n\t"
21148        "adc r24, r1 \n\t"
21149        "adc r22, r25 \n\t"
21150        "lsl r23 \n\t"
21151        "rol r24 \n\t"
21152        "rol r22 \n\t"
21153        "mul r7, r7 \n\t"
21154        "add r23, r0 \n\t"
21155        "adc r24, r1 \n\t"
21156        "adc r22, r25 \n\t"
21157        "add r23, r28 \n\t"
21158        "adc r24, r29 \n\t"
21159        "adc r22, r25 \n\t"
21160        "st z+, r23 \n\t"
21161
21162        "ldi r29, 0 \n\t"
21163        "mul r2, r13 \n\t"
21164        "mov r23, r0 \n\t"
21165        "mov r28, r1 \n\t"
21166        "mul r3, r12 \n\t"
21167        "add r23, r0 \n\t"
21168        "adc r28, r1 \n\t"
21169        "adc r29, r25 \n\t"
21170        "mul r4, r11 \n\t"
21171        "add r23, r0 \n\t"
21172        "adc r28, r1 \n\t"
21173        "adc r29, r25 \n\t"
21174        "mul r5, r10 \n\t"
21175        "add r23, r0 \n\t"
21176        "adc r28, r1 \n\t"
21177        "adc r29, r25 \n\t"
21178        "mul r6, r9 \n\t"
21179        "add r23, r0 \n\t"
21180        "adc r28, r1 \n\t"
21181        "adc r29, r25 \n\t"
21182        "mul r7, r8 \n\t"
21183        "add r23, r0 \n\t"
21184        "adc r28, r1 \n\t"
21185        "adc r29, r25 \n\t"
21186        "lsl r23 \n\t"
21187        "rol r28 \n\t"
21188        "rol r29 \n\t"
21189        "add r23, r24 \n\t"
21190        "adc r28, r22 \n\t"
21191        "adc r29, r25 \n\t"
21192        "st z+, r23 \n\t"
21193
21194        "ldi r22, 0 \n\t"
21195        "mul r3, r13 \n\t"
21196        "mov r23, r0 \n\t"
21197        "mov r24, r1 \n\t"
21198        "mul r4, r12 \n\t"
21199        "add r23, r0 \n\t"
21200        "adc r24, r1 \n\t"
21201        "adc r22, r25 \n\t"
21202        "mul r5, r11 \n\t"
21203        "add r23, r0 \n\t"
21204        "adc r24, r1 \n\t"
21205        "adc r22, r25 \n\t"
21206        "mul r6, r10 \n\t"
21207        "add r23, r0 \n\t"
21208        "adc r24, r1 \n\t"
21209        "adc r22, r25 \n\t"
21210        "mul r7, r9 \n\t"
21211        "add r23, r0 \n\t"
21212        "adc r24, r1 \n\t"
21213        "adc r22, r25 \n\t"
21214        "lsl r23 \n\t"
21215        "rol r24 \n\t"
21216        "rol r22 \n\t"
21217        "mul r8, r8 \n\t"
21218        "add r23, r0 \n\t"
21219        "adc r24, r1 \n\t"
21220        "adc r22, r25 \n\t"
21221        "add r23, r28 \n\t"
21222        "adc r24, r29 \n\t"
21223        "adc r22, r25 \n\t"
21224        "st z+, r23 \n\t"
21225
21226        "ldi r29, 0 \n\t"
21227        "mul r4, r13 \n\t"
21228        "mov r23, r0 \n\t"
21229        "mov r28, r1 \n\t"
21230        "mul r5, r12 \n\t"
21231        "add r23, r0 \n\t"
21232        "adc r28, r1 \n\t"
21233        "adc r29, r25 \n\t"
21234        "mul r6, r11 \n\t"
21235        "add r23, r0 \n\t"
21236        "adc r28, r1 \n\t"
21237        "adc r29, r25 \n\t"
21238        "mul r7, r10 \n\t"
21239        "add r23, r0 \n\t"
21240        "adc r28, r1 \n\t"
21241        "adc r29, r25 \n\t"
21242        "mul r8, r9 \n\t"
21243        "add r23, r0 \n\t"
21244        "adc r28, r1 \n\t"
21245        "adc r29, r25 \n\t"
21246        "lsl r23 \n\t"
21247        "rol r28 \n\t"
21248        "rol r29 \n\t"
21249        "add r23, r24 \n\t"
21250        "adc r28, r22 \n\t"
21251        "adc r29, r25 \n\t"
21252        "st z+, r23 \n\t"
21253
21254        "ldi r22, 0 \n\t"
21255        "mul r5, r13 \n\t"
21256        "mov r23, r0 \n\t"
21257        "mov r24, r1 \n\t"
21258        "mul r6, r12 \n\t"
21259        "add r23, r0 \n\t"
21260        "adc r24, r1 \n\t"
21261        "adc r22, r25 \n\t"
21262        "mul r7, r11 \n\t"
21263        "add r23, r0 \n\t"
21264        "adc r24, r1 \n\t"
21265        "adc r22, r25 \n\t"
21266        "mul r8, r10 \n\t"
21267        "add r23, r0 \n\t"
21268        "adc r24, r1 \n\t"
21269        "adc r22, r25 \n\t"
21270        "lsl r23 \n\t"
21271        "rol r24 \n\t"
21272        "rol r22 \n\t"
21273        "mul r9, r9 \n\t"
21274        "add r23, r0 \n\t"
21275        "adc r24, r1 \n\t"
21276        "adc r22, r25 \n\t"
21277        "add r23, r28 \n\t"
21278        "adc r24, r29 \n\t"
21279        "adc r22, r25 \n\t"
21280        "st z+, r23 \n\t"
21281
21282        "ldi r29, 0 \n\t"
21283        "mul r6, r13 \n\t"
21284        "mov r23, r0 \n\t"
21285        "mov r28, r1 \n\t"
21286        "mul r7, r12 \n\t"
21287        "add r23, r0 \n\t"
21288        "adc r28, r1 \n\t"
21289        "adc r29, r25 \n\t"
21290        "mul r8, r11 \n\t"
21291        "add r23, r0 \n\t"
21292        "adc r28, r1 \n\t"
21293        "adc r29, r25 \n\t"
21294        "mul r9, r10 \n\t"
21295        "add r23, r0 \n\t"
21296        "adc r28, r1 \n\t"
21297        "adc r29, r25 \n\t"
21298        "lsl r23 \n\t"
21299        "rol r28 \n\t"
21300        "rol r29 \n\t"
21301        "add r23, r24 \n\t"
21302        "adc r28, r22 \n\t"
21303        "adc r29, r25 \n\t"
21304        "st z+, r23 \n\t"
21305
21306        "ldi r22, 0 \n\t"
21307        "mul r7, r13 \n\t"
21308        "mov r23, r0 \n\t"
21309        "mov r24, r1 \n\t"
21310        "mul r8, r12 \n\t"
21311        "add r23, r0 \n\t"
21312        "adc r24, r1 \n\t"
21313        "adc r22, r25 \n\t"
21314        "mul r9, r11 \n\t"
21315        "add r23, r0 \n\t"
21316        "adc r24, r1 \n\t"
21317        "adc r22, r25 \n\t"
21318        "lsl r23 \n\t"
21319        "rol r24 \n\t"
21320        "rol r22 \n\t"
21321        "mul r10, r10 \n\t"
21322        "add r23, r0 \n\t"
21323        "adc r24, r1 \n\t"
21324        "adc r22, r25 \n\t"
21325        "add r23, r28 \n\t"
21326        "adc r24, r29 \n\t"
21327        "adc r22, r25 \n\t"
21328        "st z+, r23 \n\t"
21329
21330        "ldi r29, 0 \n\t"
21331        "mul r8, r13 \n\t"
21332        "mov r23, r0 \n\t"
21333        "mov r28, r1 \n\t"
21334        "mul r9, r12 \n\t"
21335        "add r23, r0 \n\t"
21336        "adc r28, r1 \n\t"
21337        "adc r29, r25 \n\t"
21338        "mul r10, r11 \n\t"
21339        "add r23, r0 \n\t"
21340        "adc r28, r1 \n\t"
21341        "adc r29, r25 \n\t"
21342        "lsl r23 \n\t"
21343        "rol r28 \n\t"
21344        "rol r29 \n\t"
21345        "add r23, r24 \n\t"
21346        "adc r28, r22 \n\t"
21347        "adc r29, r25 \n\t"
21348        "st z+, r23 \n\t"
21349
21350        "ldi r22, 0 \n\t"
21351        "mul r9, r13 \n\t"
21352        "mov r23, r0 \n\t"
21353        "mov r24, r1 \n\t"
21354        "mul r10, r12 \n\t"
21355        "add r23, r0 \n\t"
21356        "adc r24, r1 \n\t"
21357        "adc r22, r25 \n\t"
21358        "lsl r23 \n\t"
21359        "rol r24 \n\t"
21360        "rol r22 \n\t"
21361        "mul r11, r11 \n\t"
21362        "add r23, r0 \n\t"
21363        "adc r24, r1 \n\t"
21364        "adc r22, r25 \n\t"
21365        "add r23, r28 \n\t"
21366        "adc r24, r29 \n\t"
21367        "adc r22, r25 \n\t"
21368        "st z+, r23 \n\t"
21369
21370        "ldi r29, 0 \n\t"
21371        "mul r10, r13 \n\t"
21372        "mov r23, r0 \n\t"
21373        "mov r28, r1 \n\t"
21374        "mul r11, r12 \n\t"
21375        "add r23, r0 \n\t"
21376        "adc r28, r1 \n\t"
21377        "adc r29, r25 \n\t"
21378        "lsl r23 \n\t"
21379        "rol r28 \n\t"
21380        "rol r29 \n\t"
21381        "add r23, r24 \n\t"
21382        "adc r28, r22 \n\t"
21383        "adc r29, r25 \n\t"
21384        "st z+, r23 \n\t"
21385
21386        "ldi r23, 0 \n\t"
21387        "mul r11, r13 \n\t"
21388        "add r28, r0 \n\t"
21389        "adc r29, r1 \n\t"
21390        "adc r23, r25 \n\t"
21391        "add r28, r0 \n\t"
21392        "adc r29, r1 \n\t"
21393        "adc r23, r25 \n\t"
21394        "mul r12, r12 \n\t"
21395        "add r28, r0 \n\t"
21396        "adc r29, r1 \n\t"
21397        "adc r23, r25 \n\t"
21398        "st z+, r28 \n\t"
21399
21400        "ldi r28, 0 \n\t"
21401        "mul r12, r13 \n\t"
21402        "add r29, r0 \n\t"
21403        "adc r23, r1 \n\t"
21404        "adc r28, r25 \n\t"
21405        "add r29, r0 \n\t"
21406        "adc r23, r1 \n\t"
21407        "adc r28, r25 \n\t"
21408        "st z+, r29 \n\t"
21409
21410        "mul r13, r13 \n\t"
21411        "add r23, r0 \n\t"
21412        "adc r28, r1 \n\t"
21413        "st z+, r23 \n\t"
21414        "st z+, r28 \n\t"
21415        "eor r1, r1 \n\t"
21416        : "+x" (left), "+z" (result)
21417        :
21418        : "r0", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10",
21419          "r11", "r12", "r13", "r14", "r15", "r16", "r17", "r18", "r19", "r20",
21420          "r21", "r22", "r23", "r24", "r25", "r28", "r29", "cc", "memory"
21421    );
21422}
21423#define asm_square 1
21424
21425#endif /* uECC_BYTES == xx */
21426#endif /* uECC_SQUARE_FUNC */
21427
21428static void vli_modSub_fast(uint8_t *result, const uint8_t *left, const uint8_t *right) {
21429    uint8_t t1, t2;
21430    __asm__ volatile (
21431        "push r28 \n\t" /* Save Y */
21432        "push r29 \n\t"
21433
21434        "ld %[t1], x+ \n\t"     /* Load left word. */
21435        "ld %[t2], y+ \n\t"     /* Load right word. */
21436        "sub %[t1], %[t2] \n\t" /* Subtract the first word. */
21437        "st z+, %[t1] \n\t"     /* Store the first result word. */
21438
21439        /* Now we just do the remaining words with the carry bit (using SBC) */
21440        REPEAT(DEC(uECC_BYTES),
21441            "ld %[t1], x+ \n\t"
21442            "ld %[t2], y+ \n\t"
21443            "sbc %[t1], %[t2] \n\t"
21444            "st z+, %[t1] \n\t")
21445
21446        "brcs 1f \n\t"   /* If borrow is set, then we need to add */
21447        "rjmp done \n\t" /* otherwise we are done */
21448        "1: \n\t"
21449
21450        "sbiw r30, " STR(uECC_BYTES) " \n\t" /* make z point at result again */
21451        "ldi r28, lo8(curve_p) \n\t" /* make y point at curve_p */
21452    	"ldi r29, hi8(curve_p) \n\t"
21453
21454    	/* do the addition */
21455    	"ld %[t1], z \n\t"
21456        "ld %[t2], y+ \n\t"
21457        "add %[t1], %[t2] \n\t"
21458        "st z+, %[t1] \n\t"
21459        REPEAT(DEC(uECC_BYTES),
21460            "ld %[t1], z \n\t"
21461            "ld %[t2], y+ \n\t"
21462            "adc %[t1], %[t2] \n\t"
21463            "st z+, %[t1] \n\t")
21464
21465        "done: \n\t"
21466        "pop r29 \n\t" /* Restore Y */
21467        "pop r28 \n\t"
21468
21469        : "+z" (result), "+x" (left),
21470          [t1] "=&r" (t1), [t2] "=&r" (t2)
21471        : "y" (right)
21472        : "cc", "memory"
21473    );
21474}
21475#define asm_modSub_fast 1
21476
21477#if uECC_CURVE == uECC_secp160r1
21478static void vli_mmod_fast(uint8_t *RESTRICT result, uint8_t *RESTRICT product) {
21479    uint8_t carry = 0;
21480    __asm__ volatile (
21481        "in r30, __SP_L__ \n\t"
21482    	"in r31, __SP_H__ \n\t"
21483    	"sbiw r30, 24 \n\t"
21484    	"in r0, __SREG__ \n\t"
21485    	"cli \n\t"
21486    	"out __SP_H__, r31 \n\t"
21487    	"out __SREG__, r0 \n\t"
21488    	"out __SP_L__, r30 \n\t"
21489
21490    	"adiw r30, 25 \n\t" /* we are shifting by 31 bits, so shift over 4 bytes
21491    	                       (+ 1 since z initially points below the stack) */
21492        "adiw r26, 40 \n\t" /* end of product */
21493        "ld r18, -x \n\t"   /* Load word. */
21494        "lsr r18 \n\t"      /* Shift. */
21495        "st -z, r18 \n\t"   /* Store the first result word. */
21496
21497        /* Now we just do the remaining words with the carry bit (using ROR) */
21498        REPEAT(19,
21499            "ld r18, -x \n\t"
21500            "ror r18 \n\t"
21501            "st -z, r18 \n\t")
21502
21503        "eor r18, r18 \n\t" /* r18 = 0 */
21504        "ror r18 \n\t"      /* get last bit */
21505        "st -z, r18 \n\t"   /* store it */
21506
21507        "sbiw r30, 3 \n\t" /* move z back to point at tmp */
21508        /* now we add right */
21509        "ld r18, x+ \n\t"
21510        "st z+, r18 \n\t" /* the first 3 bytes do not need to be added */
21511        "ld r18, x+ \n\t"
21512        "st z+, r18 \n\t"
21513        "ld r18, x+ \n\t"
21514        "st z+, r18 \n\t"
21515
21516        "ld r18, x+ \n\t"
21517        "ld r19, z \n\t"
21518        "add r18, r19 \n\t"
21519        "st z+, r18 \n\t"
21520
21521        /* Now we just do the remaining words with the carry bit (using ADC) */
21522        REPEAT(16,
21523            "ld r18, x+ \n\t"
21524            "ld r19, z \n\t"
21525            "adc r18, r19 \n\t"
21526            "st z+, r18 \n\t")
21527
21528        /* Propagate over the remaining bytes of result */
21529        "ld r18, z \n\t"
21530        "adc r18, r1 \n\t"
21531        "st z+, r18 \n\t"
21532
21533        "ld r18, z \n\t"
21534        "adc r18, r1 \n\t"
21535        "st z+, r18 \n\t"
21536
21537        "ld r18, z \n\t"
21538        "adc r18, r1 \n\t"
21539        "st z+, r18 \n\t"
21540
21541        "ld r18, z \n\t"
21542        "adc r18, r1 \n\t"
21543        "st z+, r18 \n\t"
21544
21545        "sbiw r30, 24 \n\t" /* move z back to point at tmp */
21546        "sbiw r26, 40 \n\t" /* move x back to point at product */
21547
21548        /* add low bytes of tmp to product, storing in result */
21549        "ld r18, z+ \n\t"
21550        "ld r19, x+ \n\t"
21551        "add r18, r19 \n\t"
21552        "st y+, r18 \n\t"
21553        REPEAT(19,
21554            "ld r18, z+ \n\t"
21555            "ld r19, x+ \n\t"
21556            "adc r18, r19 \n\t"
21557            "st y+, r18 \n\t")
21558        "adc %[carry], __zero_reg__ \n\t" /* Store carry bit (carry flag is cleared). */
21559        /* at this point x is at the end of product, y is at the end of result,
21560           z is 20 bytes into tmp */
21561        "sbiw r28, 20 \n\t" /* move y back to point at result */
21562        "adiw r30, 4 \n\t"  /* move z to point to the end of tmp */
21563
21564        /* do omega_mult again with the 4 relevant bytes */
21565        /* z points to the end of tmp, x points to the end of product */
21566        "ld r18, -z \n\t" /* Load word. */
21567        "lsr r18 \n\t"    /* Shift. */
21568        "st -x, r18 \n\t" /* Store the first result word. */
21569
21570        "ld r18, -z \n\t"
21571        "ror r18 \n\t"
21572        "st -x, r18 \n\t"
21573        "ld r18, -z \n\t"
21574        "ror r18 \n\t"
21575        "st -x, r18 \n\t"
21576        "ld r18, -z \n\t"
21577        "ror r18 \n\t"
21578        "st -x, r18 \n\t"
21579
21580        "eor r18, r18 \n\t" /* r18 = 0 */
21581        "ror r18 \n\t"      /* get last bit */
21582        "st -x, r18 \n\t"   /* store it */
21583
21584        "sbiw r26, 3 \n\t" /* move x back to point at beginning */
21585        /* now we add a copy of the 4 bytes */
21586        "ld r18, z+ \n\t"
21587        "st x+, r18 \n\t" /* the first 3 bytes do not need to be added */
21588        "ld r18, z+ \n\t"
21589        "st x+, r18 \n\t"
21590        "ld r18, z+ \n\t"
21591        "st x+, r18 \n\t"
21592
21593        "ld r18, z+ \n\t"
21594        "ld r19, x \n\t"
21595        "add r18, r19 \n\t"
21596        "st x+, r18 \n\t"
21597
21598        /* Propagate over the remaining bytes */
21599        "ld r18, x \n\t"
21600        "adc r18, r1 \n\t"
21601        "st x+, r18 \n\t"
21602
21603        "ld r18, x \n\t"
21604        "adc r18, r1 \n\t"
21605        "st x+, r18 \n\t"
21606
21607        "ld r18, x \n\t"
21608        "adc r18, r1 \n\t"
21609        "st x+, r18 \n\t"
21610
21611        "ld r18, x \n\t"
21612        "adc r18, r1 \n\t"
21613        "st x+, r18 \n\t"
21614
21615        /* now z points to the end of tmp, x points to the end of product
21616           (y still points at result) */
21617        "sbiw r26, 8 \n\t" /* move x back to point at beginning of actual data */
21618        /* add into result */
21619        "ld r18, x+ \n\t"
21620        "ld r19, y \n\t"
21621        "add r18, r19 \n\t"
21622        "st y+, r18 \n\t"
21623        REPEAT(7,
21624            "ld r18, x+ \n\t"
21625            "ld r19, y \n\t"
21626            "adc r18, r19 \n\t"
21627            "st y+, r18 \n\t")
21628
21629        /* Done adding, now propagate carry bit */
21630        REPEAT(12,
21631            "ld r18, y \n\t"
21632            "adc r18, __zero_reg__ \n\t"
21633            "st y+, r18 \n\t")
21634
21635        "adc %[carry], __zero_reg__ \n\t" /* Store carry bit (carry flag is cleared). */
21636        "sbiw r28, 20 \n\t" /* move y back to point at result */
21637
21638        "sbiw r30, 1 \n\t" /* fix stack pointer */
21639    	"in r0, __SREG__ \n\t"
21640    	"cli \n\t"
21641    	"out __SP_H__, r31 \n\t"
21642    	"out __SREG__, r0 \n\t"
21643    	"out __SP_L__, r30 \n\t"
21644
21645        : "+x" (product), [carry] "+r" (carry)
21646        : "y" (result)
21647        : "r0", "r18", "r19", "r30", "r31", "cc", "memory"
21648    );
21649
21650    if (carry > 0) {
21651        --carry;
21652        vli_sub(result, result, curve_p);
21653    }
21654    if (carry > 0) {
21655        vli_sub(result, result, curve_p);
21656    }
21657    if (vli_cmp(result, curve_p) > 0) {
21658        vli_sub(result, result, curve_p);
21659    }
21660}
21661#define asm_mmod_fast 1
21662
21663#elif (uECC_CURVE == uECC_secp256k1)
21664static void vli_mmod_fast(uint8_t *RESTRICT result, uint8_t *RESTRICT product) {
21665    uint8_t carry = 0;
21666    __asm__ volatile (
21667        "in r30, __SP_L__ \n\t"
21668    	"in r31, __SP_H__ \n\t"
21669    	"sbiw r30, 37 \n\t"
21670    	"in r0, __SREG__ \n\t"
21671    	"cli \n\t"
21672    	"out __SP_H__, r31 \n\t"
21673    	"out __SREG__, r0 \n\t"
21674    	"out __SP_L__, r30 \n\t"
21675
21676    	"adiw r30, 1 \n\t"  /* add 1 since z initially points below the stack */
21677        "adiw r26, 32 \n\t" /* product + uECC_WORDS */
21678        "ldi r25, 0x03 \n\t"
21679        "ldi r24, 0xD1 \n\t"
21680        "ld r18, x+ \n\t"
21681        "ld r19, x+ \n\t"
21682        "ld r20, x+ \n\t"
21683        "ld r21, x+ \n\t"
21684
21685        "mul r24, r18 \n\t"
21686        "st z+, r0 \n\t"
21687        "mov r22, r1 \n\t"
21688        "ldi r23, 0 \n\t"
21689
21690        "mul r24, r19 \n\t"
21691        "add r22, r0 \n\t"
21692        "adc r23, r1 \n\t" /* can't overflow */
21693        "mul r25, r18 \n\t"
21694        "add r22, r0 \n\t"
21695        "adc r23, r1 \n\t" /* can't overflow */
21696        "st z+, r22 \n\t"
21697        "ldi r22, 0 \n\t"
21698
21699        "mul r24, r20 \n\t"
21700        "add r23, r0 \n\t"
21701        "adc r22, r1 \n\t"
21702        "mul r25, r19 \n\t"
21703        "add r23, r0 \n\t"
21704        "adc r22, r1 \n\t"
21705        "st z+, r23 \n\t"
21706        "ldi r23, 0 \n\t"
21707
21708        "mul r24, r21 \n\t"
21709        "add r22, r0 \n\t"
21710        "adc r23, r1 \n\t"
21711        "mul r25, r20 \n\t"
21712        "add r22, r0 \n\t"
21713        "adc r23, r1 \n\t"
21714        "st z+, r22 \n\t"
21715        "ldi r22, 0 \n\t"
21716
21717        /* now we start adding the 2^32 part as well */
21718        "add r23, r18 \n\t" // 28
21719        "adc r22, r22 \n\t"
21720        "ld r18, x+ \n\t"
21721        "mul r24, r18 \n\t"
21722        "add r23, r0 \n\t"
21723        "adc r22, r1 \n\t"
21724        "mul r25, r21 \n\t"
21725        "add r23, r0 \n\t"
21726        "adc r22, r1 \n\t"
21727        "st z+, r23 \n\t"
21728        "ldi r23, 0 \n\t"
21729
21730        "add r22, r19 \n\t" // 27
21731        "adc r23, r23 \n\t"
21732        "ld r19, x+ \n\t"
21733        "mul r24, r19 \n\t"
21734        "add r22, r0 \n\t"
21735        "adc r23, r1 \n\t"
21736        "mul r25, r18 \n\t"
21737        "add r22, r0 \n\t"
21738        "adc r23, r1 \n\t"
21739        "st z+, r22 \n\t"
21740        "ldi r22, 0 \n\t"
21741
21742        REPEAT(6, // 26 - 3
21743            "add r23, r20 \n\t"
21744            "adc r22, r22 \n\t"
21745            "ld r20, x+ \n\t"
21746            "mul r24, r20 \n\t"
21747            "add r23, r0 \n\t"
21748            "adc r22, r1 \n\t"
21749            "mul r25, r19 \n\t"
21750            "add r23, r0 \n\t"
21751            "adc r22, r1 \n\t"
21752            "st z+, r23 \n\t"
21753            "ldi r23, 0 \n\t"
21754
21755            "add r22, r21 \n\t"
21756            "adc r23, r23 \n\t"
21757            "ld r21, x+ \n\t"
21758            "mul r24, r21 \n\t"
21759            "add r22, r0 \n\t"
21760            "adc r23, r1 \n\t"
21761            "mul r25, r20 \n\t"
21762            "add r22, r0 \n\t"
21763            "adc r23, r1 \n\t"
21764            "st z+, r22 \n\t"
21765            "ldi r22, 0 \n\t"
21766
21767            "add r23, r18 \n\t"
21768            "adc r22, r22 \n\t"
21769            "ld r18, x+ \n\t"
21770            "mul r24, r18 \n\t"
21771            "add r23, r0 \n\t"
21772            "adc r22, r1 \n\t"
21773            "mul r25, r21 \n\t"
21774            "add r23, r0 \n\t"
21775            "adc r22, r1 \n\t"
21776            "st z+, r23 \n\t"
21777            "ldi r23, 0 \n\t"
21778
21779            "add r22, r19 \n\t"
21780            "adc r23, r23 \n\t"
21781            "ld r19, x+ \n\t"
21782            "mul r24, r19 \n\t"
21783            "add r22, r0 \n\t"
21784            "adc r23, r1 \n\t"
21785            "mul r25, r18 \n\t"
21786            "add r22, r0 \n\t"
21787            "adc r23, r1 \n\t"
21788            "st z+, r22 \n\t"
21789            "ldi r22, 0 \n\t")
21790
21791        "add r23, r20 \n\t" // 2
21792        "adc r22, r22 \n\t"
21793        "ld r20, x+ \n\t"
21794        "mul r24, r20 \n\t"
21795        "add r23, r0 \n\t"
21796        "adc r22, r1 \n\t"
21797        "mul r25, r19 \n\t"
21798        "add r23, r0 \n\t"
21799        "adc r22, r1 \n\t"
21800        "st z+, r23 \n\t"
21801        "ldi r23, 0 \n\t"
21802
21803        "add r22, r21 \n\t" // 1
21804        "adc r23, r23 \n\t"
21805        "ld r21, x+ \n\t"
21806        "mul r24, r21 \n\t"
21807        "add r22, r0 \n\t"
21808        "adc r23, r1 \n\t"
21809        "mul r25, r20 \n\t"
21810        "add r22, r0 \n\t"
21811        "adc r23, r1 \n\t"
21812        "st z+, r22 \n\t"
21813        "ldi r22, 0 \n\t"
21814
21815        /* Now finish the carries etc */
21816        "add r23, r18 \n\t"
21817        "adc r22, r22 \n\t"
21818        "mul r25, r21 \n\t"
21819        "add r23, r0 \n\t"
21820        "adc r22, r1 \n\t"
21821        "st z+, r23 \n\t"
21822        "ldi r23, 0 \n\t"
21823
21824        "add r22, r19 \n\t"
21825        "adc r23, r23 \n\t"
21826        "st z+, r22 \n\t"
21827        "ldi r22, 0 \n\t"
21828
21829        "add r23, r20 \n\t"
21830        "adc r22, r22 \n\t"
21831        "st z+, r23 \n\t"
21832        "ldi r23, 0 \n\t"
21833
21834        "add r22, r21 \n\t"
21835        "adc r23, r23 \n\t"
21836        "st z+, r22 \n\t"
21837        "st z+, r23 \n\t"
21838        "eor r1, r1 \n\t" /* make r1 be 0 again */
21839
21840        "sbiw r30, 37 \n\t" /* move z back to point at tmp */
21841        "subi r26, 64 \n\t" /* move x back to point at product */
21842        "sbc r27, __zero_reg__ \n\t"
21843
21844        /* add low bytes of tmp to product, storing in result */
21845        "ld r18, z+ \n\t"
21846        "ld r19, x+ \n\t"
21847        "add r18, r19 \n\t"
21848        "st y+, r18 \n\t"
21849        REPEAT(31,
21850            "ld r18, z+ \n\t"
21851            "ld r19, x+ \n\t"
21852            "adc r18, r19 \n\t"
21853            "st y+, r18 \n\t")
21854
21855        "adc %[carry], __zero_reg__ \n\t" /* Store carry bit (carry flag is cleared). */
21856        /* at this point x is at the end of product, y is at the end of result,
21857           z is 32 bytes into tmp */
21858        "sbiw r28, 32 \n\t" /* move y back to point at result */
21859
21860        /* do omega_mult again with the 5 relevant bytes */
21861        /* z points to tmp + uECC_WORDS, x points to the end of product */
21862        "sbiw r26, 32 \n\t" /* shift x back to point into the product buffer
21863                               (we can overwrite it now) */
21864        "ld r18, z+ \n\t"
21865        "ld r19, z+ \n\t"
21866        "ld r20, z+ \n\t"
21867        "ld r21, z+ \n\t"
21868
21869        "mul r24, r18 \n\t"
21870        "st x+, r0 \n\t"
21871        "mov r22, r1 \n\t"
21872        "ldi r23, 0 \n\t"
21873
21874        "mul r24, r19 \n\t"
21875        "add r22, r0 \n\t"
21876        "adc r23, r1 \n\t" /* can't overflow */
21877        "mul r25, r18 \n\t"
21878        "add r22, r0 \n\t"
21879        "adc r23, r1 \n\t" /* can't overflow */
21880        "st x+, r22 \n\t"
21881        "ldi r22, 0 \n\t"
21882
21883        "mul r24, r20 \n\t"
21884        "add r23, r0 \n\t"
21885        "adc r22, r1 \n\t"
21886        "mul r25, r19 \n\t"
21887        "add r23, r0 \n\t"
21888        "adc r22, r1 \n\t"
21889        "st x+, r23 \n\t"
21890        "ldi r23, 0 \n\t"
21891
21892        "mul r24, r21 \n\t"
21893        "add r22, r0 \n\t"
21894        "adc r23, r1 \n\t"
21895        "mul r25, r20 \n\t"
21896        "add r22, r0 \n\t"
21897        "adc r23, r1 \n\t"
21898        "st x+, r22 \n\t"
21899        "ldi r22, 0 \n\t"
21900
21901        "add r23, r18 \n\t"
21902        "adc r22, r22 \n\t"
21903        "ld r18, z+ \n\t"
21904        "mul r24, r18 \n\t"
21905        "add r23, r0 \n\t"
21906        "adc r22, r1 \n\t"
21907        "mul r25, r21 \n\t"
21908        "add r23, r0 \n\t"
21909        "adc r22, r1 \n\t"
21910        "st x+, r23 \n\t"
21911        "ldi r23, 0 \n\t"
21912
21913        /* Now finish the carries etc */
21914        "add r22, r19 \n\t"
21915        "adc r23, r23 \n\t"
21916        "mul r25, r18 \n\t"
21917        "add r22, r0 \n\t"
21918        "adc r23, r1 \n\t"
21919        "st x+, r22 \n\t"
21920        "ldi r22, 0 \n\t"
21921
21922        "add r23, r20 \n\t"
21923        "adc r22, r22 \n\t"
21924        "st x+, r23 \n\t"
21925        "ldi r23, 0 \n\t"
21926
21927        "add r22, r21 \n\t"
21928        "adc r23, r23 \n\t"
21929        "st x+, r22 \n\t"
21930        "ldi r22, 0 \n\t"
21931
21932        "add r23, r18 \n\t"
21933        "adc r22, r22 \n\t"
21934        "st x+, r23 \n\t"
21935        "st x+, r22 \n\t"
21936        "eor r1, r1 \n\t" /* make r1 be 0 again */
21937
21938        /* now z points to the end of tmp, x points to the end of product
21939           (y still points at result) */
21940        "sbiw r26, 10 \n\t" /* move x back to point at beginning of actual data */
21941        /* add into result */
21942        "ld r18, x+ \n\t"
21943        "ld r19, y \n\t"
21944        "add r18, r19 \n\t"
21945        "st y+, r18 \n\t"
21946        REPEAT(9,
21947            "ld r18, x+ \n\t"
21948            "ld r19, y \n\t"
21949            "adc r18, r19 \n\t"
21950            "st y+, r18 \n\t")
21951
21952        /* Done adding, now propagate carry bit */
21953        REPEAT(22,
21954            "ld r18, y \n\t"
21955            "adc r18, __zero_reg__ \n\t"
21956            "st y+, r18 \n\t")
21957
21958        "adc %[carry], __zero_reg__ \n\t"    /* Store carry bit (carry flag is cleared). */
21959        "sbiw r28, 32 \n\t" /* move y back to point at result */
21960
21961        "sbiw r30, 1 \n\t" /* fix stack pointer */
21962    	"in r0, __SREG__ \n\t"
21963    	"cli \n\t"
21964    	"out __SP_H__, r31 \n\t"
21965    	"out __SREG__, r0 \n\t"
21966    	"out __SP_L__, r30 \n\t"
21967
21968        : "+x" (product), [carry] "+r" (carry)
21969        : "y" (result)
21970        : "r0", "r18", "r19", "r20", "r21", "r22", "r23", "r24", "r25", "r30", "r31", "cc", "memory"
21971    );
21972
21973    if (carry > 0) {
21974        --carry;
21975        vli_sub(result, result, curve_p);
21976    }
21977    if (carry > 0) {
21978        vli_sub(result, result, curve_p);
21979    }
21980    if (vli_cmp(result, curve_p) > 0) {
21981        vli_sub(result, result, curve_p);
21982    }
21983}
21984#define asm_mmod_fast 1
21985
21986#endif /* (uECC_CURVE == uECC_secp256k1) */
21987
21988#endif /* (uECC_ASM == uECC_asm_fast) */
21989
21990#if !asm_rshift1
21991static void vli_rshift1(uint8_t *vli) {
21992    uint8_t i = uECC_BYTES;
21993    __asm__ volatile (
21994        "adiw r30, " STR(uECC_BYTES) " \n\t"
21995        "clc \n\t"
21996
21997        "1: \n\t"
21998        "ld r0, -z \n\t"
21999        "ror r0 \n\t"
22000        "st z, r0 \n\t"
22001        "dec %[i] \n\t"
22002        "brne 1b \n\t"
22003
22004        : "+z" (vli), [i] "+r" (i)
22005        :
22006        : "r0", "cc", "memory"
22007    );
22008}
22009#define asm_rshift1 1
22010#endif
22011
22012#if !asm_add
22013static uint8_t vli_add(uint8_t *result, const uint8_t *left, const uint8_t *right) {
22014    uint8_t i = uECC_BYTES;
22015    uint8_t carry = 0;
22016    uint8_t left_byte;
22017    uint8_t right_byte;
22018
22019    __asm__ volatile (
22020        "clc \n\t"
22021
22022        "1: \n\t"
22023        "ld %[left], x+ \n\t"  /* Load left byte. */
22024        "ld %[right], y+ \n\t" /* Load right byte. */
22025        "adc %[left], %[right] \n\t" /* Add. */
22026        "st z+, %[left] \n\t"  /* Store the result. */
22027        "dec %[i] \n\t"
22028        "brne 1b \n\t"
22029
22030        "adc %[carry], %[carry] \n\t" /* Store carry bit. */
22031        "sbiw r28, " STR(uECC_BYTES) " \n\t" /* Restore Y */
22032
22033        : "+z" (result), "+x" (left), [i] "+r" (i),
22034            [carry] "+r" (carry), [left] "=&r" (left_byte), [right] "=&r" (right_byte)
22035        : "y" (right)
22036        : "cc", "memory"
22037    );
22038    return carry;
22039}
22040#define asm_add 1
22041#endif
22042
22043#if !asm_sub
22044static uint8_t vli_sub(uint8_t *result, const uint8_t *left, const uint8_t *right) {
22045    uint8_t i = uECC_BYTES;
22046    uint8_t borrow = 0;
22047    uint8_t left_byte;
22048    uint8_t right_byte;
22049
22050    __asm__ volatile (
22051        "clc \n\t"
22052
22053        "1: \n\t"
22054        "ld %[left], x+ \n\t"  /* Load left byte. */
22055        "ld %[right], y+ \n\t" /* Load right byte. */
22056        "sbc %[left], %[right] \n\t" /* Subtract. */
22057        "st z+, %[left] \n\t"  /* Store the result. */
22058        "dec %[i] \n\t"
22059        "brne 1b \n\t"
22060
22061        "adc %[borrow], %[borrow] \n\t" /* Store carry bit in borrow. */
22062        "sbiw r28, " STR(uECC_BYTES) " \n\t" /* Restore Y */
22063
22064        : "+z" (result), "+x" (left), [i] "+r" (i),
22065            [borrow] "+r" (borrow), [left] "=&r" (left_byte), [right] "=&r" (right_byte)
22066        : "y" (right)
22067        : "cc", "memory"
22068    );
22069    return borrow;
22070}
22071#define asm_sub 1
22072#endif
22073
22074#if !asm_mult
22075__attribute((noinline))
22076static void vli_mult(uint8_t *result, const uint8_t *left, const uint8_t *right) {
22077    uint8_t r0 = 0;
22078    uint8_t r1 = 0;
22079    uint8_t r2 = 0;
22080    uint8_t zero = 0;
22081    uint8_t k, i;
22082
22083    __asm__ volatile (
22084        "ldi %[k], 1 \n\t" /* k = 1; k < uECC_BYTES; ++k */
22085
22086        "1: \n\t"
22087        "ldi %[i], 0 \n\t"  /* i = 0; i < k; ++i */
22088
22089        "add r28, %[k] \n\t" /* pre-add right ptr */
22090        "adc r29, %[zero] \n\t"
22091
22092        "2: \n\t"
22093        "ld r0, x+ \n\t"
22094        "ld r1, -y \n\t"
22095        "mul r0, r1 \n\t"
22096
22097        "add %[r0], r0 \n\t"
22098        "adc %[r1], r1 \n\t"
22099        "adc %[r2], %[zero] \n\t"
22100
22101        "inc %[i] \n\t"
22102        "cp %[i], %[k] \n\t"
22103        "brlo 2b \n\t" /* loop if i < k */
22104
22105        "sub r26, %[k] \n\t" /* fix up left ptr */
22106        "sbc r27, %[zero] \n\t"
22107
22108        "st z+, %[r0] \n\t"  /* Store the result. */
22109        "mov %[r0], %[r1] \n\t"
22110        "mov %[r1], %[r2] \n\t"
22111        "mov %[r2], %[zero] \n\t"
22112
22113        "inc %[k] \n\t"
22114        "cpi %[k], " STR(uECC_BYTES) " \n\t"
22115        "brlo 1b \n\t" /* loop if k < uECC_BYTES */
22116
22117        /* second half */
22118        "ldi %[k], " STR(uECC_BYTES) " \n\t" /* k = uECC_BYTES; k > 0; --k */
22119        "adiw r28, " STR(uECC_BYTES) " \n\t" /* move right ptr to point at the end of right */
22120
22121        "1: \n\t"
22122        "ldi %[i], 0 \n\t" /* i = 0; i < k; ++i */
22123
22124        "2: \n\t"
22125        "ld r0, x+ \n\t"
22126        "ld r1, -y \n\t"
22127        "mul r0, r1 \n\t"
22128
22129        "add %[r0], r0 \n\t"
22130        "adc %[r1], r1 \n\t"
22131        "adc %[r2], %[zero] \n\t"
22132
22133        "inc %[i] \n\t"
22134        "cp %[i], %[k] \n\t"
22135        "brlo 2b \n\t" /* loop if i < k */
22136
22137        "add r28, %[k] \n\t" /* fix up right ptr */
22138        "adc r29, %[zero] \n\t"
22139
22140        "st z+, %[r0] \n\t"  /* Store the result. */
22141        "mov %[r0], %[r1] \n\t"
22142        "mov %[r1], %[r2] \n\t"
22143        "mov %[r2], %[zero] \n\t"
22144
22145        "dec %[k] \n\t"
22146        "sub r26, %[k] \n\t" /* fix up left ptr (after k is decremented, so next time
22147                                we start 1 higher) */
22148        "sbc r27, %[zero] \n\t"
22149
22150        "cpi %[k], 0 \n\t"
22151        "brne 1b \n\t" /* loop if k > 0 */
22152
22153        "st z+, %[r0] \n\t"  /* Store last result byte. */
22154        "eor r1, r1 \n\t" /* fix r1 to be 0 again */
22155        "sbiw r28, " STR(uECC_BYTES) " \n\t" /* Restore Y */
22156
22157        : "+z" (result), "+x" (left),
22158          [r0] "+r" (r0), [r1] "+r" (r1), [r2] "+r" (r2), [zero] "+r" (zero),
22159          [k] "=&a" (k), [i] "=&a" (i)
22160        : "y" (right)
22161        : "r0", "cc", "memory"
22162    );
22163}
22164#define asm_mult 1
22165#endif
22166
22167#if uECC_SQUARE_FUNC
22168#if !asm_square
22169static void vli_square(uint8_t *result, const uint8_t *left) {
22170    uint8_t r0 = 0;
22171    uint8_t r1 = 0;
22172    uint8_t r2 = 0;
22173    uint8_t zero = 0;
22174    uint8_t k;
22175
22176    __asm__ volatile (
22177        "ldi %[k], 1 \n\t" /* k = 1; k < uECC_BYTES * 2; ++k */
22178
22179        "1: \n\t"
22180
22181        "movw r26, %[orig] \n\t"  /* copy orig ptr to 'left' ptr */
22182        "movw r30, %[orig] \n\t"  /* copy orig ptr to 'right' ptr */
22183        "cpi %[k], " STR(uECC_BYTES) " \n\t"
22184        "brlo 2f \n\t"
22185        "breq 2f \n\t"
22186
22187        /* when k > uECC_BYTES, we start from (k - uECC_BYTES) on the 'left' ptr */
22188        "add r26, %[k] \n\t"
22189        "adc r27, %[zero] \n\t"
22190        "subi r26, " STR(uECC_BYTES) " \n\t"
22191        "sbc r27, %[zero] \n\t"
22192        "adiw r30, " STR(uECC_BYTES) " \n\t" /* move right ptr to point at the end */
22193        "rjmp 3f \n\t"
22194
22195        "2: \n\t" /* when k <= uECC_BYTES, we add k to the 'right' ptr */
22196        "add r30, %[k] \n\t" /* pre-add 'right' ptr */
22197        "adc r31, %[zero] \n\t"
22198
22199        "3: \n\t"
22200        "ld r0, x+ \n\t"
22201        "cp r26, r30 \n\t" /* if left == right here, then we are done after this mult
22202                              (and we don't need to double) */
22203        "breq 4f \n\t"
22204        "ld r1, -z \n\t"
22205        "mul r0, r1 \n\t"
22206
22207        /* add twice since it costs the same as doubling */
22208        "add %[r0], r0 \n\t"
22209        "adc %[r1], r1 \n\t"
22210        "adc %[r2], %[zero] \n\t"
22211        "add %[r0], r0 \n\t"
22212        "adc %[r1], r1 \n\t"
22213        "adc %[r2], %[zero] \n\t"
22214
22215        "cpse r26, r30 \n\t" /* if left == right here, then we are done */
22216        "rjmp 3b \n\t"
22217        "rjmp 5f \n\t" /* skip code for non-doubled mult */
22218
22219        "4: \n\t"
22220        "ld r1, -z \n\t"
22221        "mul r0, r1 \n\t"
22222        "add %[r0], r0 \n\t"
22223        "adc %[r1], r1 \n\t"
22224        "adc %[r2], %[zero] \n\t"
22225
22226        "5: \n\t"
22227        "movw r30, %[result] \n\t" /* make z point to result */
22228        "st z+, %[r0] \n\t"        /* Store the result. */
22229        "movw %[result], r30 \n\t" /* update result ptr*/
22230        "mov %[r0], %[r1] \n\t"
22231        "mov %[r1], %[r2] \n\t"
22232        "mov %[r2], %[zero] \n\t"
22233
22234        "inc %[k] \n\t"
22235        "cpi %[k], %[max] \n\t"
22236        "brlo 1b \n\t" /* loop if k < uECC_BYTES */
22237
22238        "movw r30, %[result] \n\t"  /* make z point to result */
22239        "st z+, %[r0] \n\t"  /* Store last result byte. */
22240        "eor r1, r1 \n\t" /* fix r1 to be 0 again */
22241
22242        : [result] "+r" (result),
22243          [r0] "+r" (r0), [r1] "+r" (r1), [r2] "+r" (r2), [zero] "+r" (zero),
22244          [k] "=&a" (k)
22245        : [orig] "r" (left), [max] "M" (2*uECC_BYTES)
22246        : "r0", "r26", "r27", "r30", "r31", "cc", "memory"
22247    );
22248}
22249#define asm_square 1
22250#endif
22251#endif /* uECC_SQUARE_FUNC */
22252