ghash-x86.S revision 1.3 1 #include <machine/asm.h>
2 .text
3 .globl gcm_gmult_4bit_x86
4 .type gcm_gmult_4bit_x86,@function
5 .align 16
6 gcm_gmult_4bit_x86:
7 .L_gcm_gmult_4bit_x86_begin:
8 pushl %ebp
9 pushl %ebx
10 pushl %esi
11 pushl %edi
12 subl $84,%esp
13 movl 104(%esp),%edi
14 movl 108(%esp),%esi
15 movl (%edi),%ebp
16 movl 4(%edi),%edx
17 movl 8(%edi),%ecx
18 movl 12(%edi),%ebx
19 movl $0,16(%esp)
20 movl $471859200,20(%esp)
21 movl $943718400,24(%esp)
22 movl $610271232,28(%esp)
23 movl $1887436800,32(%esp)
24 movl $1822425088,36(%esp)
25 movl $1220542464,40(%esp)
26 movl $1423966208,44(%esp)
27 movl $3774873600,48(%esp)
28 movl $4246732800,52(%esp)
29 movl $3644850176,56(%esp)
30 movl $3311403008,60(%esp)
31 movl $2441084928,64(%esp)
32 movl $2376073216,68(%esp)
33 movl $2847932416,72(%esp)
34 movl $3051356160,76(%esp)
35 movl %ebp,(%esp)
36 movl %edx,4(%esp)
37 movl %ecx,8(%esp)
38 movl %ebx,12(%esp)
39 shrl $20,%ebx
40 andl $240,%ebx
41 movl 4(%esi,%ebx,1),%ebp
42 movl (%esi,%ebx,1),%edx
43 movl 12(%esi,%ebx,1),%ecx
44 movl 8(%esi,%ebx,1),%ebx
45 xorl %eax,%eax
46 movl $15,%edi
47 jmp .L000x86_loop
48 .align 16
49 .L000x86_loop:
50 movb %bl,%al
51 shrdl $4,%ecx,%ebx
52 andb $15,%al
53 shrdl $4,%edx,%ecx
54 shrdl $4,%ebp,%edx
55 shrl $4,%ebp
56 xorl 16(%esp,%eax,4),%ebp
57 movb (%esp,%edi,1),%al
58 andb $240,%al
59 xorl 8(%esi,%eax,1),%ebx
60 xorl 12(%esi,%eax,1),%ecx
61 xorl (%esi,%eax,1),%edx
62 xorl 4(%esi,%eax,1),%ebp
63 decl %edi
64 js .L001x86_break
65 movb %bl,%al
66 shrdl $4,%ecx,%ebx
67 andb $15,%al
68 shrdl $4,%edx,%ecx
69 shrdl $4,%ebp,%edx
70 shrl $4,%ebp
71 xorl 16(%esp,%eax,4),%ebp
72 movb (%esp,%edi,1),%al
73 shlb $4,%al
74 xorl 8(%esi,%eax,1),%ebx
75 xorl 12(%esi,%eax,1),%ecx
76 xorl (%esi,%eax,1),%edx
77 xorl 4(%esi,%eax,1),%ebp
78 jmp .L000x86_loop
79 .align 16
80 .L001x86_break:
81 bswap %ebx
82 bswap %ecx
83 bswap %edx
84 bswap %ebp
85 movl 104(%esp),%edi
86 movl %ebx,12(%edi)
87 movl %ecx,8(%edi)
88 movl %edx,4(%edi)
89 movl %ebp,(%edi)
90 addl $84,%esp
91 popl %edi
92 popl %esi
93 popl %ebx
94 popl %ebp
95 ret
96 .size gcm_gmult_4bit_x86,.-.L_gcm_gmult_4bit_x86_begin
97 .globl gcm_ghash_4bit_x86
98 .type gcm_ghash_4bit_x86,@function
99 .align 16
100 gcm_ghash_4bit_x86:
101 .L_gcm_ghash_4bit_x86_begin:
102 pushl %ebp
103 pushl %ebx
104 pushl %esi
105 pushl %edi
106 subl $84,%esp
107 movl 104(%esp),%ebx
108 movl 108(%esp),%esi
109 movl 112(%esp),%edi
110 movl 116(%esp),%ecx
111 addl %edi,%ecx
112 movl %ecx,116(%esp)
113 movl (%ebx),%ebp
114 movl 4(%ebx),%edx
115 movl 8(%ebx),%ecx
116 movl 12(%ebx),%ebx
117 movl $0,16(%esp)
118 movl $471859200,20(%esp)
119 movl $943718400,24(%esp)
120 movl $610271232,28(%esp)
121 movl $1887436800,32(%esp)
122 movl $1822425088,36(%esp)
123 movl $1220542464,40(%esp)
124 movl $1423966208,44(%esp)
125 movl $3774873600,48(%esp)
126 movl $4246732800,52(%esp)
127 movl $3644850176,56(%esp)
128 movl $3311403008,60(%esp)
129 movl $2441084928,64(%esp)
130 movl $2376073216,68(%esp)
131 movl $2847932416,72(%esp)
132 movl $3051356160,76(%esp)
133 .align 16
134 .L002x86_outer_loop:
135 xorl 12(%edi),%ebx
136 xorl 8(%edi),%ecx
137 xorl 4(%edi),%edx
138 xorl (%edi),%ebp
139 movl %ebx,12(%esp)
140 movl %ecx,8(%esp)
141 movl %edx,4(%esp)
142 movl %ebp,(%esp)
143 shrl $20,%ebx
144 andl $240,%ebx
145 movl 4(%esi,%ebx,1),%ebp
146 movl (%esi,%ebx,1),%edx
147 movl 12(%esi,%ebx,1),%ecx
148 movl 8(%esi,%ebx,1),%ebx
149 xorl %eax,%eax
150 movl $15,%edi
151 jmp .L003x86_loop
152 .align 16
153 .L003x86_loop:
154 movb %bl,%al
155 shrdl $4,%ecx,%ebx
156 andb $15,%al
157 shrdl $4,%edx,%ecx
158 shrdl $4,%ebp,%edx
159 shrl $4,%ebp
160 xorl 16(%esp,%eax,4),%ebp
161 movb (%esp,%edi,1),%al
162 andb $240,%al
163 xorl 8(%esi,%eax,1),%ebx
164 xorl 12(%esi,%eax,1),%ecx
165 xorl (%esi,%eax,1),%edx
166 xorl 4(%esi,%eax,1),%ebp
167 decl %edi
168 js .L004x86_break
169 movb %bl,%al
170 shrdl $4,%ecx,%ebx
171 andb $15,%al
172 shrdl $4,%edx,%ecx
173 shrdl $4,%ebp,%edx
174 shrl $4,%ebp
175 xorl 16(%esp,%eax,4),%ebp
176 movb (%esp,%edi,1),%al
177 shlb $4,%al
178 xorl 8(%esi,%eax,1),%ebx
179 xorl 12(%esi,%eax,1),%ecx
180 xorl (%esi,%eax,1),%edx
181 xorl 4(%esi,%eax,1),%ebp
182 jmp .L003x86_loop
183 .align 16
184 .L004x86_break:
185 bswap %ebx
186 bswap %ecx
187 bswap %edx
188 bswap %ebp
189 movl 112(%esp),%edi
190 leal 16(%edi),%edi
191 cmpl 116(%esp),%edi
192 movl %edi,112(%esp)
193 jb .L002x86_outer_loop
194 movl 104(%esp),%edi
195 movl %ebx,12(%edi)
196 movl %ecx,8(%edi)
197 movl %edx,4(%edi)
198 movl %ebp,(%edi)
199 addl $84,%esp
200 popl %edi
201 popl %esi
202 popl %ebx
203 popl %ebp
204 ret
205 .size gcm_ghash_4bit_x86,.-.L_gcm_ghash_4bit_x86_begin
206 .globl gcm_gmult_4bit_mmx
207 .type gcm_gmult_4bit_mmx,@function
208 .align 16
209 gcm_gmult_4bit_mmx:
210 .L_gcm_gmult_4bit_mmx_begin:
211 pushl %ebp
212 pushl %ebx
213 pushl %esi
214 pushl %edi
215 movl 20(%esp),%edi
216 movl 24(%esp),%esi
217 call .L005pic_point
218 .L005pic_point:
219 popl %eax
220 leal .Lrem_4bit-.L005pic_point(%eax),%eax
221 movzbl 15(%edi),%ebx
222 xorl %ecx,%ecx
223 movl %ebx,%edx
224 movb %dl,%cl
225 movl $14,%ebp
226 shlb $4,%cl
227 andl $240,%edx
228 movq 8(%esi,%ecx,1),%mm0
229 movq (%esi,%ecx,1),%mm1
230 movd %mm0,%ebx
231 jmp .L006mmx_loop
232 .align 16
233 .L006mmx_loop:
234 psrlq $4,%mm0
235 andl $15,%ebx
236 movq %mm1,%mm2
237 psrlq $4,%mm1
238 pxor 8(%esi,%edx,1),%mm0
239 movb (%edi,%ebp,1),%cl
240 psllq $60,%mm2
241 pxor (%eax,%ebx,8),%mm1
242 decl %ebp
243 movd %mm0,%ebx
244 pxor (%esi,%edx,1),%mm1
245 movl %ecx,%edx
246 pxor %mm2,%mm0
247 js .L007mmx_break
248 shlb $4,%cl
249 andl $15,%ebx
250 psrlq $4,%mm0
251 andl $240,%edx
252 movq %mm1,%mm2
253 psrlq $4,%mm1
254 pxor 8(%esi,%ecx,1),%mm0
255 psllq $60,%mm2
256 pxor (%eax,%ebx,8),%mm1
257 movd %mm0,%ebx
258 pxor (%esi,%ecx,1),%mm1
259 pxor %mm2,%mm0
260 jmp .L006mmx_loop
261 .align 16
262 .L007mmx_break:
263 shlb $4,%cl
264 andl $15,%ebx
265 psrlq $4,%mm0
266 andl $240,%edx
267 movq %mm1,%mm2
268 psrlq $4,%mm1
269 pxor 8(%esi,%ecx,1),%mm0
270 psllq $60,%mm2
271 pxor (%eax,%ebx,8),%mm1
272 movd %mm0,%ebx
273 pxor (%esi,%ecx,1),%mm1
274 pxor %mm2,%mm0
275 psrlq $4,%mm0
276 andl $15,%ebx
277 movq %mm1,%mm2
278 psrlq $4,%mm1
279 pxor 8(%esi,%edx,1),%mm0
280 psllq $60,%mm2
281 pxor (%eax,%ebx,8),%mm1
282 movd %mm0,%ebx
283 pxor (%esi,%edx,1),%mm1
284 pxor %mm2,%mm0
285 psrlq $32,%mm0
286 movd %mm1,%edx
287 psrlq $32,%mm1
288 movd %mm0,%ecx
289 movd %mm1,%ebp
290 bswap %ebx
291 bswap %edx
292 bswap %ecx
293 bswap %ebp
294 emms
295 movl %ebx,12(%edi)
296 movl %edx,4(%edi)
297 movl %ecx,8(%edi)
298 movl %ebp,(%edi)
299 popl %edi
300 popl %esi
301 popl %ebx
302 popl %ebp
303 ret
304 .size gcm_gmult_4bit_mmx,.-.L_gcm_gmult_4bit_mmx_begin
305 .globl gcm_ghash_4bit_mmx
306 .type gcm_ghash_4bit_mmx,@function
307 .align 16
308 gcm_ghash_4bit_mmx:
309 .L_gcm_ghash_4bit_mmx_begin:
310 pushl %ebp
311 pushl %ebx
312 pushl %esi
313 pushl %edi
314 movl 20(%esp),%eax
315 movl 24(%esp),%ebx
316 movl 28(%esp),%ecx
317 movl 32(%esp),%edx
318 movl %esp,%ebp
319 call .L008pic_point
320 .L008pic_point:
321 popl %esi
322 leal .Lrem_8bit-.L008pic_point(%esi),%esi
323 subl $544,%esp
324 andl $-64,%esp
325 subl $16,%esp
326 addl %ecx,%edx
327 movl %eax,544(%esp)
328 movl %edx,552(%esp)
329 movl %ebp,556(%esp)
330 addl $128,%ebx
331 leal 144(%esp),%edi
332 leal 400(%esp),%ebp
333 movl -120(%ebx),%edx
334 movq -120(%ebx),%mm0
335 movq -128(%ebx),%mm3
336 shll $4,%edx
337 movb %dl,(%esp)
338 movl -104(%ebx),%edx
339 movq -104(%ebx),%mm2
340 movq -112(%ebx),%mm5
341 movq %mm0,-128(%edi)
342 psrlq $4,%mm0
343 movq %mm3,(%edi)
344 movq %mm3,%mm7
345 psrlq $4,%mm3
346 shll $4,%edx
347 movb %dl,1(%esp)
348 movl -88(%ebx),%edx
349 movq -88(%ebx),%mm1
350 psllq $60,%mm7
351 movq -96(%ebx),%mm4
352 por %mm7,%mm0
353 movq %mm2,-120(%edi)
354 psrlq $4,%mm2
355 movq %mm5,8(%edi)
356 movq %mm5,%mm6
357 movq %mm0,-128(%ebp)
358 psrlq $4,%mm5
359 movq %mm3,(%ebp)
360 shll $4,%edx
361 movb %dl,2(%esp)
362 movl -72(%ebx),%edx
363 movq -72(%ebx),%mm0
364 psllq $60,%mm6
365 movq -80(%ebx),%mm3
366 por %mm6,%mm2
367 movq %mm1,-112(%edi)
368 psrlq $4,%mm1
369 movq %mm4,16(%edi)
370 movq %mm4,%mm7
371 movq %mm2,-120(%ebp)
372 psrlq $4,%mm4
373 movq %mm5,8(%ebp)
374 shll $4,%edx
375 movb %dl,3(%esp)
376 movl -56(%ebx),%edx
377 movq -56(%ebx),%mm2
378 psllq $60,%mm7
379 movq -64(%ebx),%mm5
380 por %mm7,%mm1
381 movq %mm0,-104(%edi)
382 psrlq $4,%mm0
383 movq %mm3,24(%edi)
384 movq %mm3,%mm6
385 movq %mm1,-112(%ebp)
386 psrlq $4,%mm3
387 movq %mm4,16(%ebp)
388 shll $4,%edx
389 movb %dl,4(%esp)
390 movl -40(%ebx),%edx
391 movq -40(%ebx),%mm1
392 psllq $60,%mm6
393 movq -48(%ebx),%mm4
394 por %mm6,%mm0
395 movq %mm2,-96(%edi)
396 psrlq $4,%mm2
397 movq %mm5,32(%edi)
398 movq %mm5,%mm7
399 movq %mm0,-104(%ebp)
400 psrlq $4,%mm5
401 movq %mm3,24(%ebp)
402 shll $4,%edx
403 movb %dl,5(%esp)
404 movl -24(%ebx),%edx
405 movq -24(%ebx),%mm0
406 psllq $60,%mm7
407 movq -32(%ebx),%mm3
408 por %mm7,%mm2
409 movq %mm1,-88(%edi)
410 psrlq $4,%mm1
411 movq %mm4,40(%edi)
412 movq %mm4,%mm6
413 movq %mm2,-96(%ebp)
414 psrlq $4,%mm4
415 movq %mm5,32(%ebp)
416 shll $4,%edx
417 movb %dl,6(%esp)
418 movl -8(%ebx),%edx
419 movq -8(%ebx),%mm2
420 psllq $60,%mm6
421 movq -16(%ebx),%mm5
422 por %mm6,%mm1
423 movq %mm0,-80(%edi)
424 psrlq $4,%mm0
425 movq %mm3,48(%edi)
426 movq %mm3,%mm7
427 movq %mm1,-88(%ebp)
428 psrlq $4,%mm3
429 movq %mm4,40(%ebp)
430 shll $4,%edx
431 movb %dl,7(%esp)
432 movl 8(%ebx),%edx
433 movq 8(%ebx),%mm1
434 psllq $60,%mm7
435 movq (%ebx),%mm4
436 por %mm7,%mm0
437 movq %mm2,-72(%edi)
438 psrlq $4,%mm2
439 movq %mm5,56(%edi)
440 movq %mm5,%mm6
441 movq %mm0,-80(%ebp)
442 psrlq $4,%mm5
443 movq %mm3,48(%ebp)
444 shll $4,%edx
445 movb %dl,8(%esp)
446 movl 24(%ebx),%edx
447 movq 24(%ebx),%mm0
448 psllq $60,%mm6
449 movq 16(%ebx),%mm3
450 por %mm6,%mm2
451 movq %mm1,-64(%edi)
452 psrlq $4,%mm1
453 movq %mm4,64(%edi)
454 movq %mm4,%mm7
455 movq %mm2,-72(%ebp)
456 psrlq $4,%mm4
457 movq %mm5,56(%ebp)
458 shll $4,%edx
459 movb %dl,9(%esp)
460 movl 40(%ebx),%edx
461 movq 40(%ebx),%mm2
462 psllq $60,%mm7
463 movq 32(%ebx),%mm5
464 por %mm7,%mm1
465 movq %mm0,-56(%edi)
466 psrlq $4,%mm0
467 movq %mm3,72(%edi)
468 movq %mm3,%mm6
469 movq %mm1,-64(%ebp)
470 psrlq $4,%mm3
471 movq %mm4,64(%ebp)
472 shll $4,%edx
473 movb %dl,10(%esp)
474 movl 56(%ebx),%edx
475 movq 56(%ebx),%mm1
476 psllq $60,%mm6
477 movq 48(%ebx),%mm4
478 por %mm6,%mm0
479 movq %mm2,-48(%edi)
480 psrlq $4,%mm2
481 movq %mm5,80(%edi)
482 movq %mm5,%mm7
483 movq %mm0,-56(%ebp)
484 psrlq $4,%mm5
485 movq %mm3,72(%ebp)
486 shll $4,%edx
487 movb %dl,11(%esp)
488 movl 72(%ebx),%edx
489 movq 72(%ebx),%mm0
490 psllq $60,%mm7
491 movq 64(%ebx),%mm3
492 por %mm7,%mm2
493 movq %mm1,-40(%edi)
494 psrlq $4,%mm1
495 movq %mm4,88(%edi)
496 movq %mm4,%mm6
497 movq %mm2,-48(%ebp)
498 psrlq $4,%mm4
499 movq %mm5,80(%ebp)
500 shll $4,%edx
501 movb %dl,12(%esp)
502 movl 88(%ebx),%edx
503 movq 88(%ebx),%mm2
504 psllq $60,%mm6
505 movq 80(%ebx),%mm5
506 por %mm6,%mm1
507 movq %mm0,-32(%edi)
508 psrlq $4,%mm0
509 movq %mm3,96(%edi)
510 movq %mm3,%mm7
511 movq %mm1,-40(%ebp)
512 psrlq $4,%mm3
513 movq %mm4,88(%ebp)
514 shll $4,%edx
515 movb %dl,13(%esp)
516 movl 104(%ebx),%edx
517 movq 104(%ebx),%mm1
518 psllq $60,%mm7
519 movq 96(%ebx),%mm4
520 por %mm7,%mm0
521 movq %mm2,-24(%edi)
522 psrlq $4,%mm2
523 movq %mm5,104(%edi)
524 movq %mm5,%mm6
525 movq %mm0,-32(%ebp)
526 psrlq $4,%mm5
527 movq %mm3,96(%ebp)
528 shll $4,%edx
529 movb %dl,14(%esp)
530 movl 120(%ebx),%edx
531 movq 120(%ebx),%mm0
532 psllq $60,%mm6
533 movq 112(%ebx),%mm3
534 por %mm6,%mm2
535 movq %mm1,-16(%edi)
536 psrlq $4,%mm1
537 movq %mm4,112(%edi)
538 movq %mm4,%mm7
539 movq %mm2,-24(%ebp)
540 psrlq $4,%mm4
541 movq %mm5,104(%ebp)
542 shll $4,%edx
543 movb %dl,15(%esp)
544 psllq $60,%mm7
545 por %mm7,%mm1
546 movq %mm0,-8(%edi)
547 psrlq $4,%mm0
548 movq %mm3,120(%edi)
549 movq %mm3,%mm6
550 movq %mm1,-16(%ebp)
551 psrlq $4,%mm3
552 movq %mm4,112(%ebp)
553 psllq $60,%mm6
554 por %mm6,%mm0
555 movq %mm0,-8(%ebp)
556 movq %mm3,120(%ebp)
557 movq (%eax),%mm6
558 movl 8(%eax),%ebx
559 movl 12(%eax),%edx
560 .align 16
561 .L009outer:
562 xorl 12(%ecx),%edx
563 xorl 8(%ecx),%ebx
564 pxor (%ecx),%mm6
565 leal 16(%ecx),%ecx
566 movl %ebx,536(%esp)
567 movq %mm6,528(%esp)
568 movl %ecx,548(%esp)
569 xorl %eax,%eax
570 roll $8,%edx
571 movb %dl,%al
572 movl %eax,%ebp
573 andb $15,%al
574 shrl $4,%ebp
575 pxor %mm0,%mm0
576 roll $8,%edx
577 pxor %mm1,%mm1
578 pxor %mm2,%mm2
579 movq 16(%esp,%eax,8),%mm7
580 movq 144(%esp,%eax,8),%mm6
581 movb %dl,%al
582 movd %mm7,%ebx
583 psrlq $8,%mm7
584 movq %mm6,%mm3
585 movl %eax,%edi
586 psrlq $8,%mm6
587 pxor 272(%esp,%ebp,8),%mm7
588 andb $15,%al
589 psllq $56,%mm3
590 shrl $4,%edi
591 pxor 16(%esp,%eax,8),%mm7
592 roll $8,%edx
593 pxor 144(%esp,%eax,8),%mm6
594 pxor %mm3,%mm7
595 pxor 400(%esp,%ebp,8),%mm6
596 xorb (%esp,%ebp,1),%bl
597 movb %dl,%al
598 movd %mm7,%ecx
599 movzbl %bl,%ebx
600 psrlq $8,%mm7
601 movq %mm6,%mm3
602 movl %eax,%ebp
603 psrlq $8,%mm6
604 pxor 272(%esp,%edi,8),%mm7
605 andb $15,%al
606 psllq $56,%mm3
607 shrl $4,%ebp
608 pinsrw $2,(%esi,%ebx,2),%mm2
609 pxor 16(%esp,%eax,8),%mm7
610 roll $8,%edx
611 pxor 144(%esp,%eax,8),%mm6
612 pxor %mm3,%mm7
613 pxor 400(%esp,%edi,8),%mm6
614 xorb (%esp,%edi,1),%cl
615 movb %dl,%al
616 movl 536(%esp),%edx
617 movd %mm7,%ebx
618 movzbl %cl,%ecx
619 psrlq $8,%mm7
620 movq %mm6,%mm3
621 movl %eax,%edi
622 psrlq $8,%mm6
623 pxor 272(%esp,%ebp,8),%mm7
624 andb $15,%al
625 psllq $56,%mm3
626 pxor %mm2,%mm6
627 shrl $4,%edi
628 pinsrw $2,(%esi,%ecx,2),%mm1
629 pxor 16(%esp,%eax,8),%mm7
630 roll $8,%edx
631 pxor 144(%esp,%eax,8),%mm6
632 pxor %mm3,%mm7
633 pxor 400(%esp,%ebp,8),%mm6
634 xorb (%esp,%ebp,1),%bl
635 movb %dl,%al
636 movd %mm7,%ecx
637 movzbl %bl,%ebx
638 psrlq $8,%mm7
639 movq %mm6,%mm3
640 movl %eax,%ebp
641 psrlq $8,%mm6
642 pxor 272(%esp,%edi,8),%mm7
643 andb $15,%al
644 psllq $56,%mm3
645 pxor %mm1,%mm6
646 shrl $4,%ebp
647 pinsrw $2,(%esi,%ebx,2),%mm0
648 pxor 16(%esp,%eax,8),%mm7
649 roll $8,%edx
650 pxor 144(%esp,%eax,8),%mm6
651 pxor %mm3,%mm7
652 pxor 400(%esp,%edi,8),%mm6
653 xorb (%esp,%edi,1),%cl
654 movb %dl,%al
655 movd %mm7,%ebx
656 movzbl %cl,%ecx
657 psrlq $8,%mm7
658 movq %mm6,%mm3
659 movl %eax,%edi
660 psrlq $8,%mm6
661 pxor 272(%esp,%ebp,8),%mm7
662 andb $15,%al
663 psllq $56,%mm3
664 pxor %mm0,%mm6
665 shrl $4,%edi
666 pinsrw $2,(%esi,%ecx,2),%mm2
667 pxor 16(%esp,%eax,8),%mm7
668 roll $8,%edx
669 pxor 144(%esp,%eax,8),%mm6
670 pxor %mm3,%mm7
671 pxor 400(%esp,%ebp,8),%mm6
672 xorb (%esp,%ebp,1),%bl
673 movb %dl,%al
674 movd %mm7,%ecx
675 movzbl %bl,%ebx
676 psrlq $8,%mm7
677 movq %mm6,%mm3
678 movl %eax,%ebp
679 psrlq $8,%mm6
680 pxor 272(%esp,%edi,8),%mm7
681 andb $15,%al
682 psllq $56,%mm3
683 pxor %mm2,%mm6
684 shrl $4,%ebp
685 pinsrw $2,(%esi,%ebx,2),%mm1
686 pxor 16(%esp,%eax,8),%mm7
687 roll $8,%edx
688 pxor 144(%esp,%eax,8),%mm6
689 pxor %mm3,%mm7
690 pxor 400(%esp,%edi,8),%mm6
691 xorb (%esp,%edi,1),%cl
692 movb %dl,%al
693 movl 532(%esp),%edx
694 movd %mm7,%ebx
695 movzbl %cl,%ecx
696 psrlq $8,%mm7
697 movq %mm6,%mm3
698 movl %eax,%edi
699 psrlq $8,%mm6
700 pxor 272(%esp,%ebp,8),%mm7
701 andb $15,%al
702 psllq $56,%mm3
703 pxor %mm1,%mm6
704 shrl $4,%edi
705 pinsrw $2,(%esi,%ecx,2),%mm0
706 pxor 16(%esp,%eax,8),%mm7
707 roll $8,%edx
708 pxor 144(%esp,%eax,8),%mm6
709 pxor %mm3,%mm7
710 pxor 400(%esp,%ebp,8),%mm6
711 xorb (%esp,%ebp,1),%bl
712 movb %dl,%al
713 movd %mm7,%ecx
714 movzbl %bl,%ebx
715 psrlq $8,%mm7
716 movq %mm6,%mm3
717 movl %eax,%ebp
718 psrlq $8,%mm6
719 pxor 272(%esp,%edi,8),%mm7
720 andb $15,%al
721 psllq $56,%mm3
722 pxor %mm0,%mm6
723 shrl $4,%ebp
724 pinsrw $2,(%esi,%ebx,2),%mm2
725 pxor 16(%esp,%eax,8),%mm7
726 roll $8,%edx
727 pxor 144(%esp,%eax,8),%mm6
728 pxor %mm3,%mm7
729 pxor 400(%esp,%edi,8),%mm6
730 xorb (%esp,%edi,1),%cl
731 movb %dl,%al
732 movd %mm7,%ebx
733 movzbl %cl,%ecx
734 psrlq $8,%mm7
735 movq %mm6,%mm3
736 movl %eax,%edi
737 psrlq $8,%mm6
738 pxor 272(%esp,%ebp,8),%mm7
739 andb $15,%al
740 psllq $56,%mm3
741 pxor %mm2,%mm6
742 shrl $4,%edi
743 pinsrw $2,(%esi,%ecx,2),%mm1
744 pxor 16(%esp,%eax,8),%mm7
745 roll $8,%edx
746 pxor 144(%esp,%eax,8),%mm6
747 pxor %mm3,%mm7
748 pxor 400(%esp,%ebp,8),%mm6
749 xorb (%esp,%ebp,1),%bl
750 movb %dl,%al
751 movd %mm7,%ecx
752 movzbl %bl,%ebx
753 psrlq $8,%mm7
754 movq %mm6,%mm3
755 movl %eax,%ebp
756 psrlq $8,%mm6
757 pxor 272(%esp,%edi,8),%mm7
758 andb $15,%al
759 psllq $56,%mm3
760 pxor %mm1,%mm6
761 shrl $4,%ebp
762 pinsrw $2,(%esi,%ebx,2),%mm0
763 pxor 16(%esp,%eax,8),%mm7
764 roll $8,%edx
765 pxor 144(%esp,%eax,8),%mm6
766 pxor %mm3,%mm7
767 pxor 400(%esp,%edi,8),%mm6
768 xorb (%esp,%edi,1),%cl
769 movb %dl,%al
770 movl 528(%esp),%edx
771 movd %mm7,%ebx
772 movzbl %cl,%ecx
773 psrlq $8,%mm7
774 movq %mm6,%mm3
775 movl %eax,%edi
776 psrlq $8,%mm6
777 pxor 272(%esp,%ebp,8),%mm7
778 andb $15,%al
779 psllq $56,%mm3
780 pxor %mm0,%mm6
781 shrl $4,%edi
782 pinsrw $2,(%esi,%ecx,2),%mm2
783 pxor 16(%esp,%eax,8),%mm7
784 roll $8,%edx
785 pxor 144(%esp,%eax,8),%mm6
786 pxor %mm3,%mm7
787 pxor 400(%esp,%ebp,8),%mm6
788 xorb (%esp,%ebp,1),%bl
789 movb %dl,%al
790 movd %mm7,%ecx
791 movzbl %bl,%ebx
792 psrlq $8,%mm7
793 movq %mm6,%mm3
794 movl %eax,%ebp
795 psrlq $8,%mm6
796 pxor 272(%esp,%edi,8),%mm7
797 andb $15,%al
798 psllq $56,%mm3
799 pxor %mm2,%mm6
800 shrl $4,%ebp
801 pinsrw $2,(%esi,%ebx,2),%mm1
802 pxor 16(%esp,%eax,8),%mm7
803 roll $8,%edx
804 pxor 144(%esp,%eax,8),%mm6
805 pxor %mm3,%mm7
806 pxor 400(%esp,%edi,8),%mm6
807 xorb (%esp,%edi,1),%cl
808 movb %dl,%al
809 movd %mm7,%ebx
810 movzbl %cl,%ecx
811 psrlq $8,%mm7
812 movq %mm6,%mm3
813 movl %eax,%edi
814 psrlq $8,%mm6
815 pxor 272(%esp,%ebp,8),%mm7
816 andb $15,%al
817 psllq $56,%mm3
818 pxor %mm1,%mm6
819 shrl $4,%edi
820 pinsrw $2,(%esi,%ecx,2),%mm0
821 pxor 16(%esp,%eax,8),%mm7
822 roll $8,%edx
823 pxor 144(%esp,%eax,8),%mm6
824 pxor %mm3,%mm7
825 pxor 400(%esp,%ebp,8),%mm6
826 xorb (%esp,%ebp,1),%bl
827 movb %dl,%al
828 movd %mm7,%ecx
829 movzbl %bl,%ebx
830 psrlq $8,%mm7
831 movq %mm6,%mm3
832 movl %eax,%ebp
833 psrlq $8,%mm6
834 pxor 272(%esp,%edi,8),%mm7
835 andb $15,%al
836 psllq $56,%mm3
837 pxor %mm0,%mm6
838 shrl $4,%ebp
839 pinsrw $2,(%esi,%ebx,2),%mm2
840 pxor 16(%esp,%eax,8),%mm7
841 roll $8,%edx
842 pxor 144(%esp,%eax,8),%mm6
843 pxor %mm3,%mm7
844 pxor 400(%esp,%edi,8),%mm6
845 xorb (%esp,%edi,1),%cl
846 movb %dl,%al
847 movl 524(%esp),%edx
848 movd %mm7,%ebx
849 movzbl %cl,%ecx
850 psrlq $8,%mm7
851 movq %mm6,%mm3
852 movl %eax,%edi
853 psrlq $8,%mm6
854 pxor 272(%esp,%ebp,8),%mm7
855 andb $15,%al
856 psllq $56,%mm3
857 pxor %mm2,%mm6
858 shrl $4,%edi
859 pinsrw $2,(%esi,%ecx,2),%mm1
860 pxor 16(%esp,%eax,8),%mm7
861 pxor 144(%esp,%eax,8),%mm6
862 xorb (%esp,%ebp,1),%bl
863 pxor %mm3,%mm7
864 pxor 400(%esp,%ebp,8),%mm6
865 movzbl %bl,%ebx
866 pxor %mm2,%mm2
867 psllq $4,%mm1
868 movd %mm7,%ecx
869 psrlq $4,%mm7
870 movq %mm6,%mm3
871 psrlq $4,%mm6
872 shll $4,%ecx
873 pxor 16(%esp,%edi,8),%mm7
874 psllq $60,%mm3
875 movzbl %cl,%ecx
876 pxor %mm3,%mm7
877 pxor 144(%esp,%edi,8),%mm6
878 pinsrw $2,(%esi,%ebx,2),%mm0
879 pxor %mm1,%mm6
880 movd %mm7,%edx
881 pinsrw $3,(%esi,%ecx,2),%mm2
882 psllq $12,%mm0
883 pxor %mm0,%mm6
884 psrlq $32,%mm7
885 pxor %mm2,%mm6
886 movl 548(%esp),%ecx
887 movd %mm7,%ebx
888 movq %mm6,%mm3
889 psllw $8,%mm6
890 psrlw $8,%mm3
891 por %mm3,%mm6
892 bswap %edx
893 pshufw $27,%mm6,%mm6
894 bswap %ebx
895 cmpl 552(%esp),%ecx
896 jne .L009outer
897 movl 544(%esp),%eax
898 movl %edx,12(%eax)
899 movl %ebx,8(%eax)
900 movq %mm6,(%eax)
901 movl 556(%esp),%esp
902 emms
903 popl %edi
904 popl %esi
905 popl %ebx
906 popl %ebp
907 ret
908 .size gcm_ghash_4bit_mmx,.-.L_gcm_ghash_4bit_mmx_begin
909 .globl gcm_init_clmul
910 .type gcm_init_clmul,@function
911 .align 16
912 gcm_init_clmul:
913 .L_gcm_init_clmul_begin:
914 movl 4(%esp),%edx
915 movl 8(%esp),%eax
916 call .L010pic
917 .L010pic:
918 popl %ecx
919 leal .Lbswap-.L010pic(%ecx),%ecx
920 movdqu (%eax),%xmm2
921 pshufd $78,%xmm2,%xmm2
922 pshufd $255,%xmm2,%xmm4
923 movdqa %xmm2,%xmm3
924 psllq $1,%xmm2
925 pxor %xmm5,%xmm5
926 psrlq $63,%xmm3
927 pcmpgtd %xmm4,%xmm5
928 pslldq $8,%xmm3
929 por %xmm3,%xmm2
930 pand 16(%ecx),%xmm5
931 pxor %xmm5,%xmm2
932 movdqa %xmm2,%xmm0
933 movdqa %xmm0,%xmm1
934 pshufd $78,%xmm0,%xmm3
935 pshufd $78,%xmm2,%xmm4
936 pxor %xmm0,%xmm3
937 pxor %xmm2,%xmm4
938 .byte 102,15,58,68,194,0
939 .byte 102,15,58,68,202,17
940 .byte 102,15,58,68,220,0
941 xorps %xmm0,%xmm3
942 xorps %xmm1,%xmm3
943 movdqa %xmm3,%xmm4
944 psrldq $8,%xmm3
945 pslldq $8,%xmm4
946 pxor %xmm3,%xmm1
947 pxor %xmm4,%xmm0
948 movdqa %xmm0,%xmm3
949 psllq $1,%xmm0
950 pxor %xmm3,%xmm0
951 psllq $5,%xmm0
952 pxor %xmm3,%xmm0
953 psllq $57,%xmm0
954 movdqa %xmm0,%xmm4
955 pslldq $8,%xmm0
956 psrldq $8,%xmm4
957 pxor %xmm3,%xmm0
958 pxor %xmm4,%xmm1
959 movdqa %xmm0,%xmm4
960 psrlq $5,%xmm0
961 pxor %xmm4,%xmm0
962 psrlq $1,%xmm0
963 pxor %xmm4,%xmm0
964 pxor %xmm1,%xmm4
965 psrlq $1,%xmm0
966 pxor %xmm4,%xmm0
967 movdqu %xmm2,(%edx)
968 movdqu %xmm0,16(%edx)
969 ret
970 .size gcm_init_clmul,.-.L_gcm_init_clmul_begin
971 .globl gcm_gmult_clmul
972 .type gcm_gmult_clmul,@function
973 .align 16
974 gcm_gmult_clmul:
975 .L_gcm_gmult_clmul_begin:
976 movl 4(%esp),%eax
977 movl 8(%esp),%edx
978 call .L011pic
979 .L011pic:
980 popl %ecx
981 leal .Lbswap-.L011pic(%ecx),%ecx
982 movdqu (%eax),%xmm0
983 movdqa (%ecx),%xmm5
984 movups (%edx),%xmm2
985 .byte 102,15,56,0,197
986 movdqa %xmm0,%xmm1
987 pshufd $78,%xmm0,%xmm3
988 pshufd $78,%xmm2,%xmm4
989 pxor %xmm0,%xmm3
990 pxor %xmm2,%xmm4
991 .byte 102,15,58,68,194,0
992 .byte 102,15,58,68,202,17
993 .byte 102,15,58,68,220,0
994 xorps %xmm0,%xmm3
995 xorps %xmm1,%xmm3
996 movdqa %xmm3,%xmm4
997 psrldq $8,%xmm3
998 pslldq $8,%xmm4
999 pxor %xmm3,%xmm1
1000 pxor %xmm4,%xmm0
1001 movdqa %xmm0,%xmm3
1002 psllq $1,%xmm0
1003 pxor %xmm3,%xmm0
1004 psllq $5,%xmm0
1005 pxor %xmm3,%xmm0
1006 psllq $57,%xmm0
1007 movdqa %xmm0,%xmm4
1008 pslldq $8,%xmm0
1009 psrldq $8,%xmm4
1010 pxor %xmm3,%xmm0
1011 pxor %xmm4,%xmm1
1012 movdqa %xmm0,%xmm4
1013 psrlq $5,%xmm0
1014 pxor %xmm4,%xmm0
1015 psrlq $1,%xmm0
1016 pxor %xmm4,%xmm0
1017 pxor %xmm1,%xmm4
1018 psrlq $1,%xmm0
1019 pxor %xmm4,%xmm0
1020 .byte 102,15,56,0,197
1021 movdqu %xmm0,(%eax)
1022 ret
1023 .size gcm_gmult_clmul,.-.L_gcm_gmult_clmul_begin
1024 .globl gcm_ghash_clmul
1025 .type gcm_ghash_clmul,@function
1026 .align 16
1027 gcm_ghash_clmul:
1028 .L_gcm_ghash_clmul_begin:
1029 pushl %ebp
1030 pushl %ebx
1031 pushl %esi
1032 pushl %edi
1033 movl 20(%esp),%eax
1034 movl 24(%esp),%edx
1035 movl 28(%esp),%esi
1036 movl 32(%esp),%ebx
1037 call .L012pic
1038 .L012pic:
1039 popl %ecx
1040 leal .Lbswap-.L012pic(%ecx),%ecx
1041 movdqu (%eax),%xmm0
1042 movdqa (%ecx),%xmm5
1043 movdqu (%edx),%xmm2
1044 .byte 102,15,56,0,197
1045 subl $16,%ebx
1046 jz .L013odd_tail
1047 movdqu (%esi),%xmm3
1048 movdqu 16(%esi),%xmm6
1049 .byte 102,15,56,0,221
1050 .byte 102,15,56,0,245
1051 pxor %xmm3,%xmm0
1052 movdqa %xmm6,%xmm7
1053 pshufd $78,%xmm6,%xmm3
1054 pshufd $78,%xmm2,%xmm4
1055 pxor %xmm6,%xmm3
1056 pxor %xmm2,%xmm4
1057 .byte 102,15,58,68,242,0
1058 .byte 102,15,58,68,250,17
1059 .byte 102,15,58,68,220,0
1060 xorps %xmm6,%xmm3
1061 xorps %xmm7,%xmm3
1062 movdqa %xmm3,%xmm4
1063 psrldq $8,%xmm3
1064 pslldq $8,%xmm4
1065 pxor %xmm3,%xmm7
1066 pxor %xmm4,%xmm6
1067 movups 16(%edx),%xmm2
1068 leal 32(%esi),%esi
1069 subl $32,%ebx
1070 jbe .L014even_tail
1071 .L015mod_loop:
1072 movdqa %xmm0,%xmm1
1073 pshufd $78,%xmm0,%xmm3
1074 pshufd $78,%xmm2,%xmm4
1075 pxor %xmm0,%xmm3
1076 pxor %xmm2,%xmm4
1077 .byte 102,15,58,68,194,0
1078 .byte 102,15,58,68,202,17
1079 .byte 102,15,58,68,220,0
1080 xorps %xmm0,%xmm3
1081 xorps %xmm1,%xmm3
1082 movdqa %xmm3,%xmm4
1083 psrldq $8,%xmm3
1084 pslldq $8,%xmm4
1085 pxor %xmm3,%xmm1
1086 pxor %xmm4,%xmm0
1087 movdqu (%esi),%xmm3
1088 movups (%edx),%xmm2
1089 pxor %xmm6,%xmm0
1090 pxor %xmm7,%xmm1
1091 movdqu 16(%esi),%xmm6
1092 .byte 102,15,56,0,221
1093 .byte 102,15,56,0,245
1094 movdqa %xmm6,%xmm5
1095 movdqa %xmm6,%xmm7
1096 pxor %xmm3,%xmm1
1097 movdqa %xmm0,%xmm3
1098 psllq $1,%xmm0
1099 pxor %xmm3,%xmm0
1100 psllq $5,%xmm0
1101 pxor %xmm3,%xmm0
1102 .byte 102,15,58,68,242,0
1103 psllq $57,%xmm0
1104 movdqa %xmm0,%xmm4
1105 pslldq $8,%xmm0
1106 psrldq $8,%xmm4
1107 pxor %xmm3,%xmm0
1108 pshufd $78,%xmm5,%xmm3
1109 pxor %xmm4,%xmm1
1110 pxor %xmm5,%xmm3
1111 pshufd $78,%xmm2,%xmm5
1112 pxor %xmm2,%xmm5
1113 .byte 102,15,58,68,250,17
1114 movdqa %xmm0,%xmm4
1115 psrlq $5,%xmm0
1116 pxor %xmm4,%xmm0
1117 psrlq $1,%xmm0
1118 pxor %xmm4,%xmm0
1119 pxor %xmm1,%xmm4
1120 psrlq $1,%xmm0
1121 pxor %xmm4,%xmm0
1122 .byte 102,15,58,68,221,0
1123 movups 16(%edx),%xmm2
1124 xorps %xmm6,%xmm3
1125 xorps %xmm7,%xmm3
1126 movdqa %xmm3,%xmm5
1127 psrldq $8,%xmm3
1128 pslldq $8,%xmm5
1129 pxor %xmm3,%xmm7
1130 pxor %xmm5,%xmm6
1131 movdqa (%ecx),%xmm5
1132 leal 32(%esi),%esi
1133 subl $32,%ebx
1134 ja .L015mod_loop
1135 .L014even_tail:
1136 movdqa %xmm0,%xmm1
1137 pshufd $78,%xmm0,%xmm3
1138 pshufd $78,%xmm2,%xmm4
1139 pxor %xmm0,%xmm3
1140 pxor %xmm2,%xmm4
1141 .byte 102,15,58,68,194,0
1142 .byte 102,15,58,68,202,17
1143 .byte 102,15,58,68,220,0
1144 xorps %xmm0,%xmm3
1145 xorps %xmm1,%xmm3
1146 movdqa %xmm3,%xmm4
1147 psrldq $8,%xmm3
1148 pslldq $8,%xmm4
1149 pxor %xmm3,%xmm1
1150 pxor %xmm4,%xmm0
1151 pxor %xmm6,%xmm0
1152 pxor %xmm7,%xmm1
1153 movdqa %xmm0,%xmm3
1154 psllq $1,%xmm0
1155 pxor %xmm3,%xmm0
1156 psllq $5,%xmm0
1157 pxor %xmm3,%xmm0
1158 psllq $57,%xmm0
1159 movdqa %xmm0,%xmm4
1160 pslldq $8,%xmm0
1161 psrldq $8,%xmm4
1162 pxor %xmm3,%xmm0
1163 pxor %xmm4,%xmm1
1164 movdqa %xmm0,%xmm4
1165 psrlq $5,%xmm0
1166 pxor %xmm4,%xmm0
1167 psrlq $1,%xmm0
1168 pxor %xmm4,%xmm0
1169 pxor %xmm1,%xmm4
1170 psrlq $1,%xmm0
1171 pxor %xmm4,%xmm0
1172 testl %ebx,%ebx
1173 jnz .L016done
1174 movups (%edx),%xmm2
1175 .L013odd_tail:
1176 movdqu (%esi),%xmm3
1177 .byte 102,15,56,0,221
1178 pxor %xmm3,%xmm0
1179 movdqa %xmm0,%xmm1
1180 pshufd $78,%xmm0,%xmm3
1181 pshufd $78,%xmm2,%xmm4
1182 pxor %xmm0,%xmm3
1183 pxor %xmm2,%xmm4
1184 .byte 102,15,58,68,194,0
1185 .byte 102,15,58,68,202,17
1186 .byte 102,15,58,68,220,0
1187 xorps %xmm0,%xmm3
1188 xorps %xmm1,%xmm3
1189 movdqa %xmm3,%xmm4
1190 psrldq $8,%xmm3
1191 pslldq $8,%xmm4
1192 pxor %xmm3,%xmm1
1193 pxor %xmm4,%xmm0
1194 movdqa %xmm0,%xmm3
1195 psllq $1,%xmm0
1196 pxor %xmm3,%xmm0
1197 psllq $5,%xmm0
1198 pxor %xmm3,%xmm0
1199 psllq $57,%xmm0
1200 movdqa %xmm0,%xmm4
1201 pslldq $8,%xmm0
1202 psrldq $8,%xmm4
1203 pxor %xmm3,%xmm0
1204 pxor %xmm4,%xmm1
1205 movdqa %xmm0,%xmm4
1206 psrlq $5,%xmm0
1207 pxor %xmm4,%xmm0
1208 psrlq $1,%xmm0
1209 pxor %xmm4,%xmm0
1210 pxor %xmm1,%xmm4
1211 psrlq $1,%xmm0
1212 pxor %xmm4,%xmm0
1213 .L016done:
1214 .byte 102,15,56,0,197
1215 movdqu %xmm0,(%eax)
1216 popl %edi
1217 popl %esi
1218 popl %ebx
1219 popl %ebp
1220 ret
1221 .size gcm_ghash_clmul,.-.L_gcm_ghash_clmul_begin
1222 .align 64
1223 .Lbswap:
1224 .byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
1225 .byte 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194
1226 .align 64
1227 .Lrem_4bit:
1228 .long 0,0,0,471859200,0,943718400,0,610271232
1229 .long 0,1887436800,0,1822425088,0,1220542464,0,1423966208
1230 .long 0,3774873600,0,4246732800,0,3644850176,0,3311403008
1231 .long 0,2441084928,0,2376073216,0,2847932416,0,3051356160
1232 .align 64
1233 .Lrem_8bit:
1234 .value 0,450,900,582,1800,1738,1164,1358
1235 .value 3600,4050,3476,3158,2328,2266,2716,2910
1236 .value 7200,7650,8100,7782,6952,6890,6316,6510
1237 .value 4656,5106,4532,4214,5432,5370,5820,6014
1238 .value 14400,14722,15300,14854,16200,16010,15564,15630
1239 .value 13904,14226,13780,13334,12632,12442,13020,13086
1240 .value 9312,9634,10212,9766,9064,8874,8428,8494
1241 .value 10864,11186,10740,10294,11640,11450,12028,12094
1242 .value 28800,28994,29444,29382,30600,30282,29708,30158
1243 .value 32400,32594,32020,31958,31128,30810,31260,31710
1244 .value 27808,28002,28452,28390,27560,27242,26668,27118
1245 .value 25264,25458,24884,24822,26040,25722,26172,26622
1246 .value 18624,18690,19268,19078,20424,19978,19532,19854
1247 .value 18128,18194,17748,17558,16856,16410,16988,17310
1248 .value 21728,21794,22372,22182,21480,21034,20588,20910
1249 .value 23280,23346,22900,22710,24056,23610,24188,24510
1250 .value 57600,57538,57988,58182,58888,59338,58764,58446
1251 .value 61200,61138,60564,60758,59416,59866,60316,59998
1252 .value 64800,64738,65188,65382,64040,64490,63916,63598
1253 .value 62256,62194,61620,61814,62520,62970,63420,63102
1254 .value 55616,55426,56004,56070,56904,57226,56780,56334
1255 .value 55120,54930,54484,54550,53336,53658,54236,53790
1256 .value 50528,50338,50916,50982,49768,50090,49644,49198
1257 .value 52080,51890,51444,51510,52344,52666,53244,52798
1258 .value 37248,36930,37380,37830,38536,38730,38156,38094
1259 .value 40848,40530,39956,40406,39064,39258,39708,39646
1260 .value 36256,35938,36388,36838,35496,35690,35116,35054
1261 .value 33712,33394,32820,33270,33976,34170,34620,34558
1262 .value 43456,43010,43588,43910,44744,44810,44364,44174
1263 .value 42960,42514,42068,42390,41176,41242,41820,41630
1264 .value 46560,46114,46692,47014,45800,45866,45420,45230
1265 .value 48112,47666,47220,47542,48376,48442,49020,48830
1266 .byte 71,72,65,83,72,32,102,111,114,32,120,56,54,44,32,67
1267 .byte 82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112
1268 .byte 112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62
1269 .byte 0
1270