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