]> CyberLeo.Net >> Repos - FreeBSD/stable/10.git/blob - secure/lib/libcrypto/amd64/rc4-md5-x86_64.S
- Make libcrypto.so position independent on i386.
[FreeBSD/stable/10.git] / secure / lib / libcrypto / amd64 / rc4-md5-x86_64.S
1 # $FreeBSD$
2 # Do not modify. This file is auto-generated from rc4-md5-x86_64.pl.
3 .text   
4 .align  16
5
6 .globl  rc4_md5_enc
7 .type   rc4_md5_enc,@function
8 rc4_md5_enc:
9         cmpq    $0,%r9
10         je      .Labort
11         pushq   %rbx
12         pushq   %rbp
13         pushq   %r12
14         pushq   %r13
15         pushq   %r14
16         pushq   %r15
17         subq    $40,%rsp
18 .Lbody:
19         movq    %rcx,%r11
20         movq    %r9,%r12
21         movq    %rsi,%r13
22         movq    %rdx,%r14
23         movq    %r8,%r15
24         xorq    %rbp,%rbp
25         xorq    %rcx,%rcx
26
27         leaq    8(%rdi),%rdi
28         movb    -8(%rdi),%bpl
29         movb    -4(%rdi),%cl
30
31         incb    %bpl
32         subq    %r13,%r14
33         movl    (%rdi,%rbp,4),%eax
34         addb    %al,%cl
35         leaq    (%rdi,%rbp,4),%rsi
36         shlq    $6,%r12
37         addq    %r15,%r12
38         movq    %r12,16(%rsp)
39
40         movq    %r11,24(%rsp)
41         movl    0(%r11),%r8d
42         movl    4(%r11),%r9d
43         movl    8(%r11),%r10d
44         movl    12(%r11),%r11d
45         jmp     .Loop
46
47 .align  16
48 .Loop:
49         movl    %r8d,0(%rsp)
50         movl    %r9d,4(%rsp)
51         movl    %r10d,8(%rsp)
52         movl    %r11d,%r12d
53         movl    %r11d,12(%rsp)
54         pxor    %xmm0,%xmm0
55         movl    (%rdi,%rcx,4),%edx
56         xorl    %r10d,%r12d
57         movl    %eax,(%rdi,%rcx,4)
58         andl    %r9d,%r12d
59         addl    0(%r15),%r8d
60         addb    %dl,%al
61         movl    4(%rsi),%ebx
62         addl    $3614090360,%r8d
63         xorl    %r11d,%r12d
64         movzbl  %al,%eax
65         movl    %edx,0(%rsi)
66         addl    %r12d,%r8d
67         addb    %bl,%cl
68         roll    $7,%r8d
69         movl    %r10d,%r12d
70         movd    (%rdi,%rax,4),%xmm0
71
72         addl    %r9d,%r8d
73         pxor    %xmm1,%xmm1
74         movl    (%rdi,%rcx,4),%edx
75         xorl    %r9d,%r12d
76         movl    %ebx,(%rdi,%rcx,4)
77         andl    %r8d,%r12d
78         addl    4(%r15),%r11d
79         addb    %dl,%bl
80         movl    8(%rsi),%eax
81         addl    $3905402710,%r11d
82         xorl    %r10d,%r12d
83         movzbl  %bl,%ebx
84         movl    %edx,4(%rsi)
85         addl    %r12d,%r11d
86         addb    %al,%cl
87         roll    $12,%r11d
88         movl    %r9d,%r12d
89         movd    (%rdi,%rbx,4),%xmm1
90
91         addl    %r8d,%r11d
92         movl    (%rdi,%rcx,4),%edx
93         xorl    %r8d,%r12d
94         movl    %eax,(%rdi,%rcx,4)
95         andl    %r11d,%r12d
96         addl    8(%r15),%r10d
97         addb    %dl,%al
98         movl    12(%rsi),%ebx
99         addl    $606105819,%r10d
100         xorl    %r9d,%r12d
101         movzbl  %al,%eax
102         movl    %edx,8(%rsi)
103         addl    %r12d,%r10d
104         addb    %bl,%cl
105         roll    $17,%r10d
106         movl    %r8d,%r12d
107         pinsrw  $1,(%rdi,%rax,4),%xmm0
108
109         addl    %r11d,%r10d
110         movl    (%rdi,%rcx,4),%edx
111         xorl    %r11d,%r12d
112         movl    %ebx,(%rdi,%rcx,4)
113         andl    %r10d,%r12d
114         addl    12(%r15),%r9d
115         addb    %dl,%bl
116         movl    16(%rsi),%eax
117         addl    $3250441966,%r9d
118         xorl    %r8d,%r12d
119         movzbl  %bl,%ebx
120         movl    %edx,12(%rsi)
121         addl    %r12d,%r9d
122         addb    %al,%cl
123         roll    $22,%r9d
124         movl    %r11d,%r12d
125         pinsrw  $1,(%rdi,%rbx,4),%xmm1
126
127         addl    %r10d,%r9d
128         movl    (%rdi,%rcx,4),%edx
129         xorl    %r10d,%r12d
130         movl    %eax,(%rdi,%rcx,4)
131         andl    %r9d,%r12d
132         addl    16(%r15),%r8d
133         addb    %dl,%al
134         movl    20(%rsi),%ebx
135         addl    $4118548399,%r8d
136         xorl    %r11d,%r12d
137         movzbl  %al,%eax
138         movl    %edx,16(%rsi)
139         addl    %r12d,%r8d
140         addb    %bl,%cl
141         roll    $7,%r8d
142         movl    %r10d,%r12d
143         pinsrw  $2,(%rdi,%rax,4),%xmm0
144
145         addl    %r9d,%r8d
146         movl    (%rdi,%rcx,4),%edx
147         xorl    %r9d,%r12d
148         movl    %ebx,(%rdi,%rcx,4)
149         andl    %r8d,%r12d
150         addl    20(%r15),%r11d
151         addb    %dl,%bl
152         movl    24(%rsi),%eax
153         addl    $1200080426,%r11d
154         xorl    %r10d,%r12d
155         movzbl  %bl,%ebx
156         movl    %edx,20(%rsi)
157         addl    %r12d,%r11d
158         addb    %al,%cl
159         roll    $12,%r11d
160         movl    %r9d,%r12d
161         pinsrw  $2,(%rdi,%rbx,4),%xmm1
162
163         addl    %r8d,%r11d
164         movl    (%rdi,%rcx,4),%edx
165         xorl    %r8d,%r12d
166         movl    %eax,(%rdi,%rcx,4)
167         andl    %r11d,%r12d
168         addl    24(%r15),%r10d
169         addb    %dl,%al
170         movl    28(%rsi),%ebx
171         addl    $2821735955,%r10d
172         xorl    %r9d,%r12d
173         movzbl  %al,%eax
174         movl    %edx,24(%rsi)
175         addl    %r12d,%r10d
176         addb    %bl,%cl
177         roll    $17,%r10d
178         movl    %r8d,%r12d
179         pinsrw  $3,(%rdi,%rax,4),%xmm0
180
181         addl    %r11d,%r10d
182         movl    (%rdi,%rcx,4),%edx
183         xorl    %r11d,%r12d
184         movl    %ebx,(%rdi,%rcx,4)
185         andl    %r10d,%r12d
186         addl    28(%r15),%r9d
187         addb    %dl,%bl
188         movl    32(%rsi),%eax
189         addl    $4249261313,%r9d
190         xorl    %r8d,%r12d
191         movzbl  %bl,%ebx
192         movl    %edx,28(%rsi)
193         addl    %r12d,%r9d
194         addb    %al,%cl
195         roll    $22,%r9d
196         movl    %r11d,%r12d
197         pinsrw  $3,(%rdi,%rbx,4),%xmm1
198
199         addl    %r10d,%r9d
200         movl    (%rdi,%rcx,4),%edx
201         xorl    %r10d,%r12d
202         movl    %eax,(%rdi,%rcx,4)
203         andl    %r9d,%r12d
204         addl    32(%r15),%r8d
205         addb    %dl,%al
206         movl    36(%rsi),%ebx
207         addl    $1770035416,%r8d
208         xorl    %r11d,%r12d
209         movzbl  %al,%eax
210         movl    %edx,32(%rsi)
211         addl    %r12d,%r8d
212         addb    %bl,%cl
213         roll    $7,%r8d
214         movl    %r10d,%r12d
215         pinsrw  $4,(%rdi,%rax,4),%xmm0
216
217         addl    %r9d,%r8d
218         movl    (%rdi,%rcx,4),%edx
219         xorl    %r9d,%r12d
220         movl    %ebx,(%rdi,%rcx,4)
221         andl    %r8d,%r12d
222         addl    36(%r15),%r11d
223         addb    %dl,%bl
224         movl    40(%rsi),%eax
225         addl    $2336552879,%r11d
226         xorl    %r10d,%r12d
227         movzbl  %bl,%ebx
228         movl    %edx,36(%rsi)
229         addl    %r12d,%r11d
230         addb    %al,%cl
231         roll    $12,%r11d
232         movl    %r9d,%r12d
233         pinsrw  $4,(%rdi,%rbx,4),%xmm1
234
235         addl    %r8d,%r11d
236         movl    (%rdi,%rcx,4),%edx
237         xorl    %r8d,%r12d
238         movl    %eax,(%rdi,%rcx,4)
239         andl    %r11d,%r12d
240         addl    40(%r15),%r10d
241         addb    %dl,%al
242         movl    44(%rsi),%ebx
243         addl    $4294925233,%r10d
244         xorl    %r9d,%r12d
245         movzbl  %al,%eax
246         movl    %edx,40(%rsi)
247         addl    %r12d,%r10d
248         addb    %bl,%cl
249         roll    $17,%r10d
250         movl    %r8d,%r12d
251         pinsrw  $5,(%rdi,%rax,4),%xmm0
252
253         addl    %r11d,%r10d
254         movl    (%rdi,%rcx,4),%edx
255         xorl    %r11d,%r12d
256         movl    %ebx,(%rdi,%rcx,4)
257         andl    %r10d,%r12d
258         addl    44(%r15),%r9d
259         addb    %dl,%bl
260         movl    48(%rsi),%eax
261         addl    $2304563134,%r9d
262         xorl    %r8d,%r12d
263         movzbl  %bl,%ebx
264         movl    %edx,44(%rsi)
265         addl    %r12d,%r9d
266         addb    %al,%cl
267         roll    $22,%r9d
268         movl    %r11d,%r12d
269         pinsrw  $5,(%rdi,%rbx,4),%xmm1
270
271         addl    %r10d,%r9d
272         movl    (%rdi,%rcx,4),%edx
273         xorl    %r10d,%r12d
274         movl    %eax,(%rdi,%rcx,4)
275         andl    %r9d,%r12d
276         addl    48(%r15),%r8d
277         addb    %dl,%al
278         movl    52(%rsi),%ebx
279         addl    $1804603682,%r8d
280         xorl    %r11d,%r12d
281         movzbl  %al,%eax
282         movl    %edx,48(%rsi)
283         addl    %r12d,%r8d
284         addb    %bl,%cl
285         roll    $7,%r8d
286         movl    %r10d,%r12d
287         pinsrw  $6,(%rdi,%rax,4),%xmm0
288
289         addl    %r9d,%r8d
290         movl    (%rdi,%rcx,4),%edx
291         xorl    %r9d,%r12d
292         movl    %ebx,(%rdi,%rcx,4)
293         andl    %r8d,%r12d
294         addl    52(%r15),%r11d
295         addb    %dl,%bl
296         movl    56(%rsi),%eax
297         addl    $4254626195,%r11d
298         xorl    %r10d,%r12d
299         movzbl  %bl,%ebx
300         movl    %edx,52(%rsi)
301         addl    %r12d,%r11d
302         addb    %al,%cl
303         roll    $12,%r11d
304         movl    %r9d,%r12d
305         pinsrw  $6,(%rdi,%rbx,4),%xmm1
306
307         addl    %r8d,%r11d
308         movl    (%rdi,%rcx,4),%edx
309         xorl    %r8d,%r12d
310         movl    %eax,(%rdi,%rcx,4)
311         andl    %r11d,%r12d
312         addl    56(%r15),%r10d
313         addb    %dl,%al
314         movl    60(%rsi),%ebx
315         addl    $2792965006,%r10d
316         xorl    %r9d,%r12d
317         movzbl  %al,%eax
318         movl    %edx,56(%rsi)
319         addl    %r12d,%r10d
320         addb    %bl,%cl
321         roll    $17,%r10d
322         movl    %r8d,%r12d
323         pinsrw  $7,(%rdi,%rax,4),%xmm0
324
325         addl    %r11d,%r10d
326         movdqu  (%r13),%xmm2
327         movl    (%rdi,%rcx,4),%edx
328         xorl    %r11d,%r12d
329         movl    %ebx,(%rdi,%rcx,4)
330         andl    %r10d,%r12d
331         addl    60(%r15),%r9d
332         addb    %dl,%bl
333         movl    64(%rsi),%eax
334         addl    $1236535329,%r9d
335         xorl    %r8d,%r12d
336         movzbl  %bl,%ebx
337         movl    %edx,60(%rsi)
338         addl    %r12d,%r9d
339         addb    %al,%cl
340         roll    $22,%r9d
341         movl    %r10d,%r12d
342         pinsrw  $7,(%rdi,%rbx,4),%xmm1
343
344         addl    %r10d,%r9d
345         psllq   $8,%xmm1
346         pxor    %xmm0,%xmm2
347         pxor    %xmm1,%xmm2
348         pxor    %xmm0,%xmm0
349         movl    (%rdi,%rcx,4),%edx
350         xorl    %r9d,%r12d
351         movl    %eax,(%rdi,%rcx,4)
352         andl    %r11d,%r12d
353         addl    4(%r15),%r8d
354         addb    %dl,%al
355         movl    68(%rsi),%ebx
356         addl    $4129170786,%r8d
357         xorl    %r10d,%r12d
358         movzbl  %al,%eax
359         movl    %edx,64(%rsi)
360         addl    %r12d,%r8d
361         addb    %bl,%cl
362         roll    $5,%r8d
363         movl    %r9d,%r12d
364         movd    (%rdi,%rax,4),%xmm0
365
366         addl    %r9d,%r8d
367         pxor    %xmm1,%xmm1
368         movl    (%rdi,%rcx,4),%edx
369         xorl    %r8d,%r12d
370         movl    %ebx,(%rdi,%rcx,4)
371         andl    %r10d,%r12d
372         addl    24(%r15),%r11d
373         addb    %dl,%bl
374         movl    72(%rsi),%eax
375         addl    $3225465664,%r11d
376         xorl    %r9d,%r12d
377         movzbl  %bl,%ebx
378         movl    %edx,68(%rsi)
379         addl    %r12d,%r11d
380         addb    %al,%cl
381         roll    $9,%r11d
382         movl    %r8d,%r12d
383         movd    (%rdi,%rbx,4),%xmm1
384
385         addl    %r8d,%r11d
386         movl    (%rdi,%rcx,4),%edx
387         xorl    %r11d,%r12d
388         movl    %eax,(%rdi,%rcx,4)
389         andl    %r9d,%r12d
390         addl    44(%r15),%r10d
391         addb    %dl,%al
392         movl    76(%rsi),%ebx
393         addl    $643717713,%r10d
394         xorl    %r8d,%r12d
395         movzbl  %al,%eax
396         movl    %edx,72(%rsi)
397         addl    %r12d,%r10d
398         addb    %bl,%cl
399         roll    $14,%r10d
400         movl    %r11d,%r12d
401         pinsrw  $1,(%rdi,%rax,4),%xmm0
402
403         addl    %r11d,%r10d
404         movl    (%rdi,%rcx,4),%edx
405         xorl    %r10d,%r12d
406         movl    %ebx,(%rdi,%rcx,4)
407         andl    %r8d,%r12d
408         addl    0(%r15),%r9d
409         addb    %dl,%bl
410         movl    80(%rsi),%eax
411         addl    $3921069994,%r9d
412         xorl    %r11d,%r12d
413         movzbl  %bl,%ebx
414         movl    %edx,76(%rsi)
415         addl    %r12d,%r9d
416         addb    %al,%cl
417         roll    $20,%r9d
418         movl    %r10d,%r12d
419         pinsrw  $1,(%rdi,%rbx,4),%xmm1
420
421         addl    %r10d,%r9d
422         movl    (%rdi,%rcx,4),%edx
423         xorl    %r9d,%r12d
424         movl    %eax,(%rdi,%rcx,4)
425         andl    %r11d,%r12d
426         addl    20(%r15),%r8d
427         addb    %dl,%al
428         movl    84(%rsi),%ebx
429         addl    $3593408605,%r8d
430         xorl    %r10d,%r12d
431         movzbl  %al,%eax
432         movl    %edx,80(%rsi)
433         addl    %r12d,%r8d
434         addb    %bl,%cl
435         roll    $5,%r8d
436         movl    %r9d,%r12d
437         pinsrw  $2,(%rdi,%rax,4),%xmm0
438
439         addl    %r9d,%r8d
440         movl    (%rdi,%rcx,4),%edx
441         xorl    %r8d,%r12d
442         movl    %ebx,(%rdi,%rcx,4)
443         andl    %r10d,%r12d
444         addl    40(%r15),%r11d
445         addb    %dl,%bl
446         movl    88(%rsi),%eax
447         addl    $38016083,%r11d
448         xorl    %r9d,%r12d
449         movzbl  %bl,%ebx
450         movl    %edx,84(%rsi)
451         addl    %r12d,%r11d
452         addb    %al,%cl
453         roll    $9,%r11d
454         movl    %r8d,%r12d
455         pinsrw  $2,(%rdi,%rbx,4),%xmm1
456
457         addl    %r8d,%r11d
458         movl    (%rdi,%rcx,4),%edx
459         xorl    %r11d,%r12d
460         movl    %eax,(%rdi,%rcx,4)
461         andl    %r9d,%r12d
462         addl    60(%r15),%r10d
463         addb    %dl,%al
464         movl    92(%rsi),%ebx
465         addl    $3634488961,%r10d
466         xorl    %r8d,%r12d
467         movzbl  %al,%eax
468         movl    %edx,88(%rsi)
469         addl    %r12d,%r10d
470         addb    %bl,%cl
471         roll    $14,%r10d
472         movl    %r11d,%r12d
473         pinsrw  $3,(%rdi,%rax,4),%xmm0
474
475         addl    %r11d,%r10d
476         movl    (%rdi,%rcx,4),%edx
477         xorl    %r10d,%r12d
478         movl    %ebx,(%rdi,%rcx,4)
479         andl    %r8d,%r12d
480         addl    16(%r15),%r9d
481         addb    %dl,%bl
482         movl    96(%rsi),%eax
483         addl    $3889429448,%r9d
484         xorl    %r11d,%r12d
485         movzbl  %bl,%ebx
486         movl    %edx,92(%rsi)
487         addl    %r12d,%r9d
488         addb    %al,%cl
489         roll    $20,%r9d
490         movl    %r10d,%r12d
491         pinsrw  $3,(%rdi,%rbx,4),%xmm1
492
493         addl    %r10d,%r9d
494         movl    (%rdi,%rcx,4),%edx
495         xorl    %r9d,%r12d
496         movl    %eax,(%rdi,%rcx,4)
497         andl    %r11d,%r12d
498         addl    36(%r15),%r8d
499         addb    %dl,%al
500         movl    100(%rsi),%ebx
501         addl    $568446438,%r8d
502         xorl    %r10d,%r12d
503         movzbl  %al,%eax
504         movl    %edx,96(%rsi)
505         addl    %r12d,%r8d
506         addb    %bl,%cl
507         roll    $5,%r8d
508         movl    %r9d,%r12d
509         pinsrw  $4,(%rdi,%rax,4),%xmm0
510
511         addl    %r9d,%r8d
512         movl    (%rdi,%rcx,4),%edx
513         xorl    %r8d,%r12d
514         movl    %ebx,(%rdi,%rcx,4)
515         andl    %r10d,%r12d
516         addl    56(%r15),%r11d
517         addb    %dl,%bl
518         movl    104(%rsi),%eax
519         addl    $3275163606,%r11d
520         xorl    %r9d,%r12d
521         movzbl  %bl,%ebx
522         movl    %edx,100(%rsi)
523         addl    %r12d,%r11d
524         addb    %al,%cl
525         roll    $9,%r11d
526         movl    %r8d,%r12d
527         pinsrw  $4,(%rdi,%rbx,4),%xmm1
528
529         addl    %r8d,%r11d
530         movl    (%rdi,%rcx,4),%edx
531         xorl    %r11d,%r12d
532         movl    %eax,(%rdi,%rcx,4)
533         andl    %r9d,%r12d
534         addl    12(%r15),%r10d
535         addb    %dl,%al
536         movl    108(%rsi),%ebx
537         addl    $4107603335,%r10d
538         xorl    %r8d,%r12d
539         movzbl  %al,%eax
540         movl    %edx,104(%rsi)
541         addl    %r12d,%r10d
542         addb    %bl,%cl
543         roll    $14,%r10d
544         movl    %r11d,%r12d
545         pinsrw  $5,(%rdi,%rax,4),%xmm0
546
547         addl    %r11d,%r10d
548         movl    (%rdi,%rcx,4),%edx
549         xorl    %r10d,%r12d
550         movl    %ebx,(%rdi,%rcx,4)
551         andl    %r8d,%r12d
552         addl    32(%r15),%r9d
553         addb    %dl,%bl
554         movl    112(%rsi),%eax
555         addl    $1163531501,%r9d
556         xorl    %r11d,%r12d
557         movzbl  %bl,%ebx
558         movl    %edx,108(%rsi)
559         addl    %r12d,%r9d
560         addb    %al,%cl
561         roll    $20,%r9d
562         movl    %r10d,%r12d
563         pinsrw  $5,(%rdi,%rbx,4),%xmm1
564
565         addl    %r10d,%r9d
566         movl    (%rdi,%rcx,4),%edx
567         xorl    %r9d,%r12d
568         movl    %eax,(%rdi,%rcx,4)
569         andl    %r11d,%r12d
570         addl    52(%r15),%r8d
571         addb    %dl,%al
572         movl    116(%rsi),%ebx
573         addl    $2850285829,%r8d
574         xorl    %r10d,%r12d
575         movzbl  %al,%eax
576         movl    %edx,112(%rsi)
577         addl    %r12d,%r8d
578         addb    %bl,%cl
579         roll    $5,%r8d
580         movl    %r9d,%r12d
581         pinsrw  $6,(%rdi,%rax,4),%xmm0
582
583         addl    %r9d,%r8d
584         movl    (%rdi,%rcx,4),%edx
585         xorl    %r8d,%r12d
586         movl    %ebx,(%rdi,%rcx,4)
587         andl    %r10d,%r12d
588         addl    8(%r15),%r11d
589         addb    %dl,%bl
590         movl    120(%rsi),%eax
591         addl    $4243563512,%r11d
592         xorl    %r9d,%r12d
593         movzbl  %bl,%ebx
594         movl    %edx,116(%rsi)
595         addl    %r12d,%r11d
596         addb    %al,%cl
597         roll    $9,%r11d
598         movl    %r8d,%r12d
599         pinsrw  $6,(%rdi,%rbx,4),%xmm1
600
601         addl    %r8d,%r11d
602         movl    (%rdi,%rcx,4),%edx
603         xorl    %r11d,%r12d
604         movl    %eax,(%rdi,%rcx,4)
605         andl    %r9d,%r12d
606         addl    28(%r15),%r10d
607         addb    %dl,%al
608         movl    124(%rsi),%ebx
609         addl    $1735328473,%r10d
610         xorl    %r8d,%r12d
611         movzbl  %al,%eax
612         movl    %edx,120(%rsi)
613         addl    %r12d,%r10d
614         addb    %bl,%cl
615         roll    $14,%r10d
616         movl    %r11d,%r12d
617         pinsrw  $7,(%rdi,%rax,4),%xmm0
618
619         addl    %r11d,%r10d
620         movdqu  16(%r13),%xmm3
621         addb    $32,%bpl
622         movl    (%rdi,%rcx,4),%edx
623         xorl    %r10d,%r12d
624         movl    %ebx,(%rdi,%rcx,4)
625         andl    %r8d,%r12d
626         addl    48(%r15),%r9d
627         addb    %dl,%bl
628         movl    0(%rdi,%rbp,4),%eax
629         addl    $2368359562,%r9d
630         xorl    %r11d,%r12d
631         movzbl  %bl,%ebx
632         movl    %edx,124(%rsi)
633         addl    %r12d,%r9d
634         addb    %al,%cl
635         roll    $20,%r9d
636         movl    %r11d,%r12d
637         pinsrw  $7,(%rdi,%rbx,4),%xmm1
638
639         addl    %r10d,%r9d
640         movq    %rcx,%rsi
641         xorq    %rcx,%rcx
642         movb    %sil,%cl
643         leaq    (%rdi,%rbp,4),%rsi
644         psllq   $8,%xmm1
645         pxor    %xmm0,%xmm3
646         pxor    %xmm1,%xmm3
647         pxor    %xmm0,%xmm0
648         movl    (%rdi,%rcx,4),%edx
649         xorl    %r10d,%r12d
650         movl    %eax,(%rdi,%rcx,4)
651         xorl    %r9d,%r12d
652         addl    20(%r15),%r8d
653         addb    %dl,%al
654         movl    4(%rsi),%ebx
655         addl    $4294588738,%r8d
656         movzbl  %al,%eax
657         addl    %r12d,%r8d
658         movl    %edx,0(%rsi)
659         addb    %bl,%cl
660         roll    $4,%r8d
661         movl    %r10d,%r12d
662         movd    (%rdi,%rax,4),%xmm0
663
664         addl    %r9d,%r8d
665         pxor    %xmm1,%xmm1
666         movl    (%rdi,%rcx,4),%edx
667         xorl    %r9d,%r12d
668         movl    %ebx,(%rdi,%rcx,4)
669         xorl    %r8d,%r12d
670         addl    32(%r15),%r11d
671         addb    %dl,%bl
672         movl    8(%rsi),%eax
673         addl    $2272392833,%r11d
674         movzbl  %bl,%ebx
675         addl    %r12d,%r11d
676         movl    %edx,4(%rsi)
677         addb    %al,%cl
678         roll    $11,%r11d
679         movl    %r9d,%r12d
680         movd    (%rdi,%rbx,4),%xmm1
681
682         addl    %r8d,%r11d
683         movl    (%rdi,%rcx,4),%edx
684         xorl    %r8d,%r12d
685         movl    %eax,(%rdi,%rcx,4)
686         xorl    %r11d,%r12d
687         addl    44(%r15),%r10d
688         addb    %dl,%al
689         movl    12(%rsi),%ebx
690         addl    $1839030562,%r10d
691         movzbl  %al,%eax
692         addl    %r12d,%r10d
693         movl    %edx,8(%rsi)
694         addb    %bl,%cl
695         roll    $16,%r10d
696         movl    %r8d,%r12d
697         pinsrw  $1,(%rdi,%rax,4),%xmm0
698
699         addl    %r11d,%r10d
700         movl    (%rdi,%rcx,4),%edx
701         xorl    %r11d,%r12d
702         movl    %ebx,(%rdi,%rcx,4)
703         xorl    %r10d,%r12d
704         addl    56(%r15),%r9d
705         addb    %dl,%bl
706         movl    16(%rsi),%eax
707         addl    $4259657740,%r9d
708         movzbl  %bl,%ebx
709         addl    %r12d,%r9d
710         movl    %edx,12(%rsi)
711         addb    %al,%cl
712         roll    $23,%r9d
713         movl    %r11d,%r12d
714         pinsrw  $1,(%rdi,%rbx,4),%xmm1
715
716         addl    %r10d,%r9d
717         movl    (%rdi,%rcx,4),%edx
718         xorl    %r10d,%r12d
719         movl    %eax,(%rdi,%rcx,4)
720         xorl    %r9d,%r12d
721         addl    4(%r15),%r8d
722         addb    %dl,%al
723         movl    20(%rsi),%ebx
724         addl    $2763975236,%r8d
725         movzbl  %al,%eax
726         addl    %r12d,%r8d
727         movl    %edx,16(%rsi)
728         addb    %bl,%cl
729         roll    $4,%r8d
730         movl    %r10d,%r12d
731         pinsrw  $2,(%rdi,%rax,4),%xmm0
732
733         addl    %r9d,%r8d
734         movl    (%rdi,%rcx,4),%edx
735         xorl    %r9d,%r12d
736         movl    %ebx,(%rdi,%rcx,4)
737         xorl    %r8d,%r12d
738         addl    16(%r15),%r11d
739         addb    %dl,%bl
740         movl    24(%rsi),%eax
741         addl    $1272893353,%r11d
742         movzbl  %bl,%ebx
743         addl    %r12d,%r11d
744         movl    %edx,20(%rsi)
745         addb    %al,%cl
746         roll    $11,%r11d
747         movl    %r9d,%r12d
748         pinsrw  $2,(%rdi,%rbx,4),%xmm1
749
750         addl    %r8d,%r11d
751         movl    (%rdi,%rcx,4),%edx
752         xorl    %r8d,%r12d
753         movl    %eax,(%rdi,%rcx,4)
754         xorl    %r11d,%r12d
755         addl    28(%r15),%r10d
756         addb    %dl,%al
757         movl    28(%rsi),%ebx
758         addl    $4139469664,%r10d
759         movzbl  %al,%eax
760         addl    %r12d,%r10d
761         movl    %edx,24(%rsi)
762         addb    %bl,%cl
763         roll    $16,%r10d
764         movl    %r8d,%r12d
765         pinsrw  $3,(%rdi,%rax,4),%xmm0
766
767         addl    %r11d,%r10d
768         movl    (%rdi,%rcx,4),%edx
769         xorl    %r11d,%r12d
770         movl    %ebx,(%rdi,%rcx,4)
771         xorl    %r10d,%r12d
772         addl    40(%r15),%r9d
773         addb    %dl,%bl
774         movl    32(%rsi),%eax
775         addl    $3200236656,%r9d
776         movzbl  %bl,%ebx
777         addl    %r12d,%r9d
778         movl    %edx,28(%rsi)
779         addb    %al,%cl
780         roll    $23,%r9d
781         movl    %r11d,%r12d
782         pinsrw  $3,(%rdi,%rbx,4),%xmm1
783
784         addl    %r10d,%r9d
785         movl    (%rdi,%rcx,4),%edx
786         xorl    %r10d,%r12d
787         movl    %eax,(%rdi,%rcx,4)
788         xorl    %r9d,%r12d
789         addl    52(%r15),%r8d
790         addb    %dl,%al
791         movl    36(%rsi),%ebx
792         addl    $681279174,%r8d
793         movzbl  %al,%eax
794         addl    %r12d,%r8d
795         movl    %edx,32(%rsi)
796         addb    %bl,%cl
797         roll    $4,%r8d
798         movl    %r10d,%r12d
799         pinsrw  $4,(%rdi,%rax,4),%xmm0
800
801         addl    %r9d,%r8d
802         movl    (%rdi,%rcx,4),%edx
803         xorl    %r9d,%r12d
804         movl    %ebx,(%rdi,%rcx,4)
805         xorl    %r8d,%r12d
806         addl    0(%r15),%r11d
807         addb    %dl,%bl
808         movl    40(%rsi),%eax
809         addl    $3936430074,%r11d
810         movzbl  %bl,%ebx
811         addl    %r12d,%r11d
812         movl    %edx,36(%rsi)
813         addb    %al,%cl
814         roll    $11,%r11d
815         movl    %r9d,%r12d
816         pinsrw  $4,(%rdi,%rbx,4),%xmm1
817
818         addl    %r8d,%r11d
819         movl    (%rdi,%rcx,4),%edx
820         xorl    %r8d,%r12d
821         movl    %eax,(%rdi,%rcx,4)
822         xorl    %r11d,%r12d
823         addl    12(%r15),%r10d
824         addb    %dl,%al
825         movl    44(%rsi),%ebx
826         addl    $3572445317,%r10d
827         movzbl  %al,%eax
828         addl    %r12d,%r10d
829         movl    %edx,40(%rsi)
830         addb    %bl,%cl
831         roll    $16,%r10d
832         movl    %r8d,%r12d
833         pinsrw  $5,(%rdi,%rax,4),%xmm0
834
835         addl    %r11d,%r10d
836         movl    (%rdi,%rcx,4),%edx
837         xorl    %r11d,%r12d
838         movl    %ebx,(%rdi,%rcx,4)
839         xorl    %r10d,%r12d
840         addl    24(%r15),%r9d
841         addb    %dl,%bl
842         movl    48(%rsi),%eax
843         addl    $76029189,%r9d
844         movzbl  %bl,%ebx
845         addl    %r12d,%r9d
846         movl    %edx,44(%rsi)
847         addb    %al,%cl
848         roll    $23,%r9d
849         movl    %r11d,%r12d
850         pinsrw  $5,(%rdi,%rbx,4),%xmm1
851
852         addl    %r10d,%r9d
853         movl    (%rdi,%rcx,4),%edx
854         xorl    %r10d,%r12d
855         movl    %eax,(%rdi,%rcx,4)
856         xorl    %r9d,%r12d
857         addl    36(%r15),%r8d
858         addb    %dl,%al
859         movl    52(%rsi),%ebx
860         addl    $3654602809,%r8d
861         movzbl  %al,%eax
862         addl    %r12d,%r8d
863         movl    %edx,48(%rsi)
864         addb    %bl,%cl
865         roll    $4,%r8d
866         movl    %r10d,%r12d
867         pinsrw  $6,(%rdi,%rax,4),%xmm0
868
869         addl    %r9d,%r8d
870         movl    (%rdi,%rcx,4),%edx
871         xorl    %r9d,%r12d
872         movl    %ebx,(%rdi,%rcx,4)
873         xorl    %r8d,%r12d
874         addl    48(%r15),%r11d
875         addb    %dl,%bl
876         movl    56(%rsi),%eax
877         addl    $3873151461,%r11d
878         movzbl  %bl,%ebx
879         addl    %r12d,%r11d
880         movl    %edx,52(%rsi)
881         addb    %al,%cl
882         roll    $11,%r11d
883         movl    %r9d,%r12d
884         pinsrw  $6,(%rdi,%rbx,4),%xmm1
885
886         addl    %r8d,%r11d
887         movl    (%rdi,%rcx,4),%edx
888         xorl    %r8d,%r12d
889         movl    %eax,(%rdi,%rcx,4)
890         xorl    %r11d,%r12d
891         addl    60(%r15),%r10d
892         addb    %dl,%al
893         movl    60(%rsi),%ebx
894         addl    $530742520,%r10d
895         movzbl  %al,%eax
896         addl    %r12d,%r10d
897         movl    %edx,56(%rsi)
898         addb    %bl,%cl
899         roll    $16,%r10d
900         movl    %r8d,%r12d
901         pinsrw  $7,(%rdi,%rax,4),%xmm0
902
903         addl    %r11d,%r10d
904         movdqu  32(%r13),%xmm4
905         movl    (%rdi,%rcx,4),%edx
906         xorl    %r11d,%r12d
907         movl    %ebx,(%rdi,%rcx,4)
908         xorl    %r10d,%r12d
909         addl    8(%r15),%r9d
910         addb    %dl,%bl
911         movl    64(%rsi),%eax
912         addl    $3299628645,%r9d
913         movzbl  %bl,%ebx
914         addl    %r12d,%r9d
915         movl    %edx,60(%rsi)
916         addb    %al,%cl
917         roll    $23,%r9d
918         movl    $-1,%r12d
919         pinsrw  $7,(%rdi,%rbx,4),%xmm1
920
921         addl    %r10d,%r9d
922         psllq   $8,%xmm1
923         pxor    %xmm0,%xmm4
924         pxor    %xmm1,%xmm4
925         pxor    %xmm0,%xmm0
926         movl    (%rdi,%rcx,4),%edx
927         xorl    %r11d,%r12d
928         movl    %eax,(%rdi,%rcx,4)
929         orl     %r9d,%r12d
930         addl    0(%r15),%r8d
931         addb    %dl,%al
932         movl    68(%rsi),%ebx
933         addl    $4096336452,%r8d
934         movzbl  %al,%eax
935         xorl    %r10d,%r12d
936         movl    %edx,64(%rsi)
937         addl    %r12d,%r8d
938         addb    %bl,%cl
939         roll    $6,%r8d
940         movl    $-1,%r12d
941         movd    (%rdi,%rax,4),%xmm0
942
943         addl    %r9d,%r8d
944         pxor    %xmm1,%xmm1
945         movl    (%rdi,%rcx,4),%edx
946         xorl    %r10d,%r12d
947         movl    %ebx,(%rdi,%rcx,4)
948         orl     %r8d,%r12d
949         addl    28(%r15),%r11d
950         addb    %dl,%bl
951         movl    72(%rsi),%eax
952         addl    $1126891415,%r11d
953         movzbl  %bl,%ebx
954         xorl    %r9d,%r12d
955         movl    %edx,68(%rsi)
956         addl    %r12d,%r11d
957         addb    %al,%cl
958         roll    $10,%r11d
959         movl    $-1,%r12d
960         movd    (%rdi,%rbx,4),%xmm1
961
962         addl    %r8d,%r11d
963         movl    (%rdi,%rcx,4),%edx
964         xorl    %r9d,%r12d
965         movl    %eax,(%rdi,%rcx,4)
966         orl     %r11d,%r12d
967         addl    56(%r15),%r10d
968         addb    %dl,%al
969         movl    76(%rsi),%ebx
970         addl    $2878612391,%r10d
971         movzbl  %al,%eax
972         xorl    %r8d,%r12d
973         movl    %edx,72(%rsi)
974         addl    %r12d,%r10d
975         addb    %bl,%cl
976         roll    $15,%r10d
977         movl    $-1,%r12d
978         pinsrw  $1,(%rdi,%rax,4),%xmm0
979
980         addl    %r11d,%r10d
981         movl    (%rdi,%rcx,4),%edx
982         xorl    %r8d,%r12d
983         movl    %ebx,(%rdi,%rcx,4)
984         orl     %r10d,%r12d
985         addl    20(%r15),%r9d
986         addb    %dl,%bl
987         movl    80(%rsi),%eax
988         addl    $4237533241,%r9d
989         movzbl  %bl,%ebx
990         xorl    %r11d,%r12d
991         movl    %edx,76(%rsi)
992         addl    %r12d,%r9d
993         addb    %al,%cl
994         roll    $21,%r9d
995         movl    $-1,%r12d
996         pinsrw  $1,(%rdi,%rbx,4),%xmm1
997
998         addl    %r10d,%r9d
999         movl    (%rdi,%rcx,4),%edx
1000         xorl    %r11d,%r12d
1001         movl    %eax,(%rdi,%rcx,4)
1002         orl     %r9d,%r12d
1003         addl    48(%r15),%r8d
1004         addb    %dl,%al
1005         movl    84(%rsi),%ebx
1006         addl    $1700485571,%r8d
1007         movzbl  %al,%eax
1008         xorl    %r10d,%r12d
1009         movl    %edx,80(%rsi)
1010         addl    %r12d,%r8d
1011         addb    %bl,%cl
1012         roll    $6,%r8d
1013         movl    $-1,%r12d
1014         pinsrw  $2,(%rdi,%rax,4),%xmm0
1015
1016         addl    %r9d,%r8d
1017         movl    (%rdi,%rcx,4),%edx
1018         xorl    %r10d,%r12d
1019         movl    %ebx,(%rdi,%rcx,4)
1020         orl     %r8d,%r12d
1021         addl    12(%r15),%r11d
1022         addb    %dl,%bl
1023         movl    88(%rsi),%eax
1024         addl    $2399980690,%r11d
1025         movzbl  %bl,%ebx
1026         xorl    %r9d,%r12d
1027         movl    %edx,84(%rsi)
1028         addl    %r12d,%r11d
1029         addb    %al,%cl
1030         roll    $10,%r11d
1031         movl    $-1,%r12d
1032         pinsrw  $2,(%rdi,%rbx,4),%xmm1
1033
1034         addl    %r8d,%r11d
1035         movl    (%rdi,%rcx,4),%edx
1036         xorl    %r9d,%r12d
1037         movl    %eax,(%rdi,%rcx,4)
1038         orl     %r11d,%r12d
1039         addl    40(%r15),%r10d
1040         addb    %dl,%al
1041         movl    92(%rsi),%ebx
1042         addl    $4293915773,%r10d
1043         movzbl  %al,%eax
1044         xorl    %r8d,%r12d
1045         movl    %edx,88(%rsi)
1046         addl    %r12d,%r10d
1047         addb    %bl,%cl
1048         roll    $15,%r10d
1049         movl    $-1,%r12d
1050         pinsrw  $3,(%rdi,%rax,4),%xmm0
1051
1052         addl    %r11d,%r10d
1053         movl    (%rdi,%rcx,4),%edx
1054         xorl    %r8d,%r12d
1055         movl    %ebx,(%rdi,%rcx,4)
1056         orl     %r10d,%r12d
1057         addl    4(%r15),%r9d
1058         addb    %dl,%bl
1059         movl    96(%rsi),%eax
1060         addl    $2240044497,%r9d
1061         movzbl  %bl,%ebx
1062         xorl    %r11d,%r12d
1063         movl    %edx,92(%rsi)
1064         addl    %r12d,%r9d
1065         addb    %al,%cl
1066         roll    $21,%r9d
1067         movl    $-1,%r12d
1068         pinsrw  $3,(%rdi,%rbx,4),%xmm1
1069
1070         addl    %r10d,%r9d
1071         movl    (%rdi,%rcx,4),%edx
1072         xorl    %r11d,%r12d
1073         movl    %eax,(%rdi,%rcx,4)
1074         orl     %r9d,%r12d
1075         addl    32(%r15),%r8d
1076         addb    %dl,%al
1077         movl    100(%rsi),%ebx
1078         addl    $1873313359,%r8d
1079         movzbl  %al,%eax
1080         xorl    %r10d,%r12d
1081         movl    %edx,96(%rsi)
1082         addl    %r12d,%r8d
1083         addb    %bl,%cl
1084         roll    $6,%r8d
1085         movl    $-1,%r12d
1086         pinsrw  $4,(%rdi,%rax,4),%xmm0
1087
1088         addl    %r9d,%r8d
1089         movl    (%rdi,%rcx,4),%edx
1090         xorl    %r10d,%r12d
1091         movl    %ebx,(%rdi,%rcx,4)
1092         orl     %r8d,%r12d
1093         addl    60(%r15),%r11d
1094         addb    %dl,%bl
1095         movl    104(%rsi),%eax
1096         addl    $4264355552,%r11d
1097         movzbl  %bl,%ebx
1098         xorl    %r9d,%r12d
1099         movl    %edx,100(%rsi)
1100         addl    %r12d,%r11d
1101         addb    %al,%cl
1102         roll    $10,%r11d
1103         movl    $-1,%r12d
1104         pinsrw  $4,(%rdi,%rbx,4),%xmm1
1105
1106         addl    %r8d,%r11d
1107         movl    (%rdi,%rcx,4),%edx
1108         xorl    %r9d,%r12d
1109         movl    %eax,(%rdi,%rcx,4)
1110         orl     %r11d,%r12d
1111         addl    24(%r15),%r10d
1112         addb    %dl,%al
1113         movl    108(%rsi),%ebx
1114         addl    $2734768916,%r10d
1115         movzbl  %al,%eax
1116         xorl    %r8d,%r12d
1117         movl    %edx,104(%rsi)
1118         addl    %r12d,%r10d
1119         addb    %bl,%cl
1120         roll    $15,%r10d
1121         movl    $-1,%r12d
1122         pinsrw  $5,(%rdi,%rax,4),%xmm0
1123
1124         addl    %r11d,%r10d
1125         movl    (%rdi,%rcx,4),%edx
1126         xorl    %r8d,%r12d
1127         movl    %ebx,(%rdi,%rcx,4)
1128         orl     %r10d,%r12d
1129         addl    52(%r15),%r9d
1130         addb    %dl,%bl
1131         movl    112(%rsi),%eax
1132         addl    $1309151649,%r9d
1133         movzbl  %bl,%ebx
1134         xorl    %r11d,%r12d
1135         movl    %edx,108(%rsi)
1136         addl    %r12d,%r9d
1137         addb    %al,%cl
1138         roll    $21,%r9d
1139         movl    $-1,%r12d
1140         pinsrw  $5,(%rdi,%rbx,4),%xmm1
1141
1142         addl    %r10d,%r9d
1143         movl    (%rdi,%rcx,4),%edx
1144         xorl    %r11d,%r12d
1145         movl    %eax,(%rdi,%rcx,4)
1146         orl     %r9d,%r12d
1147         addl    16(%r15),%r8d
1148         addb    %dl,%al
1149         movl    116(%rsi),%ebx
1150         addl    $4149444226,%r8d
1151         movzbl  %al,%eax
1152         xorl    %r10d,%r12d
1153         movl    %edx,112(%rsi)
1154         addl    %r12d,%r8d
1155         addb    %bl,%cl
1156         roll    $6,%r8d
1157         movl    $-1,%r12d
1158         pinsrw  $6,(%rdi,%rax,4),%xmm0
1159
1160         addl    %r9d,%r8d
1161         movl    (%rdi,%rcx,4),%edx
1162         xorl    %r10d,%r12d
1163         movl    %ebx,(%rdi,%rcx,4)
1164         orl     %r8d,%r12d
1165         addl    44(%r15),%r11d
1166         addb    %dl,%bl
1167         movl    120(%rsi),%eax
1168         addl    $3174756917,%r11d
1169         movzbl  %bl,%ebx
1170         xorl    %r9d,%r12d
1171         movl    %edx,116(%rsi)
1172         addl    %r12d,%r11d
1173         addb    %al,%cl
1174         roll    $10,%r11d
1175         movl    $-1,%r12d
1176         pinsrw  $6,(%rdi,%rbx,4),%xmm1
1177
1178         addl    %r8d,%r11d
1179         movl    (%rdi,%rcx,4),%edx
1180         xorl    %r9d,%r12d
1181         movl    %eax,(%rdi,%rcx,4)
1182         orl     %r11d,%r12d
1183         addl    8(%r15),%r10d
1184         addb    %dl,%al
1185         movl    124(%rsi),%ebx
1186         addl    $718787259,%r10d
1187         movzbl  %al,%eax
1188         xorl    %r8d,%r12d
1189         movl    %edx,120(%rsi)
1190         addl    %r12d,%r10d
1191         addb    %bl,%cl
1192         roll    $15,%r10d
1193         movl    $-1,%r12d
1194         pinsrw  $7,(%rdi,%rax,4),%xmm0
1195
1196         addl    %r11d,%r10d
1197         movdqu  48(%r13),%xmm5
1198         addb    $32,%bpl
1199         movl    (%rdi,%rcx,4),%edx
1200         xorl    %r8d,%r12d
1201         movl    %ebx,(%rdi,%rcx,4)
1202         orl     %r10d,%r12d
1203         addl    36(%r15),%r9d
1204         addb    %dl,%bl
1205         movl    0(%rdi,%rbp,4),%eax
1206         addl    $3951481745,%r9d
1207         movzbl  %bl,%ebx
1208         xorl    %r11d,%r12d
1209         movl    %edx,124(%rsi)
1210         addl    %r12d,%r9d
1211         addb    %al,%cl
1212         roll    $21,%r9d
1213         movl    $-1,%r12d
1214         pinsrw  $7,(%rdi,%rbx,4),%xmm1
1215
1216         addl    %r10d,%r9d
1217         movq    %rbp,%rsi
1218         xorq    %rbp,%rbp
1219         movb    %sil,%bpl
1220         movq    %rcx,%rsi
1221         xorq    %rcx,%rcx
1222         movb    %sil,%cl
1223         leaq    (%rdi,%rbp,4),%rsi
1224         psllq   $8,%xmm1
1225         pxor    %xmm0,%xmm5
1226         pxor    %xmm1,%xmm5
1227         addl    0(%rsp),%r8d
1228         addl    4(%rsp),%r9d
1229         addl    8(%rsp),%r10d
1230         addl    12(%rsp),%r11d
1231
1232         movdqu  %xmm2,(%r14,%r13,1)
1233         movdqu  %xmm3,16(%r14,%r13,1)
1234         movdqu  %xmm4,32(%r14,%r13,1)
1235         movdqu  %xmm5,48(%r14,%r13,1)
1236         leaq    64(%r15),%r15
1237         leaq    64(%r13),%r13
1238         cmpq    16(%rsp),%r15
1239         jb      .Loop
1240
1241         movq    24(%rsp),%r12
1242         subb    %al,%cl
1243         movl    %r8d,0(%r12)
1244         movl    %r9d,4(%r12)
1245         movl    %r10d,8(%r12)
1246         movl    %r11d,12(%r12)
1247         subb    $1,%bpl
1248         movl    %ebp,-8(%rdi)
1249         movl    %ecx,-4(%rdi)
1250
1251         movq    40(%rsp),%r15
1252         movq    48(%rsp),%r14
1253         movq    56(%rsp),%r13
1254         movq    64(%rsp),%r12
1255         movq    72(%rsp),%rbp
1256         movq    80(%rsp),%rbx
1257         leaq    88(%rsp),%rsp
1258 .Lepilogue:
1259 .Labort:
1260         .byte   0xf3,0xc3
1261 .size   rc4_md5_enc,.-rc4_md5_enc