updated openssl code
[gnutls:gnutls.git] / lib / accelerated / x86 / coff / padlock-x86-coff.s
1 # Copyright (c) 2011-2012, Andy Polyakov <appro@openssl.org>
2 # All rights reserved.
3 #
4 # Redistribution and use in source and binary forms, with or without
5 # modification, are permitted provided that the following conditions
6 # are met:
7
8 #     * Redistributions of source code must retain copyright notices,
9 #      this list of conditions and the following disclaimer.
10 #
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.
15 #
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.
20 #
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
24 # those given above.
25 #
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.
37 #
38 # *** This file is auto-generated ***
39 #
40 .file   "devel/perlasm/e_padlock-x86.s"
41 .text
42 .globl  _padlock_capability
43 .def    _padlock_capability;    .scl    2;      .type   32;     .endef
44 .align  16
45 _padlock_capability:
46 .L_padlock_capability_begin:
47         pushl   %ebx
48         pushfl
49         popl    %eax
50         movl    %eax,%ecx
51         xorl    $2097152,%eax
52         pushl   %eax
53         popfl
54         pushfl
55         popl    %eax
56         xorl    %eax,%ecx
57         xorl    %eax,%eax
58         btl     $21,%ecx
59         jnc     .L000noluck
60         .byte   0x0f,0xa2
61         xorl    %eax,%eax
62         cmpl    $0x746e6543,%ebx
63         jne     .L000noluck
64         cmpl    $0x48727561,%edx
65         jne     .L000noluck
66         cmpl    $0x736c7561,%ecx
67         jne     .L000noluck
68         movl    $3221225472,%eax
69         .byte   0x0f,0xa2
70         movl    %eax,%edx
71         xorl    %eax,%eax
72         cmpl    $3221225473,%edx
73         jb      .L000noluck
74         movl    $1,%eax
75         .byte   0x0f,0xa2
76         orl     $15,%eax
77         xorl    %ebx,%ebx
78         andl    $4095,%eax
79         cmpl    $1791,%eax
80         sete    %bl
81         movl    $3221225473,%eax
82         pushl   %ebx
83         .byte   0x0f,0xa2
84         popl    %ebx
85         movl    %edx,%eax
86         shll    $4,%ebx
87         andl    $4294967279,%eax
88         orl     %ebx,%eax
89 .L000noluck:
90         popl    %ebx
91         ret
92 .globl  _padlock_key_bswap
93 .def    _padlock_key_bswap;     .scl    2;      .type   32;     .endef
94 .align  16
95 _padlock_key_bswap:
96 .L_padlock_key_bswap_begin:
97         movl    4(%esp),%edx
98         movl    240(%edx),%ecx
99 .L001bswap_loop:
100         movl    (%edx),%eax
101         bswap   %eax
102         movl    %eax,(%edx)
103         leal    4(%edx),%edx
104         subl    $1,%ecx
105         jnz     .L001bswap_loop
106         ret
107 .globl  _padlock_verify_context
108 .def    _padlock_verify_context;        .scl    2;      .type   32;     .endef
109 .align  16
110 _padlock_verify_context:
111 .L_padlock_verify_context_begin:
112         movl    4(%esp),%edx
113         leal    .Lpadlock_saved_context,%eax
114         pushfl
115         call    __padlock_verify_ctx
116 .L002verify_pic_point:
117         leal    4(%esp),%esp
118         ret
119 .def    __padlock_verify_ctx;   .scl    3;      .type   32;     .endef
120 .align  16
121 __padlock_verify_ctx:
122         btl     $30,4(%esp)
123         jnc     .L003verified
124         cmpl    (%eax),%edx
125         je      .L003verified
126         pushfl
127         popfl
128 .L003verified:
129         movl    %edx,(%eax)
130         ret
131 .globl  _padlock_reload_key
132 .def    _padlock_reload_key;    .scl    2;      .type   32;     .endef
133 .align  16
134 _padlock_reload_key:
135 .L_padlock_reload_key_begin:
136         pushfl
137         popfl
138         ret
139 .globl  _padlock_aes_block
140 .def    _padlock_aes_block;     .scl    2;      .type   32;     .endef
141 .align  16
142 _padlock_aes_block:
143 .L_padlock_aes_block_begin:
144         pushl   %edi
145         pushl   %esi
146         pushl   %ebx
147         movl    16(%esp),%edi
148         movl    20(%esp),%esi
149         movl    24(%esp),%edx
150         movl    $1,%ecx
151         leal    32(%edx),%ebx
152         leal    16(%edx),%edx
153 .byte   243,15,167,200
154         popl    %ebx
155         popl    %esi
156         popl    %edi
157         ret
158 .globl  _padlock_ecb_encrypt
159 .def    _padlock_ecb_encrypt;   .scl    2;      .type   32;     .endef
160 .align  16
161 _padlock_ecb_encrypt:
162 .L_padlock_ecb_encrypt_begin:
163         pushl   %ebp
164         pushl   %ebx
165         pushl   %esi
166         pushl   %edi
167         movl    20(%esp),%edi
168         movl    24(%esp),%esi
169         movl    28(%esp),%edx
170         movl    32(%esp),%ecx
171         testl   $15,%edx
172         jnz     .L004ecb_abort
173         testl   $15,%ecx
174         jnz     .L004ecb_abort
175         leal    .Lpadlock_saved_context,%eax
176         pushfl
177         cld
178         call    __padlock_verify_ctx
179 .L005ecb_pic_point:
180         leal    16(%edx),%edx
181         xorl    %eax,%eax
182         xorl    %ebx,%ebx
183         testl   $32,(%edx)
184         jnz     .L006ecb_aligned
185         testl   $15,%edi
186         setz    %al
187         testl   $15,%esi
188         setz    %bl
189         testl   %ebx,%eax
190         jnz     .L006ecb_aligned
191         negl    %eax
192         movl    $512,%ebx
193         notl    %eax
194         leal    -24(%esp),%ebp
195         cmpl    %ebx,%ecx
196         cmovcl  %ecx,%ebx
197         andl    %ebx,%eax
198         movl    %ecx,%ebx
199         negl    %eax
200         andl    $511,%ebx
201         leal    (%eax,%ebp,1),%esp
202         movl    $512,%eax
203         cmovzl  %eax,%ebx
204         movl    %ebp,%eax
205         andl    $-16,%ebp
206         andl    $-16,%esp
207         movl    %eax,16(%ebp)
208         cmpl    %ebx,%ecx
209         ja      .L007ecb_loop
210         movl    %esi,%eax
211         cmpl    %esp,%ebp
212         cmovel  %edi,%eax
213         addl    %ecx,%eax
214         negl    %eax
215         andl    $4095,%eax
216         cmpl    $128,%eax
217         movl    $-128,%eax
218         cmovael %ebx,%eax
219         andl    %eax,%ebx
220         jz      .L008ecb_unaligned_tail
221         jmp     .L007ecb_loop
222 .align  16
223 .L007ecb_loop:
224         movl    %edi,(%ebp)
225         movl    %esi,4(%ebp)
226         movl    %ecx,8(%ebp)
227         movl    %ebx,%ecx
228         movl    %ebx,12(%ebp)
229         testl   $15,%edi
230         cmovnzl %esp,%edi
231         testl   $15,%esi
232         jz      .L009ecb_inp_aligned
233         shrl    $2,%ecx
234 .byte   243,165
235         subl    %ebx,%edi
236         movl    %ebx,%ecx
237         movl    %edi,%esi
238 .L009ecb_inp_aligned:
239         leal    -16(%edx),%eax
240         leal    16(%edx),%ebx
241         shrl    $4,%ecx
242 .byte   243,15,167,200
243         movl    (%ebp),%edi
244         movl    12(%ebp),%ebx
245         testl   $15,%edi
246         jz      .L010ecb_out_aligned
247         movl    %ebx,%ecx
248         leal    (%esp),%esi
249         shrl    $2,%ecx
250 .byte   243,165
251         subl    %ebx,%edi
252 .L010ecb_out_aligned:
253         movl    4(%ebp),%esi
254         movl    8(%ebp),%ecx
255         addl    %ebx,%edi
256         addl    %ebx,%esi
257         subl    %ebx,%ecx
258         movl    $512,%ebx
259         jz      .L011ecb_break
260         cmpl    %ebx,%ecx
261         jae     .L007ecb_loop
262 .L008ecb_unaligned_tail:
263         xorl    %eax,%eax
264         cmpl    %ebp,%esp
265         cmovel  %ecx,%eax
266         subl    %eax,%esp
267         movl    %edi,%eax
268         movl    %ecx,%ebx
269         shrl    $2,%ecx
270         leal    (%esp),%edi
271 .byte   243,165
272         movl    %esp,%esi
273         movl    %eax,%edi
274         movl    %ebx,%ecx
275         jmp     .L007ecb_loop
276 .align  16
277 .L011ecb_break:
278         cmpl    %ebp,%esp
279         je      .L012ecb_done
280         pxor    %xmm0,%xmm0
281         leal    (%esp),%eax
282 .L013ecb_bzero:
283         movaps  %xmm0,(%eax)
284         leal    16(%eax),%eax
285         cmpl    %eax,%ebp
286         ja      .L013ecb_bzero
287 .L012ecb_done:
288         movl    16(%ebp),%ebp
289         leal    24(%ebp),%esp
290         jmp     .L014ecb_exit
291 .align  16
292 .L006ecb_aligned:
293         leal    (%esi,%ecx,1),%ebp
294         negl    %ebp
295         andl    $4095,%ebp
296         xorl    %eax,%eax
297         cmpl    $128,%ebp
298         movl    $127,%ebp
299         cmovael %eax,%ebp
300         andl    %ecx,%ebp
301         subl    %ebp,%ecx
302         jz      .L015ecb_aligned_tail
303         leal    -16(%edx),%eax
304         leal    16(%edx),%ebx
305         shrl    $4,%ecx
306 .byte   243,15,167,200
307         testl   %ebp,%ebp
308         jz      .L014ecb_exit
309 .L015ecb_aligned_tail:
310         movl    %ebp,%ecx
311         leal    -24(%esp),%ebp
312         movl    %ebp,%esp
313         movl    %ebp,%eax
314         subl    %ecx,%esp
315         andl    $-16,%ebp
316         andl    $-16,%esp
317         movl    %eax,16(%ebp)
318         movl    %edi,%eax
319         movl    %ecx,%ebx
320         shrl    $2,%ecx
321         leal    (%esp),%edi
322 .byte   243,165
323         movl    %esp,%esi
324         movl    %eax,%edi
325         movl    %ebx,%ecx
326         jmp     .L007ecb_loop
327 .L014ecb_exit:
328         movl    $1,%eax
329         leal    4(%esp),%esp
330 .L004ecb_abort:
331         popl    %edi
332         popl    %esi
333         popl    %ebx
334         popl    %ebp
335         ret
336 .globl  _padlock_cbc_encrypt
337 .def    _padlock_cbc_encrypt;   .scl    2;      .type   32;     .endef
338 .align  16
339 _padlock_cbc_encrypt:
340 .L_padlock_cbc_encrypt_begin:
341         pushl   %ebp
342         pushl   %ebx
343         pushl   %esi
344         pushl   %edi
345         movl    20(%esp),%edi
346         movl    24(%esp),%esi
347         movl    28(%esp),%edx
348         movl    32(%esp),%ecx
349         testl   $15,%edx
350         jnz     .L016cbc_abort
351         testl   $15,%ecx
352         jnz     .L016cbc_abort
353         leal    .Lpadlock_saved_context,%eax
354         pushfl
355         cld
356         call    __padlock_verify_ctx
357 .L017cbc_pic_point:
358         leal    16(%edx),%edx
359         xorl    %eax,%eax
360         xorl    %ebx,%ebx
361         testl   $32,(%edx)
362         jnz     .L018cbc_aligned
363         testl   $15,%edi
364         setz    %al
365         testl   $15,%esi
366         setz    %bl
367         testl   %ebx,%eax
368         jnz     .L018cbc_aligned
369         negl    %eax
370         movl    $512,%ebx
371         notl    %eax
372         leal    -24(%esp),%ebp
373         cmpl    %ebx,%ecx
374         cmovcl  %ecx,%ebx
375         andl    %ebx,%eax
376         movl    %ecx,%ebx
377         negl    %eax
378         andl    $511,%ebx
379         leal    (%eax,%ebp,1),%esp
380         movl    $512,%eax
381         cmovzl  %eax,%ebx
382         movl    %ebp,%eax
383         andl    $-16,%ebp
384         andl    $-16,%esp
385         movl    %eax,16(%ebp)
386         cmpl    %ebx,%ecx
387         ja      .L019cbc_loop
388         movl    %esi,%eax
389         cmpl    %esp,%ebp
390         cmovel  %edi,%eax
391         addl    %ecx,%eax
392         negl    %eax
393         andl    $4095,%eax
394         cmpl    $64,%eax
395         movl    $-64,%eax
396         cmovael %ebx,%eax
397         andl    %eax,%ebx
398         jz      .L020cbc_unaligned_tail
399         jmp     .L019cbc_loop
400 .align  16
401 .L019cbc_loop:
402         movl    %edi,(%ebp)
403         movl    %esi,4(%ebp)
404         movl    %ecx,8(%ebp)
405         movl    %ebx,%ecx
406         movl    %ebx,12(%ebp)
407         testl   $15,%edi
408         cmovnzl %esp,%edi
409         testl   $15,%esi
410         jz      .L021cbc_inp_aligned
411         shrl    $2,%ecx
412 .byte   243,165
413         subl    %ebx,%edi
414         movl    %ebx,%ecx
415         movl    %edi,%esi
416 .L021cbc_inp_aligned:
417         leal    -16(%edx),%eax
418         leal    16(%edx),%ebx
419         shrl    $4,%ecx
420 .byte   243,15,167,208
421         movaps  (%eax),%xmm0
422         movaps  %xmm0,-16(%edx)
423         movl    (%ebp),%edi
424         movl    12(%ebp),%ebx
425         testl   $15,%edi
426         jz      .L022cbc_out_aligned
427         movl    %ebx,%ecx
428         leal    (%esp),%esi
429         shrl    $2,%ecx
430 .byte   243,165
431         subl    %ebx,%edi
432 .L022cbc_out_aligned:
433         movl    4(%ebp),%esi
434         movl    8(%ebp),%ecx
435         addl    %ebx,%edi
436         addl    %ebx,%esi
437         subl    %ebx,%ecx
438         movl    $512,%ebx
439         jz      .L023cbc_break
440         cmpl    %ebx,%ecx
441         jae     .L019cbc_loop
442 .L020cbc_unaligned_tail:
443         xorl    %eax,%eax
444         cmpl    %ebp,%esp
445         cmovel  %ecx,%eax
446         subl    %eax,%esp
447         movl    %edi,%eax
448         movl    %ecx,%ebx
449         shrl    $2,%ecx
450         leal    (%esp),%edi
451 .byte   243,165
452         movl    %esp,%esi
453         movl    %eax,%edi
454         movl    %ebx,%ecx
455         jmp     .L019cbc_loop
456 .align  16
457 .L023cbc_break:
458         cmpl    %ebp,%esp
459         je      .L024cbc_done
460         pxor    %xmm0,%xmm0
461         leal    (%esp),%eax
462 .L025cbc_bzero:
463         movaps  %xmm0,(%eax)
464         leal    16(%eax),%eax
465         cmpl    %eax,%ebp
466         ja      .L025cbc_bzero
467 .L024cbc_done:
468         movl    16(%ebp),%ebp
469         leal    24(%ebp),%esp
470         jmp     .L026cbc_exit
471 .align  16
472 .L018cbc_aligned:
473         leal    (%esi,%ecx,1),%ebp
474         negl    %ebp
475         andl    $4095,%ebp
476         xorl    %eax,%eax
477         cmpl    $64,%ebp
478         movl    $63,%ebp
479         cmovael %eax,%ebp
480         andl    %ecx,%ebp
481         subl    %ebp,%ecx
482         jz      .L027cbc_aligned_tail
483         leal    -16(%edx),%eax
484         leal    16(%edx),%ebx
485         shrl    $4,%ecx
486 .byte   243,15,167,208
487         movaps  (%eax),%xmm0
488         movaps  %xmm0,-16(%edx)
489         testl   %ebp,%ebp
490         jz      .L026cbc_exit
491 .L027cbc_aligned_tail:
492         movl    %ebp,%ecx
493         leal    -24(%esp),%ebp
494         movl    %ebp,%esp
495         movl    %ebp,%eax
496         subl    %ecx,%esp
497         andl    $-16,%ebp
498         andl    $-16,%esp
499         movl    %eax,16(%ebp)
500         movl    %edi,%eax
501         movl    %ecx,%ebx
502         shrl    $2,%ecx
503         leal    (%esp),%edi
504 .byte   243,165
505         movl    %esp,%esi
506         movl    %eax,%edi
507         movl    %ebx,%ecx
508         jmp     .L019cbc_loop
509 .L026cbc_exit:
510         movl    $1,%eax
511         leal    4(%esp),%esp
512 .L016cbc_abort:
513         popl    %edi
514         popl    %esi
515         popl    %ebx
516         popl    %ebp
517         ret
518 .globl  _padlock_xstore
519 .def    _padlock_xstore;        .scl    2;      .type   32;     .endef
520 .align  16
521 _padlock_xstore:
522 .L_padlock_xstore_begin:
523         pushl   %edi
524         movl    8(%esp),%edi
525         movl    12(%esp),%edx
526 .byte   15,167,192
527         popl    %edi
528         ret
529 .def    __win32_segv_handler;   .scl    3;      .type   32;     .endef
530 .align  16
531 __win32_segv_handler:
532         movl    $1,%eax
533         movl    4(%esp),%edx
534         movl    12(%esp),%ecx
535         cmpl    $3221225477,(%edx)
536         jne     .L028ret
537         addl    $4,184(%ecx)
538         movl    $0,%eax
539 .L028ret:
540         ret
541 .globl  _padlock_sha1_oneshot
542 .def    _padlock_sha1_oneshot;  .scl    2;      .type   32;     .endef
543 .align  16
544 _padlock_sha1_oneshot:
545 .L_padlock_sha1_oneshot_begin:
546         pushl   %edi
547         pushl   %esi
548         xorl    %eax,%eax
549         movl    12(%esp),%edi
550         movl    16(%esp),%esi
551         movl    20(%esp),%ecx
552         pushl   __win32_segv_handler
553 .byte   100,255,48
554 .byte   100,137,32
555         movl    %esp,%edx
556         addl    $-128,%esp
557         movups  (%edi),%xmm0
558         andl    $-16,%esp
559         movl    16(%edi),%eax
560         movaps  %xmm0,(%esp)
561         movl    %esp,%edi
562         movl    %eax,16(%esp)
563         xorl    %eax,%eax
564 .byte   243,15,166,200
565         movaps  (%esp),%xmm0
566         movl    16(%esp),%eax
567         movl    %edx,%esp
568 .byte   100,143,5,0,0,0,0
569         leal    4(%esp),%esp
570         movl    16(%esp),%edi
571         movups  %xmm0,(%edi)
572         movl    %eax,16(%edi)
573         popl    %esi
574         popl    %edi
575         ret
576 .globl  _padlock_sha1_blocks
577 .def    _padlock_sha1_blocks;   .scl    2;      .type   32;     .endef
578 .align  16
579 _padlock_sha1_blocks:
580 .L_padlock_sha1_blocks_begin:
581         pushl   %edi
582         pushl   %esi
583         movl    12(%esp),%edi
584         movl    16(%esp),%esi
585         movl    %esp,%edx
586         movl    20(%esp),%ecx
587         addl    $-128,%esp
588         movups  (%edi),%xmm0
589         andl    $-16,%esp
590         movl    16(%edi),%eax
591         movaps  %xmm0,(%esp)
592         movl    %esp,%edi
593         movl    %eax,16(%esp)
594         movl    $-1,%eax
595 .byte   243,15,166,200
596         movaps  (%esp),%xmm0
597         movl    16(%esp),%eax
598         movl    %edx,%esp
599         movl    12(%esp),%edi
600         movups  %xmm0,(%edi)
601         movl    %eax,16(%edi)
602         popl    %esi
603         popl    %edi
604         ret
605 .globl  _padlock_sha256_oneshot
606 .def    _padlock_sha256_oneshot;        .scl    2;      .type   32;     .endef
607 .align  16
608 _padlock_sha256_oneshot:
609 .L_padlock_sha256_oneshot_begin:
610         pushl   %edi
611         pushl   %esi
612         xorl    %eax,%eax
613         movl    12(%esp),%edi
614         movl    16(%esp),%esi
615         movl    20(%esp),%ecx
616         pushl   __win32_segv_handler
617 .byte   100,255,48
618 .byte   100,137,32
619         movl    %esp,%edx
620         addl    $-128,%esp
621         movups  (%edi),%xmm0
622         andl    $-16,%esp
623         movups  16(%edi),%xmm1
624         movaps  %xmm0,(%esp)
625         movl    %esp,%edi
626         movaps  %xmm1,16(%esp)
627         xorl    %eax,%eax
628 .byte   243,15,166,208
629         movaps  (%esp),%xmm0
630         movaps  16(%esp),%xmm1
631         movl    %edx,%esp
632 .byte   100,143,5,0,0,0,0
633         leal    4(%esp),%esp
634         movl    16(%esp),%edi
635         movups  %xmm0,(%edi)
636         movups  %xmm1,16(%edi)
637         popl    %esi
638         popl    %edi
639         ret
640 .globl  _padlock_sha256_blocks
641 .def    _padlock_sha256_blocks; .scl    2;      .type   32;     .endef
642 .align  16
643 _padlock_sha256_blocks:
644 .L_padlock_sha256_blocks_begin:
645         pushl   %edi
646         pushl   %esi
647         movl    12(%esp),%edi
648         movl    16(%esp),%esi
649         movl    20(%esp),%ecx
650         movl    %esp,%edx
651         addl    $-128,%esp
652         movups  (%edi),%xmm0
653         andl    $-16,%esp
654         movups  16(%edi),%xmm1
655         movaps  %xmm0,(%esp)
656         movl    %esp,%edi
657         movaps  %xmm1,16(%esp)
658         movl    $-1,%eax
659 .byte   243,15,166,208
660         movaps  (%esp),%xmm0
661         movaps  16(%esp),%xmm1
662         movl    %edx,%esp
663         movl    12(%esp),%edi
664         movups  %xmm0,(%edi)
665         movups  %xmm1,16(%edi)
666         popl    %esi
667         popl    %edi
668         ret
669 .globl  _padlock_sha512_blocks
670 .def    _padlock_sha512_blocks; .scl    2;      .type   32;     .endef
671 .align  16
672 _padlock_sha512_blocks:
673 .L_padlock_sha512_blocks_begin:
674         pushl   %edi
675         pushl   %esi
676         movl    12(%esp),%edi
677         movl    16(%esp),%esi
678         movl    20(%esp),%ecx
679         movl    %esp,%edx
680         addl    $-128,%esp
681         movups  (%edi),%xmm0
682         andl    $-16,%esp
683         movups  16(%edi),%xmm1
684         movups  32(%edi),%xmm2
685         movups  48(%edi),%xmm3
686         movaps  %xmm0,(%esp)
687         movl    %esp,%edi
688         movaps  %xmm1,16(%esp)
689         movaps  %xmm2,32(%esp)
690         movaps  %xmm3,48(%esp)
691 .byte   243,15,166,224
692         movaps  (%esp),%xmm0
693         movaps  16(%esp),%xmm1
694         movaps  32(%esp),%xmm2
695         movaps  48(%esp),%xmm3
696         movl    %edx,%esp
697         movl    12(%esp),%edi
698         movups  %xmm0,(%edi)
699         movups  %xmm1,16(%edi)
700         movups  %xmm2,32(%edi)
701         movups  %xmm3,48(%edi)
702         popl    %esi
703         popl    %edi
704         ret
705 .byte   86,73,65,32,80,97,100,108,111,99,107,32,120,56,54,32
706 .byte   109,111,100,117,108,101,44,32,67,82,89,80,84,79,71,65
707 .byte   77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101
708 .byte   110,115,115,108,46,111,114,103,62,0
709 .align  16
710 .data
711 .align  4
712 .Lpadlock_saved_context:
713 .long   0