1 # Copyright (c) 2011-2012, Andy Polyakov <appro@openssl.org>
4 # Redistribution and use in source and binary forms, with or without
5 # modification, are permitted provided that the following conditions
8 # * Redistributions of source code must retain copyright notices,
9 # this list of conditions and the following disclaimer.
11 # * Redistributions in binary form must reproduce the above
12 # copyright notice, this list of conditions and the following
13 # disclaimer in the documentation and/or other materials
14 # provided with the distribution.
16 # * Neither the name of the Andy Polyakov nor the names of its
17 # copyright holder and contributors may be used to endorse or
18 # promote products derived from this software without specific
19 # prior written permission.
21 # ALTERNATIVELY, provided that this notice is retained in full, this
22 # product may be distributed under the terms of the GNU General Public
23 # License (GPL), in which case the provisions of the GPL apply INSTEAD OF
26 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS
27 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
28 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
29 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
30 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
31 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
32 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
33 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
34 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
35 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
36 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
38 # *** This file is auto-generated ***
52 .byte 102,15,56,220,209
57 .byte 102,15,56,221,209
73 .byte 102,15,56,222,209
78 .byte 102,15,56,223,209
95 .byte 102,15,56,220,209
96 .byte 102,15,56,220,217
98 .byte 102,15,56,220,225
100 .byte 102,15,56,220,208
101 .byte 102,15,56,220,216
103 .byte 102,15,56,220,224
107 .byte 102,15,56,220,209
108 .byte 102,15,56,220,217
109 .byte 102,15,56,220,225
110 .byte 102,15,56,221,208
111 .byte 102,15,56,221,216
112 .byte 102,15,56,221,224
120 movups
16(%rcx
),%xmm1
128 .byte 102,15,56,222,209
129 .byte 102,15,56,222,217
131 .byte 102,15,56,222,225
132 movups
16(%rcx
),%xmm1
133 .byte 102,15,56,222,208
134 .byte 102,15,56,222,216
136 .byte 102,15,56,222,224
140 .byte 102,15,56,222,209
141 .byte 102,15,56,222,217
142 .byte 102,15,56,222,225
143 .byte 102,15,56,223,208
144 .byte 102,15,56,223,216
145 .byte 102,15,56,223,224
153 movups
16(%rcx
),%xmm1
162 .byte 102,15,56,220,209
163 .byte 102,15,56,220,217
165 .byte 102,15,56,220,225
166 .byte 102,15,56,220,233
167 movups
16(%rcx
),%xmm1
168 .byte 102,15,56,220,208
169 .byte 102,15,56,220,216
171 .byte 102,15,56,220,224
172 .byte 102,15,56,220,232
176 .byte 102,15,56,220,209
177 .byte 102,15,56,220,217
178 .byte 102,15,56,220,225
179 .byte 102,15,56,220,233
180 .byte 102,15,56,221,208
181 .byte 102,15,56,221,216
182 .byte 102,15,56,221,224
183 .byte 102,15,56,221,232
191 movups
16(%rcx
),%xmm1
200 .byte 102,15,56,222,209
201 .byte 102,15,56,222,217
203 .byte 102,15,56,222,225
204 .byte 102,15,56,222,233
205 movups
16(%rcx
),%xmm1
206 .byte 102,15,56,222,208
207 .byte 102,15,56,222,216
209 .byte 102,15,56,222,224
210 .byte 102,15,56,222,232
214 .byte 102,15,56,222,209
215 .byte 102,15,56,222,217
216 .byte 102,15,56,222,225
217 .byte 102,15,56,222,233
218 .byte 102,15,56,223,208
219 .byte 102,15,56,223,216
220 .byte 102,15,56,223,224
221 .byte 102,15,56,223,232
229 movups
16(%rcx
),%xmm1
233 .byte 102,15,56,220,209
235 .byte 102,15,56,220,217
237 .byte 102,15,56,220,225
239 .byte 102,15,56,220,233
242 .byte 102,15,56,220,241
244 .byte 102,15,56,220,249
245 jmp
L$enc_loop6_enter
248 .byte 102,15,56,220,209
249 .byte 102,15,56,220,217
251 .byte 102,15,56,220,225
252 .byte 102,15,56,220,233
253 .byte 102,15,56,220,241
254 .byte 102,15,56,220,249
256 movups
16(%rcx
),%xmm1
257 .byte 102,15,56,220,208
258 .byte 102,15,56,220,216
260 .byte 102,15,56,220,224
261 .byte 102,15,56,220,232
262 .byte 102,15,56,220,240
263 .byte 102,15,56,220,248
267 .byte 102,15,56,220,209
268 .byte 102,15,56,220,217
269 .byte 102,15,56,220,225
270 .byte 102,15,56,220,233
271 .byte 102,15,56,220,241
272 .byte 102,15,56,220,249
273 .byte 102,15,56,221,208
274 .byte 102,15,56,221,216
275 .byte 102,15,56,221,224
276 .byte 102,15,56,221,232
277 .byte 102,15,56,221,240
278 .byte 102,15,56,221,248
286 movups
16(%rcx
),%xmm1
290 .byte 102,15,56,222,209
292 .byte 102,15,56,222,217
294 .byte 102,15,56,222,225
296 .byte 102,15,56,222,233
299 .byte 102,15,56,222,241
301 .byte 102,15,56,222,249
302 jmp
L$dec_loop6_enter
305 .byte 102,15,56,222,209
306 .byte 102,15,56,222,217
308 .byte 102,15,56,222,225
309 .byte 102,15,56,222,233
310 .byte 102,15,56,222,241
311 .byte 102,15,56,222,249
313 movups
16(%rcx
),%xmm1
314 .byte 102,15,56,222,208
315 .byte 102,15,56,222,216
317 .byte 102,15,56,222,224
318 .byte 102,15,56,222,232
319 .byte 102,15,56,222,240
320 .byte 102,15,56,222,248
324 .byte 102,15,56,222,209
325 .byte 102,15,56,222,217
326 .byte 102,15,56,222,225
327 .byte 102,15,56,222,233
328 .byte 102,15,56,222,241
329 .byte 102,15,56,222,249
330 .byte 102,15,56,223,208
331 .byte 102,15,56,223,216
332 .byte 102,15,56,223,224
333 .byte 102,15,56,223,232
334 .byte 102,15,56,223,240
335 .byte 102,15,56,223,248
343 movups
16(%rcx
),%xmm1
347 .byte 102,15,56,220,209
349 .byte 102,15,56,220,217
351 .byte 102,15,56,220,225
353 .byte 102,15,56,220,233
356 .byte 102,15,56,220,241
358 .byte 102,15,56,220,249
361 .byte 102,68,15,56,220,193
362 .byte 102,68,15,56,220,201
363 movups
16(%rcx
),%xmm1
364 jmp
L$enc_loop8_enter
367 .byte 102,15,56,220,209
368 .byte 102,15,56,220,217
370 .byte 102,15,56,220,225
371 .byte 102,15,56,220,233
372 .byte 102,15,56,220,241
373 .byte 102,15,56,220,249
374 .byte 102,68,15,56,220,193
375 .byte 102,68,15,56,220,201
376 movups
16(%rcx
),%xmm1
378 .byte 102,15,56,220,208
379 .byte 102,15,56,220,216
381 .byte 102,15,56,220,224
382 .byte 102,15,56,220,232
383 .byte 102,15,56,220,240
384 .byte 102,15,56,220,248
385 .byte 102,68,15,56,220,192
386 .byte 102,68,15,56,220,200
390 .byte 102,15,56,220,209
391 .byte 102,15,56,220,217
392 .byte 102,15,56,220,225
393 .byte 102,15,56,220,233
394 .byte 102,15,56,220,241
395 .byte 102,15,56,220,249
396 .byte 102,68,15,56,220,193
397 .byte 102,68,15,56,220,201
398 .byte 102,15,56,221,208
399 .byte 102,15,56,221,216
400 .byte 102,15,56,221,224
401 .byte 102,15,56,221,232
402 .byte 102,15,56,221,240
403 .byte 102,15,56,221,248
404 .byte 102,68,15,56,221,192
405 .byte 102,68,15,56,221,200
413 movups
16(%rcx
),%xmm1
417 .byte 102,15,56,222,209
419 .byte 102,15,56,222,217
421 .byte 102,15,56,222,225
423 .byte 102,15,56,222,233
426 .byte 102,15,56,222,241
428 .byte 102,15,56,222,249
431 .byte 102,68,15,56,222,193
432 .byte 102,68,15,56,222,201
433 movups
16(%rcx
),%xmm1
434 jmp
L$dec_loop8_enter
437 .byte 102,15,56,222,209
438 .byte 102,15,56,222,217
440 .byte 102,15,56,222,225
441 .byte 102,15,56,222,233
442 .byte 102,15,56,222,241
443 .byte 102,15,56,222,249
444 .byte 102,68,15,56,222,193
445 .byte 102,68,15,56,222,201
446 movups
16(%rcx
),%xmm1
448 .byte 102,15,56,222,208
449 .byte 102,15,56,222,216
451 .byte 102,15,56,222,224
452 .byte 102,15,56,222,232
453 .byte 102,15,56,222,240
454 .byte 102,15,56,222,248
455 .byte 102,68,15,56,222,192
456 .byte 102,68,15,56,222,200
460 .byte 102,15,56,222,209
461 .byte 102,15,56,222,217
462 .byte 102,15,56,222,225
463 .byte 102,15,56,222,233
464 .byte 102,15,56,222,241
465 .byte 102,15,56,222,249
466 .byte 102,68,15,56,222,193
467 .byte 102,68,15,56,222,201
468 .byte 102,15,56,223,208
469 .byte 102,15,56,223,216
470 .byte 102,15,56,223,224
471 .byte 102,15,56,223,232
472 .byte 102,15,56,223,240
473 .byte 102,15,56,223,248
474 .byte 102,68,15,56,223,192
475 .byte 102,68,15,56,223,200
478 .globl _aesni_ecb_encrypt
496 movdqu
16(%rdi
),%xmm3
497 movdqu
32(%rdi
),%xmm4
498 movdqu
48(%rdi
),%xmm5
499 movdqu
64(%rdi
),%xmm6
500 movdqu
80(%rdi
),%xmm7
501 movdqu
96(%rdi
),%xmm8
502 movdqu
112(%rdi
),%xmm9
505 jmp
L$ecb_enc_loop8_enter
512 movups
%xmm3
,16(%rsi
)
513 movdqu
16(%rdi
),%xmm3
514 movups
%xmm4
,32(%rsi
)
515 movdqu
32(%rdi
),%xmm4
516 movups
%xmm5
,48(%rsi
)
517 movdqu
48(%rdi
),%xmm5
518 movups
%xmm6
,64(%rsi
)
519 movdqu
64(%rdi
),%xmm6
520 movups
%xmm7
,80(%rsi
)
521 movdqu
80(%rdi
),%xmm7
522 movups
%xmm8
,96(%rsi
)
523 movdqu
96(%rdi
),%xmm8
524 movups
%xmm9
,112(%rsi
)
526 movdqu
112(%rdi
),%xmm9
528 L$ecb_enc_loop8_enter
:
537 movups
%xmm3
,16(%rsi
)
539 movups
%xmm4
,32(%rsi
)
540 movups
%xmm5
,48(%rsi
)
541 movups
%xmm6
,64(%rsi
)
542 movups
%xmm7
,80(%rsi
)
543 movups
%xmm8
,96(%rsi
)
544 movups
%xmm9
,112(%rsi
)
553 movups
16(%rdi
),%xmm3
555 movups
32(%rdi
),%xmm4
558 movups
48(%rdi
),%xmm5
560 movups
64(%rdi
),%xmm6
563 movups
80(%rdi
),%xmm7
565 movdqu
96(%rdi
),%xmm8
568 movups
%xmm3
,16(%rsi
)
569 movups
%xmm4
,32(%rsi
)
570 movups
%xmm5
,48(%rsi
)
571 movups
%xmm6
,64(%rsi
)
572 movups
%xmm7
,80(%rsi
)
573 movups
%xmm8
,96(%rsi
)
578 movups
16(%rcx
),%xmm1
582 .byte 102,15,56,220,209
587 .byte 102,15,56,221,209
595 movups
%xmm3
,16(%rsi
)
601 movups
%xmm3
,16(%rsi
)
602 movups
%xmm4
,32(%rsi
)
608 movups
%xmm3
,16(%rsi
)
609 movups
%xmm4
,32(%rsi
)
610 movups
%xmm5
,48(%rsi
)
617 movups
%xmm3
,16(%rsi
)
618 movups
%xmm4
,32(%rsi
)
619 movups
%xmm5
,48(%rsi
)
620 movups
%xmm6
,64(%rsi
)
626 movups
%xmm3
,16(%rsi
)
627 movups
%xmm4
,32(%rsi
)
628 movups
%xmm5
,48(%rsi
)
629 movups
%xmm6
,64(%rsi
)
630 movups
%xmm7
,80(%rsi
)
639 movdqu
16(%rdi
),%xmm3
640 movdqu
32(%rdi
),%xmm4
641 movdqu
48(%rdi
),%xmm5
642 movdqu
64(%rdi
),%xmm6
643 movdqu
80(%rdi
),%xmm7
644 movdqu
96(%rdi
),%xmm8
645 movdqu
112(%rdi
),%xmm9
648 jmp
L$ecb_dec_loop8_enter
655 movups
%xmm3
,16(%rsi
)
656 movdqu
16(%rdi
),%xmm3
657 movups
%xmm4
,32(%rsi
)
658 movdqu
32(%rdi
),%xmm4
659 movups
%xmm5
,48(%rsi
)
660 movdqu
48(%rdi
),%xmm5
661 movups
%xmm6
,64(%rsi
)
662 movdqu
64(%rdi
),%xmm6
663 movups
%xmm7
,80(%rsi
)
664 movdqu
80(%rdi
),%xmm7
665 movups
%xmm8
,96(%rsi
)
666 movdqu
96(%rdi
),%xmm8
667 movups
%xmm9
,112(%rsi
)
669 movdqu
112(%rdi
),%xmm9
671 L$ecb_dec_loop8_enter
:
681 movups
%xmm3
,16(%rsi
)
683 movups
%xmm4
,32(%rsi
)
684 movups
%xmm5
,48(%rsi
)
685 movups
%xmm6
,64(%rsi
)
686 movups
%xmm7
,80(%rsi
)
687 movups
%xmm8
,96(%rsi
)
688 movups
%xmm9
,112(%rsi
)
697 movups
16(%rdi
),%xmm3
699 movups
32(%rdi
),%xmm4
702 movups
48(%rdi
),%xmm5
704 movups
64(%rdi
),%xmm6
707 movups
80(%rdi
),%xmm7
709 movups
96(%rdi
),%xmm8
713 movups
%xmm3
,16(%rsi
)
714 movups
%xmm4
,32(%rsi
)
715 movups
%xmm5
,48(%rsi
)
716 movups
%xmm6
,64(%rsi
)
717 movups
%xmm7
,80(%rsi
)
718 movups
%xmm8
,96(%rsi
)
723 movups
16(%rcx
),%xmm1
727 .byte 102,15,56,222,209
732 .byte 102,15,56,223,209
740 movups
%xmm3
,16(%rsi
)
746 movups
%xmm3
,16(%rsi
)
747 movups
%xmm4
,32(%rsi
)
753 movups
%xmm3
,16(%rsi
)
754 movups
%xmm4
,32(%rsi
)
755 movups
%xmm5
,48(%rsi
)
762 movups
%xmm3
,16(%rsi
)
763 movups
%xmm4
,32(%rsi
)
764 movups
%xmm5
,48(%rsi
)
765 movups
%xmm6
,64(%rsi
)
771 movups
%xmm3
,16(%rsi
)
772 movups
%xmm4
,32(%rsi
)
773 movups
%xmm5
,48(%rsi
)
774 movups
%xmm6
,64(%rsi
)
775 movups
%xmm7
,80(%rsi
)
780 .globl _aesni_ccm64_encrypt_blocks
783 _aesni_ccm64_encrypt_blocks
:
786 movdqa
L$increment64
(%rip
),%xmm6
787 movdqa
L$bswap_mask
(%rip
),%xmm7
794 .byte 102,68,15,56,0,207
795 jmp
L$ccm64_enc_outer
803 movups
16(%r11),%xmm1
810 .byte 102,15,56,220,209
812 .byte 102,15,56,220,217
813 movups
16(%rcx
),%xmm1
814 .byte 102,15,56,220,208
816 .byte 102,15,56,220,216
818 jnz
L$ccm64_enc2_loop
819 .byte 102,15,56,220,209
820 .byte 102,15,56,220,217
822 .byte 102,15,56,221,208
823 .byte 102,15,56,221,216
831 .byte 102,15,56,0,215
832 jnz
L$ccm64_enc_outer
837 .globl _aesni_ccm64_decrypt_blocks
840 _aesni_ccm64_decrypt_blocks
:
844 movdqa
L$increment64
(%rip
),%xmm6
845 movdqa
L$bswap_mask
(%rip
),%xmm7
850 .byte 102,68,15,56,0,207
852 movups
16(%rcx
),%xmm1
856 .byte 102,15,56,220,209
861 .byte 102,15,56,221,209
865 jmp
L$ccm64_dec_outer
873 .byte 102,15,56,0,215
880 movups
16(%r11),%xmm1
888 .byte 102,15,56,220,209
890 .byte 102,15,56,220,217
891 movups
16(%rcx
),%xmm1
892 .byte 102,15,56,220,208
894 .byte 102,15,56,220,216
896 jnz
L$ccm64_dec2_loop
899 .byte 102,15,56,220,209
900 .byte 102,15,56,220,217
902 .byte 102,15,56,221,208
903 .byte 102,15,56,221,216
904 jmp
L$ccm64_dec_outer
910 movups
16(%r11),%xmm1
915 .byte 102,15,56,220,217
920 .byte 102,15,56,221,217
924 .globl _aesni_ctr32_encrypt_blocks
927 _aesni_ctr32_encrypt_blocks
:
929 je
L$ctr32_one_shortcut
932 movdqa
L$bswap_mask
(%rip
),%xmm15
934 .byte 102,69,15,58,22,242,3
935 .byte 102,68,15,58,34,240,3
941 .byte 102,69,15,58,34,226,0
943 .byte 102,69,15,58,34,235,0
945 .byte 102,69,15,58,34,226,1
947 .byte 102,69,15,58,34,235,1
949 .byte 102,69,15,58,34,226,2
951 .byte 102,69,15,58,34,235,2
952 movdqa
%xmm12
,-40(%rsp
)
953 .byte 102,69,15,56,0,231
954 movdqa
%xmm13
,-24(%rsp
)
955 .byte 102,69,15,56,0,239
957 pshufd $
192,%xmm12
,%xmm2
958 pshufd $
128,%xmm12
,%xmm3
959 pshufd $
64,%xmm12
,%xmm4
970 pshufd $
192,%xmm13
,%xmm5
973 pshufd $
128,%xmm13
,%xmm6
975 movups
16(%r11),%xmm1
976 pshufd $
64,%xmm13
,%xmm7
987 .byte 102,15,56,220,209
990 .byte 102,15,56,220,217
991 movdqa
L$increment32
(%rip
),%xmm13
993 .byte 102,15,56,220,225
994 movdqa
-40(%rsp
),%xmm12
996 .byte 102,15,56,220,233
1000 .byte 102,15,56,220,241
1001 .byte 102,15,56,220,249
1002 jmp
L$ctr32_enc_loop6_enter
1005 .byte 102,15,56,220,209
1006 .byte 102,15,56,220,217
1008 .byte 102,15,56,220,225
1009 .byte 102,15,56,220,233
1010 .byte 102,15,56,220,241
1011 .byte 102,15,56,220,249
1012 L$ctr32_enc_loop6_enter
:
1013 movups
16(%rcx
),%xmm1
1014 .byte 102,15,56,220,208
1015 .byte 102,15,56,220,216
1017 .byte 102,15,56,220,224
1018 .byte 102,15,56,220,232
1019 .byte 102,15,56,220,240
1020 .byte 102,15,56,220,248
1022 jnz
L$ctr32_enc_loop6
1024 .byte 102,15,56,220,209
1026 .byte 102,15,56,220,217
1027 paddd
-24(%rsp
),%xmm13
1028 .byte 102,15,56,220,225
1029 movdqa
%xmm12
,-40(%rsp
)
1030 .byte 102,15,56,220,233
1031 movdqa
%xmm13
,-24(%rsp
)
1032 .byte 102,15,56,220,241
1033 .byte 102,69,15,56,0,231
1034 .byte 102,15,56,220,249
1035 .byte 102,69,15,56,0,239
1037 .byte 102,15,56,221,208
1039 .byte 102,15,56,221,216
1040 movups
16(%rdi
),%xmm9
1041 .byte 102,15,56,221,224
1042 movups
32(%rdi
),%xmm10
1043 .byte 102,15,56,221,232
1044 movups
48(%rdi
),%xmm11
1045 .byte 102,15,56,221,240
1046 movups
64(%rdi
),%xmm1
1047 .byte 102,15,56,221,248
1048 movups
80(%rdi
),%xmm0
1052 pshufd $
192,%xmm12
,%xmm2
1054 pshufd $
128,%xmm12
,%xmm3
1057 pshufd $
64,%xmm12
,%xmm4
1058 movups
%xmm9
,16(%rsi
)
1060 movups
%xmm10
,32(%rsi
)
1062 movups
%xmm11
,48(%rsi
)
1064 movups
%xmm1
,64(%rsi
)
1065 movups
%xmm0
,80(%rsi
)
1074 leal
1(%rax
,%rax
,1),%eax
1083 movups
16(%rdi
),%xmm9
1086 pshufd $
192,%xmm13
,%xmm5
1088 movups
32(%rdi
),%xmm10
1092 pshufd $
128,%xmm13
,%xmm6
1094 movups
48(%rdi
),%xmm11
1100 call _aesni_encrypt6
1102 movups
64(%rdi
),%xmm1
1107 movups
%xmm9
,16(%rsi
)
1109 movups
%xmm10
,32(%rsi
)
1111 movups
%xmm11
,48(%rsi
)
1112 movups
%xmm1
,64(%rsi
)
1116 L$ctr32_one_shortcut
:
1122 movups
16(%rcx
),%xmm1
1126 .byte 102,15,56,220,209
1131 .byte 102,15,56,221,209
1139 call _aesni_encrypt3
1143 movups
%xmm9
,16(%rsi
)
1148 call _aesni_encrypt3
1153 movups
%xmm9
,16(%rsi
)
1154 movups
%xmm10
,32(%rsi
)
1159 call _aesni_encrypt4
1164 movups
%xmm9
,16(%rsi
)
1166 movups
%xmm10
,32(%rsi
)
1167 movups
%xmm11
,48(%rsi
)
1172 .globl _aesni_xts_encrypt
1176 leaq
-104(%rsp
),%rsp
1179 movl
240(%rcx
),%r10d
1181 movups
16(%r8),%xmm1
1185 .byte 102,68,15,56,220,249
1190 .byte 102,68,15,56,221,249
1196 movdqa
L$xts_magic
(%rip
),%xmm8
1198 pcmpgtd
%xmm15
,%xmm14
1199 pshufd $
19,%xmm14
,%xmm9
1201 movdqa
%xmm15
,%xmm10
1204 pcmpgtd
%xmm15
,%xmm14
1206 pshufd $
19,%xmm14
,%xmm9
1208 movdqa
%xmm15
,%xmm11
1211 pcmpgtd
%xmm15
,%xmm14
1213 pshufd $
19,%xmm14
,%xmm9
1215 movdqa
%xmm15
,%xmm12
1218 pcmpgtd
%xmm15
,%xmm14
1220 pshufd $
19,%xmm14
,%xmm9
1222 movdqa
%xmm15
,%xmm13
1225 pcmpgtd
%xmm15
,%xmm14
1233 jmp
L$xts_enc_grandloop
1236 L$xts_enc_grandloop
:
1237 pshufd $
19,%xmm14
,%xmm9
1238 movdqa
%xmm15
,%xmm14
1240 movdqu
0(%rdi
),%xmm2
1242 movdqu
16(%rdi
),%xmm3
1245 movdqu
32(%rdi
),%xmm4
1247 movdqu
48(%rdi
),%xmm5
1249 movdqu
64(%rdi
),%xmm6
1251 movdqu
80(%rdi
),%xmm7
1260 movups
16(%r11),%xmm1
1263 movdqa
%xmm10
,0(%rsp
)
1264 .byte 102,15,56,220,209
1267 movdqa
%xmm11
,16(%rsp
)
1268 .byte 102,15,56,220,217
1270 movdqa
%xmm12
,32(%rsp
)
1271 .byte 102,15,56,220,225
1273 movdqa
%xmm13
,48(%rsp
)
1274 .byte 102,15,56,220,233
1278 movdqa
%xmm14
,64(%rsp
)
1279 .byte 102,15,56,220,241
1280 movdqa
%xmm15
,80(%rsp
)
1281 .byte 102,15,56,220,249
1283 pcmpgtd
%xmm15
,%xmm14
1284 jmp
L$xts_enc_loop6_enter
1288 .byte 102,15,56,220,209
1289 .byte 102,15,56,220,217
1291 .byte 102,15,56,220,225
1292 .byte 102,15,56,220,233
1293 .byte 102,15,56,220,241
1294 .byte 102,15,56,220,249
1295 L$xts_enc_loop6_enter
:
1296 movups
16(%rcx
),%xmm1
1297 .byte 102,15,56,220,208
1298 .byte 102,15,56,220,216
1300 .byte 102,15,56,220,224
1301 .byte 102,15,56,220,232
1302 .byte 102,15,56,220,240
1303 .byte 102,15,56,220,248
1307 pshufd $
19,%xmm14
,%xmm9
1310 .byte 102,15,56,220,209
1312 .byte 102,15,56,220,217
1313 pcmpgtd
%xmm15
,%xmm14
1314 .byte 102,15,56,220,225
1316 .byte 102,15,56,220,233
1317 .byte 102,15,56,220,241
1318 .byte 102,15,56,220,249
1319 movups
16(%rcx
),%xmm1
1321 pshufd $
19,%xmm14
,%xmm9
1323 movdqa
%xmm15
,%xmm10
1325 .byte 102,15,56,220,208
1327 .byte 102,15,56,220,216
1328 pcmpgtd
%xmm15
,%xmm14
1329 .byte 102,15,56,220,224
1331 .byte 102,15,56,220,232
1332 .byte 102,15,56,220,240
1333 .byte 102,15,56,220,248
1334 movups
32(%rcx
),%xmm0
1336 pshufd $
19,%xmm14
,%xmm9
1338 movdqa
%xmm15
,%xmm11
1340 .byte 102,15,56,220,209
1342 .byte 102,15,56,220,217
1343 pcmpgtd
%xmm15
,%xmm14
1344 .byte 102,15,56,220,225
1346 .byte 102,15,56,220,233
1347 .byte 102,15,56,220,241
1348 .byte 102,15,56,220,249
1350 pshufd $
19,%xmm14
,%xmm9
1352 movdqa
%xmm15
,%xmm12
1354 .byte 102,15,56,221,208
1356 .byte 102,15,56,221,216
1357 pcmpgtd
%xmm15
,%xmm14
1358 .byte 102,15,56,221,224
1360 .byte 102,15,56,221,232
1361 .byte 102,15,56,221,240
1362 .byte 102,15,56,221,248
1364 pshufd $
19,%xmm14
,%xmm9
1366 movdqa
%xmm15
,%xmm13
1370 xorps
16(%rsp
),%xmm3
1371 pcmpgtd
%xmm15
,%xmm14
1374 xorps
32(%rsp
),%xmm4
1375 movups
%xmm2
,0(%rsi
)
1376 xorps
48(%rsp
),%xmm5
1377 movups
%xmm3
,16(%rsi
)
1378 xorps
64(%rsp
),%xmm6
1379 movups
%xmm4
,32(%rsi
)
1380 xorps
80(%rsp
),%xmm7
1381 movups
%xmm5
,48(%rsi
)
1383 movups
%xmm6
,64(%rsi
)
1384 movups
%xmm7
,80(%rsi
)
1387 jnc
L$xts_enc_grandloop
1389 leal
3(%rax
,%rax
,1),%eax
1405 pshufd $
19,%xmm14
,%xmm9
1406 movdqa
%xmm15
,%xmm14
1410 movdqu
16(%rdi
),%xmm3
1413 movdqu
32(%rdi
),%xmm4
1415 movdqu
48(%rdi
),%xmm5
1417 movdqu
64(%rdi
),%xmm6
1423 call _aesni_encrypt6
1426 movdqa
%xmm15
,%xmm10
1431 movdqu
%xmm3
,16(%rsi
)
1433 movdqu
%xmm4
,32(%rsi
)
1434 movdqu
%xmm5
,48(%rsi
)
1435 movdqu
%xmm6
,64(%rsi
)
1445 movups
16(%rcx
),%xmm1
1449 .byte 102,15,56,220,209
1454 .byte 102,15,56,221,209
1456 movdqa
%xmm11
,%xmm10
1464 movups
16(%rdi
),%xmm3
1469 call _aesni_encrypt3
1472 movdqa
%xmm12
,%xmm10
1475 movups
%xmm3
,16(%rsi
)
1482 movups
16(%rdi
),%xmm3
1483 movups
32(%rdi
),%xmm4
1489 call _aesni_encrypt3
1492 movdqa
%xmm13
,%xmm10
1496 movups
%xmm3
,16(%rsi
)
1497 movups
%xmm4
,32(%rsi
)
1504 movups
16(%rdi
),%xmm3
1505 movups
32(%rdi
),%xmm4
1507 movups
48(%rdi
),%xmm5
1513 call _aesni_encrypt4
1516 movdqa
%xmm15
,%xmm10
1521 movups
%xmm3
,16(%rsi
)
1522 movups
%xmm4
,32(%rsi
)
1523 movups
%xmm5
,48(%rsi
)
1535 movzbl
-16(%rsi
),%ecx
1547 movups
-16(%rsi
),%xmm2
1550 movups
16(%rcx
),%xmm1
1554 .byte 102,15,56,220,209
1559 .byte 102,15,56,221,209
1561 movups
%xmm2
,-16(%rsi
)
1568 .globl _aesni_xts_decrypt
1572 leaq
-104(%rsp
),%rsp
1575 movl
240(%rcx
),%r10d
1577 movups
16(%r8),%xmm1
1581 .byte 102,68,15,56,220,249
1586 .byte 102,68,15,56,221,249
1598 movdqa
L$xts_magic
(%rip
),%xmm8
1600 pcmpgtd
%xmm15
,%xmm14
1601 pshufd $
19,%xmm14
,%xmm9
1603 movdqa
%xmm15
,%xmm10
1606 pcmpgtd
%xmm15
,%xmm14
1608 pshufd $
19,%xmm14
,%xmm9
1610 movdqa
%xmm15
,%xmm11
1613 pcmpgtd
%xmm15
,%xmm14
1615 pshufd $
19,%xmm14
,%xmm9
1617 movdqa
%xmm15
,%xmm12
1620 pcmpgtd
%xmm15
,%xmm14
1622 pshufd $
19,%xmm14
,%xmm9
1624 movdqa
%xmm15
,%xmm13
1627 pcmpgtd
%xmm15
,%xmm14
1635 jmp
L$xts_dec_grandloop
1638 L$xts_dec_grandloop
:
1639 pshufd $
19,%xmm14
,%xmm9
1640 movdqa
%xmm15
,%xmm14
1642 movdqu
0(%rdi
),%xmm2
1644 movdqu
16(%rdi
),%xmm3
1647 movdqu
32(%rdi
),%xmm4
1649 movdqu
48(%rdi
),%xmm5
1651 movdqu
64(%rdi
),%xmm6
1653 movdqu
80(%rdi
),%xmm7
1662 movups
16(%r11),%xmm1
1665 movdqa
%xmm10
,0(%rsp
)
1666 .byte 102,15,56,222,209
1669 movdqa
%xmm11
,16(%rsp
)
1670 .byte 102,15,56,222,217
1672 movdqa
%xmm12
,32(%rsp
)
1673 .byte 102,15,56,222,225
1675 movdqa
%xmm13
,48(%rsp
)
1676 .byte 102,15,56,222,233
1680 movdqa
%xmm14
,64(%rsp
)
1681 .byte 102,15,56,222,241
1682 movdqa
%xmm15
,80(%rsp
)
1683 .byte 102,15,56,222,249
1685 pcmpgtd
%xmm15
,%xmm14
1686 jmp
L$xts_dec_loop6_enter
1690 .byte 102,15,56,222,209
1691 .byte 102,15,56,222,217
1693 .byte 102,15,56,222,225
1694 .byte 102,15,56,222,233
1695 .byte 102,15,56,222,241
1696 .byte 102,15,56,222,249
1697 L$xts_dec_loop6_enter
:
1698 movups
16(%rcx
),%xmm1
1699 .byte 102,15,56,222,208
1700 .byte 102,15,56,222,216
1702 .byte 102,15,56,222,224
1703 .byte 102,15,56,222,232
1704 .byte 102,15,56,222,240
1705 .byte 102,15,56,222,248
1709 pshufd $
19,%xmm14
,%xmm9
1712 .byte 102,15,56,222,209
1714 .byte 102,15,56,222,217
1715 pcmpgtd
%xmm15
,%xmm14
1716 .byte 102,15,56,222,225
1718 .byte 102,15,56,222,233
1719 .byte 102,15,56,222,241
1720 .byte 102,15,56,222,249
1721 movups
16(%rcx
),%xmm1
1723 pshufd $
19,%xmm14
,%xmm9
1725 movdqa
%xmm15
,%xmm10
1727 .byte 102,15,56,222,208
1729 .byte 102,15,56,222,216
1730 pcmpgtd
%xmm15
,%xmm14
1731 .byte 102,15,56,222,224
1733 .byte 102,15,56,222,232
1734 .byte 102,15,56,222,240
1735 .byte 102,15,56,222,248
1736 movups
32(%rcx
),%xmm0
1738 pshufd $
19,%xmm14
,%xmm9
1740 movdqa
%xmm15
,%xmm11
1742 .byte 102,15,56,222,209
1744 .byte 102,15,56,222,217
1745 pcmpgtd
%xmm15
,%xmm14
1746 .byte 102,15,56,222,225
1748 .byte 102,15,56,222,233
1749 .byte 102,15,56,222,241
1750 .byte 102,15,56,222,249
1752 pshufd $
19,%xmm14
,%xmm9
1754 movdqa
%xmm15
,%xmm12
1756 .byte 102,15,56,223,208
1758 .byte 102,15,56,223,216
1759 pcmpgtd
%xmm15
,%xmm14
1760 .byte 102,15,56,223,224
1762 .byte 102,15,56,223,232
1763 .byte 102,15,56,223,240
1764 .byte 102,15,56,223,248
1766 pshufd $
19,%xmm14
,%xmm9
1768 movdqa
%xmm15
,%xmm13
1772 xorps
16(%rsp
),%xmm3
1773 pcmpgtd
%xmm15
,%xmm14
1776 xorps
32(%rsp
),%xmm4
1777 movups
%xmm2
,0(%rsi
)
1778 xorps
48(%rsp
),%xmm5
1779 movups
%xmm3
,16(%rsi
)
1780 xorps
64(%rsp
),%xmm6
1781 movups
%xmm4
,32(%rsi
)
1782 xorps
80(%rsp
),%xmm7
1783 movups
%xmm5
,48(%rsi
)
1785 movups
%xmm6
,64(%rsi
)
1786 movups
%xmm7
,80(%rsi
)
1789 jnc
L$xts_dec_grandloop
1791 leal
3(%rax
,%rax
,1),%eax
1807 pshufd $
19,%xmm14
,%xmm9
1808 movdqa
%xmm15
,%xmm14
1812 movdqu
16(%rdi
),%xmm3
1815 movdqu
32(%rdi
),%xmm4
1817 movdqu
48(%rdi
),%xmm5
1819 movdqu
64(%rdi
),%xmm6
1825 call _aesni_decrypt6
1832 movdqu
%xmm3
,16(%rsi
)
1834 movdqu
%xmm4
,32(%rsi
)
1836 movdqu
%xmm5
,48(%rsi
)
1837 pcmpgtd
%xmm15
,%xmm14
1838 movdqu
%xmm6
,64(%rsi
)
1840 pshufd $
19,%xmm14
,%xmm11
1844 movdqa
%xmm15
,%xmm10
1856 movups
16(%rcx
),%xmm1
1860 .byte 102,15,56,222,209
1865 .byte 102,15,56,223,209
1867 movdqa
%xmm11
,%xmm10
1869 movdqa
%xmm12
,%xmm11
1876 movups
16(%rdi
),%xmm3
1881 call _aesni_decrypt3
1884 movdqa
%xmm12
,%xmm10
1886 movdqa
%xmm13
,%xmm11
1888 movups
%xmm3
,16(%rsi
)
1895 movups
16(%rdi
),%xmm3
1896 movups
32(%rdi
),%xmm4
1902 call _aesni_decrypt3
1905 movdqa
%xmm13
,%xmm10
1907 movdqa
%xmm15
,%xmm11
1910 movups
%xmm3
,16(%rsi
)
1911 movups
%xmm4
,32(%rsi
)
1917 pshufd $
19,%xmm14
,%xmm9
1918 movdqa
%xmm15
,%xmm14
1922 movups
16(%rdi
),%xmm3
1925 movups
32(%rdi
),%xmm4
1927 movups
48(%rdi
),%xmm5
1933 call _aesni_decrypt4
1936 movdqa
%xmm14
,%xmm10
1938 movdqa
%xmm15
,%xmm11
1942 movups
%xmm3
,16(%rsi
)
1943 movups
%xmm4
,32(%rsi
)
1944 movups
%xmm5
,48(%rsi
)
1960 movups
16(%rcx
),%xmm1
1964 .byte 102,15,56,222,209
1969 .byte 102,15,56,223,209
1974 movzbl
16(%rdi
),%eax
1990 movups
16(%rcx
),%xmm1
1994 .byte 102,15,56,222,209
1999 .byte 102,15,56,223,209
2008 .globl _aesni_cbc_encrypt
2015 movl
240(%rcx
),%r10d
2032 movups
16(%rcx
),%xmm1
2037 .byte 102,15,56,220,209
2042 .byte 102,15,56,221,209
2045 movups
%xmm2
,0(%rsi
)
2078 movaps
%xmm9
,-24(%rsp
)
2079 jmp
L$cbc_dec_loop8_enter
2082 movaps
%xmm0
,-24(%rsp
)
2085 L$cbc_dec_loop8_enter
:
2088 movups
16(%rdi
),%xmm3
2089 movups
16(%rcx
),%xmm1
2092 movdqu
32(%rdi
),%xmm4
2094 movdqu
48(%rdi
),%xmm5
2096 movdqu
64(%rdi
),%xmm6
2097 .byte 102,15,56,222,209
2099 movdqu
80(%rdi
),%xmm7
2100 .byte 102,15,56,222,217
2102 movdqu
96(%rdi
),%xmm8
2103 .byte 102,15,56,222,225
2105 movdqu
112(%rdi
),%xmm9
2106 .byte 102,15,56,222,233
2109 .byte 102,15,56,222,241
2111 .byte 102,15,56,222,249
2114 .byte 102,68,15,56,222,193
2115 .byte 102,68,15,56,222,201
2116 movups
16(%rcx
),%xmm1
2118 call
L$dec_loop8_enter
2121 movups
16(%rdi
),%xmm0
2122 xorps
-24(%rsp
),%xmm2
2124 movups
32(%rdi
),%xmm1
2126 movups
48(%rdi
),%xmm0
2128 movups
64(%rdi
),%xmm1
2130 movups
80(%rdi
),%xmm0
2132 movups
96(%rdi
),%xmm1
2134 movups
112(%rdi
),%xmm0
2137 movups
%xmm3
,16(%rsi
)
2138 movups
%xmm4
,32(%rsi
)
2139 movups
%xmm5
,48(%rsi
)
2141 movups
%xmm6
,64(%rsi
)
2143 movups
%xmm7
,80(%rsi
)
2145 movups
%xmm8
,96(%rsi
)
2153 jle
L$cbc_dec_tail_collected
2155 leal
1(%r10,%r10,1),%eax
2163 movups
16(%rdi
),%xmm3
2168 movups
32(%rdi
),%xmm4
2173 movups
48(%rdi
),%xmm5
2177 movups
64(%rdi
),%xmm6
2181 movups
80(%rdi
),%xmm7
2185 movups
96(%rdi
),%xmm8
2186 movaps
%xmm9
,-24(%rsp
)
2187 call _aesni_decrypt8
2189 movups
16(%rdi
),%xmm0
2190 xorps
-24(%rsp
),%xmm2
2192 movups
32(%rdi
),%xmm1
2194 movups
48(%rdi
),%xmm0
2196 movups
64(%rdi
),%xmm1
2198 movups
80(%rdi
),%xmm0
2200 movups
96(%rdi
),%xmm9
2203 movups
%xmm3
,16(%rsi
)
2204 movups
%xmm4
,32(%rsi
)
2205 movups
%xmm5
,48(%rsi
)
2206 movups
%xmm6
,64(%rsi
)
2207 movups
%xmm7
,80(%rsi
)
2211 jmp
L$cbc_dec_tail_collected
2215 movups
16(%rcx
),%xmm1
2219 .byte 102,15,56,222,209
2224 .byte 102,15,56,223,209
2228 jmp
L$cbc_dec_tail_collected
2232 call _aesni_decrypt3
2240 jmp
L$cbc_dec_tail_collected
2243 call _aesni_decrypt3
2248 movups
%xmm3
,16(%rsi
)
2253 jmp
L$cbc_dec_tail_collected
2256 call _aesni_decrypt4
2258 movups
48(%rdi
),%xmm9
2262 movups
%xmm3
,16(%rsi
)
2264 movups
%xmm4
,32(%rsi
)
2268 jmp
L$cbc_dec_tail_collected
2272 call _aesni_decrypt6
2273 movups
16(%rdi
),%xmm1
2274 movups
32(%rdi
),%xmm0
2278 movups
48(%rdi
),%xmm1
2280 movups
64(%rdi
),%xmm9
2283 movups
%xmm3
,16(%rsi
)
2284 movups
%xmm4
,32(%rsi
)
2285 movups
%xmm5
,48(%rsi
)
2289 jmp
L$cbc_dec_tail_collected
2292 call _aesni_decrypt6
2293 movups
16(%rdi
),%xmm1
2294 movups
32(%rdi
),%xmm0
2298 movups
48(%rdi
),%xmm1
2300 movups
64(%rdi
),%xmm0
2302 movups
80(%rdi
),%xmm9
2305 movups
%xmm3
,16(%rsi
)
2306 movups
%xmm4
,32(%rsi
)
2307 movups
%xmm5
,48(%rsi
)
2308 movups
%xmm6
,64(%rsi
)
2312 jmp
L$cbc_dec_tail_collected
2314 L$cbc_dec_tail_collected
:
2317 jnz
L$cbc_dec_tail_partial
2321 L$cbc_dec_tail_partial
:
2322 movaps
%xmm2
,-24(%rsp
)
2333 .globl _aesni_set_decrypt_key
2336 _aesni_set_decrypt_key
:
2337 .byte 0x48,0x83,0xEC,0x08
2338 call __aesni_set_encrypt_key
2342 leaq
16(%rdx
,%rsi
,1),%rdi
2354 .byte 102,15,56,219,192
2355 .byte 102,15,56,219,201
2358 movups
%xmm0
,16(%rdi
)
2359 movups
%xmm1
,-16(%rdx
)
2361 ja
L$dec_key_inverse
2364 .byte 102,15,56,219,192
2369 L$SEH_end_set_decrypt_key
:
2371 .globl _aesni_set_encrypt_key
2374 _aesni_set_encrypt_key
:
2375 __aesni_set_encrypt_key
:
2376 .byte 0x48,0x83,0xEC,0x08
2396 .byte 102,15,58,223,200,1
2397 call
L$key_expansion_128_cold
2398 .byte 102,15,58,223,200,2
2399 call
L$key_expansion_128
2400 .byte 102,15,58,223,200,4
2401 call
L$key_expansion_128
2402 .byte 102,15,58,223,200,8
2403 call
L$key_expansion_128
2404 .byte 102,15,58,223,200,16
2405 call
L$key_expansion_128
2406 .byte 102,15,58,223,200,32
2407 call
L$key_expansion_128
2408 .byte 102,15,58,223,200,64
2409 call
L$key_expansion_128
2410 .byte 102,15,58,223,200,128
2411 call
L$key_expansion_128
2412 .byte 102,15,58,223,200,27
2413 call
L$key_expansion_128
2414 .byte 102,15,58,223,200,54
2415 call
L$key_expansion_128
2426 .byte 102,15,58,223,202,1
2427 call
L$key_expansion_192a_cold
2428 .byte 102,15,58,223,202,2
2429 call
L$key_expansion_192b
2430 .byte 102,15,58,223,202,4
2431 call
L$key_expansion_192a
2432 .byte 102,15,58,223,202,8
2433 call
L$key_expansion_192b
2434 .byte 102,15,58,223,202,16
2435 call
L$key_expansion_192a
2436 .byte 102,15,58,223,202,32
2437 call
L$key_expansion_192b
2438 .byte 102,15,58,223,202,64
2439 call
L$key_expansion_192a
2440 .byte 102,15,58,223,202,128
2441 call
L$key_expansion_192b
2449 movups
16(%rdi
),%xmm2
2453 movups
%xmm2
,16(%rdx
)
2454 .byte 102,15,58,223,202,1
2455 call
L$key_expansion_256a_cold
2456 .byte 102,15,58,223,200,1
2457 call
L$key_expansion_256b
2458 .byte 102,15,58,223,202,2
2459 call
L$key_expansion_256a
2460 .byte 102,15,58,223,200,2
2461 call
L$key_expansion_256b
2462 .byte 102,15,58,223,202,4
2463 call
L$key_expansion_256a
2464 .byte 102,15,58,223,200,4
2465 call
L$key_expansion_256b
2466 .byte 102,15,58,223,202,8
2467 call
L$key_expansion_256a
2468 .byte 102,15,58,223,200,8
2469 call
L$key_expansion_256b
2470 .byte 102,15,58,223,202,16
2471 call
L$key_expansion_256a
2472 .byte 102,15,58,223,200,16
2473 call
L$key_expansion_256b
2474 .byte 102,15,58,223,202,32
2475 call
L$key_expansion_256a
2476 .byte 102,15,58,223,200,32
2477 call
L$key_expansion_256b
2478 .byte 102,15,58,223,202,64
2479 call
L$key_expansion_256a
2491 L$SEH_end_set_encrypt_key
:
2494 L$key_expansion_128
:
2497 L$key_expansion_128_cold
:
2498 shufps $
16,%xmm0
,%xmm4
2500 shufps $
140,%xmm0
,%xmm4
2502 shufps $
255,%xmm1
,%xmm1
2507 L$key_expansion_192a
:
2510 L$key_expansion_192a_cold
:
2512 L$key_expansion_192b_warm
:
2513 shufps $
16,%xmm0
,%xmm4
2516 shufps $
140,%xmm0
,%xmm4
2519 pshufd $
85,%xmm1
,%xmm1
2522 pshufd $
255,%xmm0
,%xmm3
2527 L$key_expansion_192b
:
2529 shufps $
68,%xmm0
,%xmm5
2531 shufps $
78,%xmm2
,%xmm3
2532 movups
%xmm3
,16(%rax
)
2534 jmp
L$key_expansion_192b_warm
2537 L$key_expansion_256a
:
2540 L$key_expansion_256a_cold
:
2541 shufps $
16,%xmm0
,%xmm4
2543 shufps $
140,%xmm0
,%xmm4
2545 shufps $
255,%xmm1
,%xmm1
2550 L$key_expansion_256b
:
2554 shufps $
16,%xmm2
,%xmm4
2556 shufps $
140,%xmm2
,%xmm4
2558 shufps $
170,%xmm1
,%xmm1
2565 .byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
2573 .byte 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69,83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0