1238405Sjkim	# $FreeBSD: releng/10.3/secure/lib/libcrypto/amd64/rc4-md5-x86_64.S 238405 2012-07-12 19:30:53Z jkim $
2238405Sjkim.text
3238405Sjkim.align	16
4238405Sjkim
5238405Sjkim.globl	rc4_md5_enc
6238405Sjkim.type	rc4_md5_enc,@function
7238405Sjkimrc4_md5_enc:
8238405Sjkim	cmpq	$0,%r9
9238405Sjkim	je	.Labort
10238405Sjkim	pushq	%rbx
11238405Sjkim	pushq	%rbp
12238405Sjkim	pushq	%r12
13238405Sjkim	pushq	%r13
14238405Sjkim	pushq	%r14
15238405Sjkim	pushq	%r15
16238405Sjkim	subq	$40,%rsp
17238405Sjkim.Lbody:
18238405Sjkim	movq	%rcx,%r11
19238405Sjkim	movq	%r9,%r12
20238405Sjkim	movq	%rsi,%r13
21238405Sjkim	movq	%rdx,%r14
22238405Sjkim	movq	%r8,%r15
23238405Sjkim	xorq	%rbp,%rbp
24238405Sjkim	xorq	%rcx,%rcx
25238405Sjkim
26238405Sjkim	leaq	8(%rdi),%rdi
27238405Sjkim	movb	-8(%rdi),%bpl
28238405Sjkim	movb	-4(%rdi),%cl
29238405Sjkim
30238405Sjkim	incb	%bpl
31238405Sjkim	subq	%r13,%r14
32238405Sjkim	movl	(%rdi,%rbp,4),%eax
33238405Sjkim	addb	%al,%cl
34238405Sjkim	leaq	(%rdi,%rbp,4),%rsi
35238405Sjkim	shlq	$6,%r12
36238405Sjkim	addq	%r15,%r12
37238405Sjkim	movq	%r12,16(%rsp)
38238405Sjkim
39238405Sjkim	movq	%r11,24(%rsp)
40238405Sjkim	movl	0(%r11),%r8d
41238405Sjkim	movl	4(%r11),%r9d
42238405Sjkim	movl	8(%r11),%r10d
43238405Sjkim	movl	12(%r11),%r11d
44238405Sjkim	jmp	.Loop
45238405Sjkim
46238405Sjkim.align	16
47238405Sjkim.Loop:
48238405Sjkim	movl	%r8d,0(%rsp)
49238405Sjkim	movl	%r9d,4(%rsp)
50238405Sjkim	movl	%r10d,8(%rsp)
51238405Sjkim	movl	%r11d,%r12d
52238405Sjkim	movl	%r11d,12(%rsp)
53238405Sjkim	pxor	%xmm0,%xmm0
54238405Sjkim	movl	(%rdi,%rcx,4),%edx
55238405Sjkim	xorl	%r10d,%r12d
56238405Sjkim	movl	%eax,(%rdi,%rcx,4)
57238405Sjkim	andl	%r9d,%r12d
58238405Sjkim	addl	0(%r15),%r8d
59238405Sjkim	addb	%dl,%al
60238405Sjkim	movl	4(%rsi),%ebx
61238405Sjkim	addl	$3614090360,%r8d
62238405Sjkim	xorl	%r11d,%r12d
63238405Sjkim	movzbl	%al,%eax
64238405Sjkim	movl	%edx,0(%rsi)
65238405Sjkim	addl	%r12d,%r8d
66238405Sjkim	addb	%bl,%cl
67238405Sjkim	roll	$7,%r8d
68238405Sjkim	movl	%r10d,%r12d
69238405Sjkim	movd	(%rdi,%rax,4),%xmm0
70238405Sjkim
71238405Sjkim	addl	%r9d,%r8d
72238405Sjkim	pxor	%xmm1,%xmm1
73238405Sjkim	movl	(%rdi,%rcx,4),%edx
74238405Sjkim	xorl	%r9d,%r12d
75238405Sjkim	movl	%ebx,(%rdi,%rcx,4)
76238405Sjkim	andl	%r8d,%r12d
77238405Sjkim	addl	4(%r15),%r11d
78238405Sjkim	addb	%dl,%bl
79238405Sjkim	movl	8(%rsi),%eax
80238405Sjkim	addl	$3905402710,%r11d
81238405Sjkim	xorl	%r10d,%r12d
82238405Sjkim	movzbl	%bl,%ebx
83238405Sjkim	movl	%edx,4(%rsi)
84238405Sjkim	addl	%r12d,%r11d
85238405Sjkim	addb	%al,%cl
86238405Sjkim	roll	$12,%r11d
87238405Sjkim	movl	%r9d,%r12d
88238405Sjkim	movd	(%rdi,%rbx,4),%xmm1
89238405Sjkim
90238405Sjkim	addl	%r8d,%r11d
91238405Sjkim	movl	(%rdi,%rcx,4),%edx
92238405Sjkim	xorl	%r8d,%r12d
93238405Sjkim	movl	%eax,(%rdi,%rcx,4)
94238405Sjkim	andl	%r11d,%r12d
95238405Sjkim	addl	8(%r15),%r10d
96238405Sjkim	addb	%dl,%al
97238405Sjkim	movl	12(%rsi),%ebx
98238405Sjkim	addl	$606105819,%r10d
99238405Sjkim	xorl	%r9d,%r12d
100238405Sjkim	movzbl	%al,%eax
101238405Sjkim	movl	%edx,8(%rsi)
102238405Sjkim	addl	%r12d,%r10d
103238405Sjkim	addb	%bl,%cl
104238405Sjkim	roll	$17,%r10d
105238405Sjkim	movl	%r8d,%r12d
106238405Sjkim	pinsrw	$1,(%rdi,%rax,4),%xmm0
107238405Sjkim
108238405Sjkim	addl	%r11d,%r10d
109238405Sjkim	movl	(%rdi,%rcx,4),%edx
110238405Sjkim	xorl	%r11d,%r12d
111238405Sjkim	movl	%ebx,(%rdi,%rcx,4)
112238405Sjkim	andl	%r10d,%r12d
113238405Sjkim	addl	12(%r15),%r9d
114238405Sjkim	addb	%dl,%bl
115238405Sjkim	movl	16(%rsi),%eax
116238405Sjkim	addl	$3250441966,%r9d
117238405Sjkim	xorl	%r8d,%r12d
118238405Sjkim	movzbl	%bl,%ebx
119238405Sjkim	movl	%edx,12(%rsi)
120238405Sjkim	addl	%r12d,%r9d
121238405Sjkim	addb	%al,%cl
122238405Sjkim	roll	$22,%r9d
123238405Sjkim	movl	%r11d,%r12d
124238405Sjkim	pinsrw	$1,(%rdi,%rbx,4),%xmm1
125238405Sjkim
126238405Sjkim	addl	%r10d,%r9d
127238405Sjkim	movl	(%rdi,%rcx,4),%edx
128238405Sjkim	xorl	%r10d,%r12d
129238405Sjkim	movl	%eax,(%rdi,%rcx,4)
130238405Sjkim	andl	%r9d,%r12d
131238405Sjkim	addl	16(%r15),%r8d
132238405Sjkim	addb	%dl,%al
133238405Sjkim	movl	20(%rsi),%ebx
134238405Sjkim	addl	$4118548399,%r8d
135238405Sjkim	xorl	%r11d,%r12d
136238405Sjkim	movzbl	%al,%eax
137238405Sjkim	movl	%edx,16(%rsi)
138238405Sjkim	addl	%r12d,%r8d
139238405Sjkim	addb	%bl,%cl
140238405Sjkim	roll	$7,%r8d
141238405Sjkim	movl	%r10d,%r12d
142238405Sjkim	pinsrw	$2,(%rdi,%rax,4),%xmm0
143238405Sjkim
144238405Sjkim	addl	%r9d,%r8d
145238405Sjkim	movl	(%rdi,%rcx,4),%edx
146238405Sjkim	xorl	%r9d,%r12d
147238405Sjkim	movl	%ebx,(%rdi,%rcx,4)
148238405Sjkim	andl	%r8d,%r12d
149238405Sjkim	addl	20(%r15),%r11d
150238405Sjkim	addb	%dl,%bl
151238405Sjkim	movl	24(%rsi),%eax
152238405Sjkim	addl	$1200080426,%r11d
153238405Sjkim	xorl	%r10d,%r12d
154238405Sjkim	movzbl	%bl,%ebx
155238405Sjkim	movl	%edx,20(%rsi)
156238405Sjkim	addl	%r12d,%r11d
157238405Sjkim	addb	%al,%cl
158238405Sjkim	roll	$12,%r11d
159238405Sjkim	movl	%r9d,%r12d
160238405Sjkim	pinsrw	$2,(%rdi,%rbx,4),%xmm1
161238405Sjkim
162238405Sjkim	addl	%r8d,%r11d
163238405Sjkim	movl	(%rdi,%rcx,4),%edx
164238405Sjkim	xorl	%r8d,%r12d
165238405Sjkim	movl	%eax,(%rdi,%rcx,4)
166238405Sjkim	andl	%r11d,%r12d
167238405Sjkim	addl	24(%r15),%r10d
168238405Sjkim	addb	%dl,%al
169238405Sjkim	movl	28(%rsi),%ebx
170238405Sjkim	addl	$2821735955,%r10d
171238405Sjkim	xorl	%r9d,%r12d
172238405Sjkim	movzbl	%al,%eax
173238405Sjkim	movl	%edx,24(%rsi)
174238405Sjkim	addl	%r12d,%r10d
175238405Sjkim	addb	%bl,%cl
176238405Sjkim	roll	$17,%r10d
177238405Sjkim	movl	%r8d,%r12d
178238405Sjkim	pinsrw	$3,(%rdi,%rax,4),%xmm0
179238405Sjkim
180238405Sjkim	addl	%r11d,%r10d
181238405Sjkim	movl	(%rdi,%rcx,4),%edx
182238405Sjkim	xorl	%r11d,%r12d
183238405Sjkim	movl	%ebx,(%rdi,%rcx,4)
184238405Sjkim	andl	%r10d,%r12d
185238405Sjkim	addl	28(%r15),%r9d
186238405Sjkim	addb	%dl,%bl
187238405Sjkim	movl	32(%rsi),%eax
188238405Sjkim	addl	$4249261313,%r9d
189238405Sjkim	xorl	%r8d,%r12d
190238405Sjkim	movzbl	%bl,%ebx
191238405Sjkim	movl	%edx,28(%rsi)
192238405Sjkim	addl	%r12d,%r9d
193238405Sjkim	addb	%al,%cl
194238405Sjkim	roll	$22,%r9d
195238405Sjkim	movl	%r11d,%r12d
196238405Sjkim	pinsrw	$3,(%rdi,%rbx,4),%xmm1
197238405Sjkim
198238405Sjkim	addl	%r10d,%r9d
199238405Sjkim	movl	(%rdi,%rcx,4),%edx
200238405Sjkim	xorl	%r10d,%r12d
201238405Sjkim	movl	%eax,(%rdi,%rcx,4)
202238405Sjkim	andl	%r9d,%r12d
203238405Sjkim	addl	32(%r15),%r8d
204238405Sjkim	addb	%dl,%al
205238405Sjkim	movl	36(%rsi),%ebx
206238405Sjkim	addl	$1770035416,%r8d
207238405Sjkim	xorl	%r11d,%r12d
208238405Sjkim	movzbl	%al,%eax
209238405Sjkim	movl	%edx,32(%rsi)
210238405Sjkim	addl	%r12d,%r8d
211238405Sjkim	addb	%bl,%cl
212238405Sjkim	roll	$7,%r8d
213238405Sjkim	movl	%r10d,%r12d
214238405Sjkim	pinsrw	$4,(%rdi,%rax,4),%xmm0
215238405Sjkim
216238405Sjkim	addl	%r9d,%r8d
217238405Sjkim	movl	(%rdi,%rcx,4),%edx
218238405Sjkim	xorl	%r9d,%r12d
219238405Sjkim	movl	%ebx,(%rdi,%rcx,4)
220238405Sjkim	andl	%r8d,%r12d
221238405Sjkim	addl	36(%r15),%r11d
222238405Sjkim	addb	%dl,%bl
223238405Sjkim	movl	40(%rsi),%eax
224238405Sjkim	addl	$2336552879,%r11d
225238405Sjkim	xorl	%r10d,%r12d
226238405Sjkim	movzbl	%bl,%ebx
227238405Sjkim	movl	%edx,36(%rsi)
228238405Sjkim	addl	%r12d,%r11d
229238405Sjkim	addb	%al,%cl
230238405Sjkim	roll	$12,%r11d
231238405Sjkim	movl	%r9d,%r12d
232238405Sjkim	pinsrw	$4,(%rdi,%rbx,4),%xmm1
233238405Sjkim
234238405Sjkim	addl	%r8d,%r11d
235238405Sjkim	movl	(%rdi,%rcx,4),%edx
236238405Sjkim	xorl	%r8d,%r12d
237238405Sjkim	movl	%eax,(%rdi,%rcx,4)
238238405Sjkim	andl	%r11d,%r12d
239238405Sjkim	addl	40(%r15),%r10d
240238405Sjkim	addb	%dl,%al
241238405Sjkim	movl	44(%rsi),%ebx
242238405Sjkim	addl	$4294925233,%r10d
243238405Sjkim	xorl	%r9d,%r12d
244238405Sjkim	movzbl	%al,%eax
245238405Sjkim	movl	%edx,40(%rsi)
246238405Sjkim	addl	%r12d,%r10d
247238405Sjkim	addb	%bl,%cl
248238405Sjkim	roll	$17,%r10d
249238405Sjkim	movl	%r8d,%r12d
250238405Sjkim	pinsrw	$5,(%rdi,%rax,4),%xmm0
251238405Sjkim
252238405Sjkim	addl	%r11d,%r10d
253238405Sjkim	movl	(%rdi,%rcx,4),%edx
254238405Sjkim	xorl	%r11d,%r12d
255238405Sjkim	movl	%ebx,(%rdi,%rcx,4)
256238405Sjkim	andl	%r10d,%r12d
257238405Sjkim	addl	44(%r15),%r9d
258238405Sjkim	addb	%dl,%bl
259238405Sjkim	movl	48(%rsi),%eax
260238405Sjkim	addl	$2304563134,%r9d
261238405Sjkim	xorl	%r8d,%r12d
262238405Sjkim	movzbl	%bl,%ebx
263238405Sjkim	movl	%edx,44(%rsi)
264238405Sjkim	addl	%r12d,%r9d
265238405Sjkim	addb	%al,%cl
266238405Sjkim	roll	$22,%r9d
267238405Sjkim	movl	%r11d,%r12d
268238405Sjkim	pinsrw	$5,(%rdi,%rbx,4),%xmm1
269238405Sjkim
270238405Sjkim	addl	%r10d,%r9d
271238405Sjkim	movl	(%rdi,%rcx,4),%edx
272238405Sjkim	xorl	%r10d,%r12d
273238405Sjkim	movl	%eax,(%rdi,%rcx,4)
274238405Sjkim	andl	%r9d,%r12d
275238405Sjkim	addl	48(%r15),%r8d
276238405Sjkim	addb	%dl,%al
277238405Sjkim	movl	52(%rsi),%ebx
278238405Sjkim	addl	$1804603682,%r8d
279238405Sjkim	xorl	%r11d,%r12d
280238405Sjkim	movzbl	%al,%eax
281238405Sjkim	movl	%edx,48(%rsi)
282238405Sjkim	addl	%r12d,%r8d
283238405Sjkim	addb	%bl,%cl
284238405Sjkim	roll	$7,%r8d
285238405Sjkim	movl	%r10d,%r12d
286238405Sjkim	pinsrw	$6,(%rdi,%rax,4),%xmm0
287238405Sjkim
288238405Sjkim	addl	%r9d,%r8d
289238405Sjkim	movl	(%rdi,%rcx,4),%edx
290238405Sjkim	xorl	%r9d,%r12d
291238405Sjkim	movl	%ebx,(%rdi,%rcx,4)
292238405Sjkim	andl	%r8d,%r12d
293238405Sjkim	addl	52(%r15),%r11d
294238405Sjkim	addb	%dl,%bl
295238405Sjkim	movl	56(%rsi),%eax
296238405Sjkim	addl	$4254626195,%r11d
297238405Sjkim	xorl	%r10d,%r12d
298238405Sjkim	movzbl	%bl,%ebx
299238405Sjkim	movl	%edx,52(%rsi)
300238405Sjkim	addl	%r12d,%r11d
301238405Sjkim	addb	%al,%cl
302238405Sjkim	roll	$12,%r11d
303238405Sjkim	movl	%r9d,%r12d
304238405Sjkim	pinsrw	$6,(%rdi,%rbx,4),%xmm1
305238405Sjkim
306238405Sjkim	addl	%r8d,%r11d
307238405Sjkim	movl	(%rdi,%rcx,4),%edx
308238405Sjkim	xorl	%r8d,%r12d
309238405Sjkim	movl	%eax,(%rdi,%rcx,4)
310238405Sjkim	andl	%r11d,%r12d
311238405Sjkim	addl	56(%r15),%r10d
312238405Sjkim	addb	%dl,%al
313238405Sjkim	movl	60(%rsi),%ebx
314238405Sjkim	addl	$2792965006,%r10d
315238405Sjkim	xorl	%r9d,%r12d
316238405Sjkim	movzbl	%al,%eax
317238405Sjkim	movl	%edx,56(%rsi)
318238405Sjkim	addl	%r12d,%r10d
319238405Sjkim	addb	%bl,%cl
320238405Sjkim	roll	$17,%r10d
321238405Sjkim	movl	%r8d,%r12d
322238405Sjkim	pinsrw	$7,(%rdi,%rax,4),%xmm0
323238405Sjkim
324238405Sjkim	addl	%r11d,%r10d
325238405Sjkim	movdqu	(%r13),%xmm2
326238405Sjkim	movl	(%rdi,%rcx,4),%edx
327238405Sjkim	xorl	%r11d,%r12d
328238405Sjkim	movl	%ebx,(%rdi,%rcx,4)
329238405Sjkim	andl	%r10d,%r12d
330238405Sjkim	addl	60(%r15),%r9d
331238405Sjkim	addb	%dl,%bl
332238405Sjkim	movl	64(%rsi),%eax
333238405Sjkim	addl	$1236535329,%r9d
334238405Sjkim	xorl	%r8d,%r12d
335238405Sjkim	movzbl	%bl,%ebx
336238405Sjkim	movl	%edx,60(%rsi)
337238405Sjkim	addl	%r12d,%r9d
338238405Sjkim	addb	%al,%cl
339238405Sjkim	roll	$22,%r9d
340238405Sjkim	movl	%r10d,%r12d
341238405Sjkim	pinsrw	$7,(%rdi,%rbx,4),%xmm1
342238405Sjkim
343238405Sjkim	addl	%r10d,%r9d
344238405Sjkim	psllq	$8,%xmm1
345238405Sjkim	pxor	%xmm0,%xmm2
346238405Sjkim	pxor	%xmm1,%xmm2
347238405Sjkim	pxor	%xmm0,%xmm0
348238405Sjkim	movl	(%rdi,%rcx,4),%edx
349238405Sjkim	xorl	%r9d,%r12d
350238405Sjkim	movl	%eax,(%rdi,%rcx,4)
351238405Sjkim	andl	%r11d,%r12d
352238405Sjkim	addl	4(%r15),%r8d
353238405Sjkim	addb	%dl,%al
354238405Sjkim	movl	68(%rsi),%ebx
355238405Sjkim	addl	$4129170786,%r8d
356238405Sjkim	xorl	%r10d,%r12d
357238405Sjkim	movzbl	%al,%eax
358238405Sjkim	movl	%edx,64(%rsi)
359238405Sjkim	addl	%r12d,%r8d
360238405Sjkim	addb	%bl,%cl
361238405Sjkim	roll	$5,%r8d
362238405Sjkim	movl	%r9d,%r12d
363238405Sjkim	movd	(%rdi,%rax,4),%xmm0
364238405Sjkim
365238405Sjkim	addl	%r9d,%r8d
366238405Sjkim	pxor	%xmm1,%xmm1
367238405Sjkim	movl	(%rdi,%rcx,4),%edx
368238405Sjkim	xorl	%r8d,%r12d
369238405Sjkim	movl	%ebx,(%rdi,%rcx,4)
370238405Sjkim	andl	%r10d,%r12d
371238405Sjkim	addl	24(%r15),%r11d
372238405Sjkim	addb	%dl,%bl
373238405Sjkim	movl	72(%rsi),%eax
374238405Sjkim	addl	$3225465664,%r11d
375238405Sjkim	xorl	%r9d,%r12d
376238405Sjkim	movzbl	%bl,%ebx
377238405Sjkim	movl	%edx,68(%rsi)
378238405Sjkim	addl	%r12d,%r11d
379238405Sjkim	addb	%al,%cl
380238405Sjkim	roll	$9,%r11d
381238405Sjkim	movl	%r8d,%r12d
382238405Sjkim	movd	(%rdi,%rbx,4),%xmm1
383238405Sjkim
384238405Sjkim	addl	%r8d,%r11d
385238405Sjkim	movl	(%rdi,%rcx,4),%edx
386238405Sjkim	xorl	%r11d,%r12d
387238405Sjkim	movl	%eax,(%rdi,%rcx,4)
388238405Sjkim	andl	%r9d,%r12d
389238405Sjkim	addl	44(%r15),%r10d
390238405Sjkim	addb	%dl,%al
391238405Sjkim	movl	76(%rsi),%ebx
392238405Sjkim	addl	$643717713,%r10d
393238405Sjkim	xorl	%r8d,%r12d
394238405Sjkim	movzbl	%al,%eax
395238405Sjkim	movl	%edx,72(%rsi)
396238405Sjkim	addl	%r12d,%r10d
397238405Sjkim	addb	%bl,%cl
398238405Sjkim	roll	$14,%r10d
399238405Sjkim	movl	%r11d,%r12d
400238405Sjkim	pinsrw	$1,(%rdi,%rax,4),%xmm0
401238405Sjkim
402238405Sjkim	addl	%r11d,%r10d
403238405Sjkim	movl	(%rdi,%rcx,4),%edx
404238405Sjkim	xorl	%r10d,%r12d
405238405Sjkim	movl	%ebx,(%rdi,%rcx,4)
406238405Sjkim	andl	%r8d,%r12d
407238405Sjkim	addl	0(%r15),%r9d
408238405Sjkim	addb	%dl,%bl
409238405Sjkim	movl	80(%rsi),%eax
410238405Sjkim	addl	$3921069994,%r9d
411238405Sjkim	xorl	%r11d,%r12d
412238405Sjkim	movzbl	%bl,%ebx
413238405Sjkim	movl	%edx,76(%rsi)
414238405Sjkim	addl	%r12d,%r9d
415238405Sjkim	addb	%al,%cl
416238405Sjkim	roll	$20,%r9d
417238405Sjkim	movl	%r10d,%r12d
418238405Sjkim	pinsrw	$1,(%rdi,%rbx,4),%xmm1
419238405Sjkim
420238405Sjkim	addl	%r10d,%r9d
421238405Sjkim	movl	(%rdi,%rcx,4),%edx
422238405Sjkim	xorl	%r9d,%r12d
423238405Sjkim	movl	%eax,(%rdi,%rcx,4)
424238405Sjkim	andl	%r11d,%r12d
425238405Sjkim	addl	20(%r15),%r8d
426238405Sjkim	addb	%dl,%al
427238405Sjkim	movl	84(%rsi),%ebx
428238405Sjkim	addl	$3593408605,%r8d
429238405Sjkim	xorl	%r10d,%r12d
430238405Sjkim	movzbl	%al,%eax
431238405Sjkim	movl	%edx,80(%rsi)
432238405Sjkim	addl	%r12d,%r8d
433238405Sjkim	addb	%bl,%cl
434238405Sjkim	roll	$5,%r8d
435238405Sjkim	movl	%r9d,%r12d
436238405Sjkim	pinsrw	$2,(%rdi,%rax,4),%xmm0
437238405Sjkim
438238405Sjkim	addl	%r9d,%r8d
439238405Sjkim	movl	(%rdi,%rcx,4),%edx
440238405Sjkim	xorl	%r8d,%r12d
441238405Sjkim	movl	%ebx,(%rdi,%rcx,4)
442238405Sjkim	andl	%r10d,%r12d
443238405Sjkim	addl	40(%r15),%r11d
444238405Sjkim	addb	%dl,%bl
445238405Sjkim	movl	88(%rsi),%eax
446238405Sjkim	addl	$38016083,%r11d
447238405Sjkim	xorl	%r9d,%r12d
448238405Sjkim	movzbl	%bl,%ebx
449238405Sjkim	movl	%edx,84(%rsi)
450238405Sjkim	addl	%r12d,%r11d
451238405Sjkim	addb	%al,%cl
452238405Sjkim	roll	$9,%r11d
453238405Sjkim	movl	%r8d,%r12d
454238405Sjkim	pinsrw	$2,(%rdi,%rbx,4),%xmm1
455238405Sjkim
456238405Sjkim	addl	%r8d,%r11d
457238405Sjkim	movl	(%rdi,%rcx,4),%edx
458238405Sjkim	xorl	%r11d,%r12d
459238405Sjkim	movl	%eax,(%rdi,%rcx,4)
460238405Sjkim	andl	%r9d,%r12d
461238405Sjkim	addl	60(%r15),%r10d
462238405Sjkim	addb	%dl,%al
463238405Sjkim	movl	92(%rsi),%ebx
464238405Sjkim	addl	$3634488961,%r10d
465238405Sjkim	xorl	%r8d,%r12d
466238405Sjkim	movzbl	%al,%eax
467238405Sjkim	movl	%edx,88(%rsi)
468238405Sjkim	addl	%r12d,%r10d
469238405Sjkim	addb	%bl,%cl
470238405Sjkim	roll	$14,%r10d
471238405Sjkim	movl	%r11d,%r12d
472238405Sjkim	pinsrw	$3,(%rdi,%rax,4),%xmm0
473238405Sjkim
474238405Sjkim	addl	%r11d,%r10d
475238405Sjkim	movl	(%rdi,%rcx,4),%edx
476238405Sjkim	xorl	%r10d,%r12d
477238405Sjkim	movl	%ebx,(%rdi,%rcx,4)
478238405Sjkim	andl	%r8d,%r12d
479238405Sjkim	addl	16(%r15),%r9d
480238405Sjkim	addb	%dl,%bl
481238405Sjkim	movl	96(%rsi),%eax
482238405Sjkim	addl	$3889429448,%r9d
483238405Sjkim	xorl	%r11d,%r12d
484238405Sjkim	movzbl	%bl,%ebx
485238405Sjkim	movl	%edx,92(%rsi)
486238405Sjkim	addl	%r12d,%r9d
487238405Sjkim	addb	%al,%cl
488238405Sjkim	roll	$20,%r9d
489238405Sjkim	movl	%r10d,%r12d
490238405Sjkim	pinsrw	$3,(%rdi,%rbx,4),%xmm1
491238405Sjkim
492238405Sjkim	addl	%r10d,%r9d
493238405Sjkim	movl	(%rdi,%rcx,4),%edx
494238405Sjkim	xorl	%r9d,%r12d
495238405Sjkim	movl	%eax,(%rdi,%rcx,4)
496238405Sjkim	andl	%r11d,%r12d
497238405Sjkim	addl	36(%r15),%r8d
498238405Sjkim	addb	%dl,%al
499238405Sjkim	movl	100(%rsi),%ebx
500238405Sjkim	addl	$568446438,%r8d
501238405Sjkim	xorl	%r10d,%r12d
502238405Sjkim	movzbl	%al,%eax
503238405Sjkim	movl	%edx,96(%rsi)
504238405Sjkim	addl	%r12d,%r8d
505238405Sjkim	addb	%bl,%cl
506238405Sjkim	roll	$5,%r8d
507238405Sjkim	movl	%r9d,%r12d
508238405Sjkim	pinsrw	$4,(%rdi,%rax,4),%xmm0
509238405Sjkim
510238405Sjkim	addl	%r9d,%r8d
511238405Sjkim	movl	(%rdi,%rcx,4),%edx
512238405Sjkim	xorl	%r8d,%r12d
513238405Sjkim	movl	%ebx,(%rdi,%rcx,4)
514238405Sjkim	andl	%r10d,%r12d
515238405Sjkim	addl	56(%r15),%r11d
516238405Sjkim	addb	%dl,%bl
517238405Sjkim	movl	104(%rsi),%eax
518238405Sjkim	addl	$3275163606,%r11d
519238405Sjkim	xorl	%r9d,%r12d
520238405Sjkim	movzbl	%bl,%ebx
521238405Sjkim	movl	%edx,100(%rsi)
522238405Sjkim	addl	%r12d,%r11d
523238405Sjkim	addb	%al,%cl
524238405Sjkim	roll	$9,%r11d
525238405Sjkim	movl	%r8d,%r12d
526238405Sjkim	pinsrw	$4,(%rdi,%rbx,4),%xmm1
527238405Sjkim
528238405Sjkim	addl	%r8d,%r11d
529238405Sjkim	movl	(%rdi,%rcx,4),%edx
530238405Sjkim	xorl	%r11d,%r12d
531238405Sjkim	movl	%eax,(%rdi,%rcx,4)
532238405Sjkim	andl	%r9d,%r12d
533238405Sjkim	addl	12(%r15),%r10d
534238405Sjkim	addb	%dl,%al
535238405Sjkim	movl	108(%rsi),%ebx
536238405Sjkim	addl	$4107603335,%r10d
537238405Sjkim	xorl	%r8d,%r12d
538238405Sjkim	movzbl	%al,%eax
539238405Sjkim	movl	%edx,104(%rsi)
540238405Sjkim	addl	%r12d,%r10d
541238405Sjkim	addb	%bl,%cl
542238405Sjkim	roll	$14,%r10d
543238405Sjkim	movl	%r11d,%r12d
544238405Sjkim	pinsrw	$5,(%rdi,%rax,4),%xmm0
545238405Sjkim
546238405Sjkim	addl	%r11d,%r10d
547238405Sjkim	movl	(%rdi,%rcx,4),%edx
548238405Sjkim	xorl	%r10d,%r12d
549238405Sjkim	movl	%ebx,(%rdi,%rcx,4)
550238405Sjkim	andl	%r8d,%r12d
551238405Sjkim	addl	32(%r15),%r9d
552238405Sjkim	addb	%dl,%bl
553238405Sjkim	movl	112(%rsi),%eax
554238405Sjkim	addl	$1163531501,%r9d
555238405Sjkim	xorl	%r11d,%r12d
556238405Sjkim	movzbl	%bl,%ebx
557238405Sjkim	movl	%edx,108(%rsi)
558238405Sjkim	addl	%r12d,%r9d
559238405Sjkim	addb	%al,%cl
560238405Sjkim	roll	$20,%r9d
561238405Sjkim	movl	%r10d,%r12d
562238405Sjkim	pinsrw	$5,(%rdi,%rbx,4),%xmm1
563238405Sjkim
564238405Sjkim	addl	%r10d,%r9d
565238405Sjkim	movl	(%rdi,%rcx,4),%edx
566238405Sjkim	xorl	%r9d,%r12d
567238405Sjkim	movl	%eax,(%rdi,%rcx,4)
568238405Sjkim	andl	%r11d,%r12d
569238405Sjkim	addl	52(%r15),%r8d
570238405Sjkim	addb	%dl,%al
571238405Sjkim	movl	116(%rsi),%ebx
572238405Sjkim	addl	$2850285829,%r8d
573238405Sjkim	xorl	%r10d,%r12d
574238405Sjkim	movzbl	%al,%eax
575238405Sjkim	movl	%edx,112(%rsi)
576238405Sjkim	addl	%r12d,%r8d
577238405Sjkim	addb	%bl,%cl
578238405Sjkim	roll	$5,%r8d
579238405Sjkim	movl	%r9d,%r12d
580238405Sjkim	pinsrw	$6,(%rdi,%rax,4),%xmm0
581238405Sjkim
582238405Sjkim	addl	%r9d,%r8d
583238405Sjkim	movl	(%rdi,%rcx,4),%edx
584238405Sjkim	xorl	%r8d,%r12d
585238405Sjkim	movl	%ebx,(%rdi,%rcx,4)
586238405Sjkim	andl	%r10d,%r12d
587238405Sjkim	addl	8(%r15),%r11d
588238405Sjkim	addb	%dl,%bl
589238405Sjkim	movl	120(%rsi),%eax
590238405Sjkim	addl	$4243563512,%r11d
591238405Sjkim	xorl	%r9d,%r12d
592238405Sjkim	movzbl	%bl,%ebx
593238405Sjkim	movl	%edx,116(%rsi)
594238405Sjkim	addl	%r12d,%r11d
595238405Sjkim	addb	%al,%cl
596238405Sjkim	roll	$9,%r11d
597238405Sjkim	movl	%r8d,%r12d
598238405Sjkim	pinsrw	$6,(%rdi,%rbx,4),%xmm1
599238405Sjkim
600238405Sjkim	addl	%r8d,%r11d
601238405Sjkim	movl	(%rdi,%rcx,4),%edx
602238405Sjkim	xorl	%r11d,%r12d
603238405Sjkim	movl	%eax,(%rdi,%rcx,4)
604238405Sjkim	andl	%r9d,%r12d
605238405Sjkim	addl	28(%r15),%r10d
606238405Sjkim	addb	%dl,%al
607238405Sjkim	movl	124(%rsi),%ebx
608238405Sjkim	addl	$1735328473,%r10d
609238405Sjkim	xorl	%r8d,%r12d
610238405Sjkim	movzbl	%al,%eax
611238405Sjkim	movl	%edx,120(%rsi)
612238405Sjkim	addl	%r12d,%r10d
613238405Sjkim	addb	%bl,%cl
614238405Sjkim	roll	$14,%r10d
615238405Sjkim	movl	%r11d,%r12d
616238405Sjkim	pinsrw	$7,(%rdi,%rax,4),%xmm0
617238405Sjkim
618238405Sjkim	addl	%r11d,%r10d
619238405Sjkim	movdqu	16(%r13),%xmm3
620238405Sjkim	addb	$32,%bpl
621238405Sjkim	movl	(%rdi,%rcx,4),%edx
622238405Sjkim	xorl	%r10d,%r12d
623238405Sjkim	movl	%ebx,(%rdi,%rcx,4)
624238405Sjkim	andl	%r8d,%r12d
625238405Sjkim	addl	48(%r15),%r9d
626238405Sjkim	addb	%dl,%bl
627238405Sjkim	movl	0(%rdi,%rbp,4),%eax
628238405Sjkim	addl	$2368359562,%r9d
629238405Sjkim	xorl	%r11d,%r12d
630238405Sjkim	movzbl	%bl,%ebx
631238405Sjkim	movl	%edx,124(%rsi)
632238405Sjkim	addl	%r12d,%r9d
633238405Sjkim	addb	%al,%cl
634238405Sjkim	roll	$20,%r9d
635238405Sjkim	movl	%r11d,%r12d
636238405Sjkim	pinsrw	$7,(%rdi,%rbx,4),%xmm1
637238405Sjkim
638238405Sjkim	addl	%r10d,%r9d
639238405Sjkim	movq	%rcx,%rsi
640238405Sjkim	xorq	%rcx,%rcx
641238405Sjkim	movb	%sil,%cl
642238405Sjkim	leaq	(%rdi,%rbp,4),%rsi
643238405Sjkim	psllq	$8,%xmm1
644238405Sjkim	pxor	%xmm0,%xmm3
645238405Sjkim	pxor	%xmm1,%xmm3
646238405Sjkim	pxor	%xmm0,%xmm0
647238405Sjkim	movl	(%rdi,%rcx,4),%edx
648238405Sjkim	xorl	%r10d,%r12d
649238405Sjkim	movl	%eax,(%rdi,%rcx,4)
650238405Sjkim	xorl	%r9d,%r12d
651238405Sjkim	addl	20(%r15),%r8d
652238405Sjkim	addb	%dl,%al
653238405Sjkim	movl	4(%rsi),%ebx
654238405Sjkim	addl	$4294588738,%r8d
655238405Sjkim	movzbl	%al,%eax
656238405Sjkim	addl	%r12d,%r8d
657238405Sjkim	movl	%edx,0(%rsi)
658238405Sjkim	addb	%bl,%cl
659238405Sjkim	roll	$4,%r8d
660238405Sjkim	movl	%r10d,%r12d
661238405Sjkim	movd	(%rdi,%rax,4),%xmm0
662238405Sjkim
663238405Sjkim	addl	%r9d,%r8d
664238405Sjkim	pxor	%xmm1,%xmm1
665238405Sjkim	movl	(%rdi,%rcx,4),%edx
666238405Sjkim	xorl	%r9d,%r12d
667238405Sjkim	movl	%ebx,(%rdi,%rcx,4)
668238405Sjkim	xorl	%r8d,%r12d
669238405Sjkim	addl	32(%r15),%r11d
670238405Sjkim	addb	%dl,%bl
671238405Sjkim	movl	8(%rsi),%eax
672238405Sjkim	addl	$2272392833,%r11d
673238405Sjkim	movzbl	%bl,%ebx
674238405Sjkim	addl	%r12d,%r11d
675238405Sjkim	movl	%edx,4(%rsi)
676238405Sjkim	addb	%al,%cl
677238405Sjkim	roll	$11,%r11d
678238405Sjkim	movl	%r9d,%r12d
679238405Sjkim	movd	(%rdi,%rbx,4),%xmm1
680238405Sjkim
681238405Sjkim	addl	%r8d,%r11d
682238405Sjkim	movl	(%rdi,%rcx,4),%edx
683238405Sjkim	xorl	%r8d,%r12d
684238405Sjkim	movl	%eax,(%rdi,%rcx,4)
685238405Sjkim	xorl	%r11d,%r12d
686238405Sjkim	addl	44(%r15),%r10d
687238405Sjkim	addb	%dl,%al
688238405Sjkim	movl	12(%rsi),%ebx
689238405Sjkim	addl	$1839030562,%r10d
690238405Sjkim	movzbl	%al,%eax
691238405Sjkim	addl	%r12d,%r10d
692238405Sjkim	movl	%edx,8(%rsi)
693238405Sjkim	addb	%bl,%cl
694238405Sjkim	roll	$16,%r10d
695238405Sjkim	movl	%r8d,%r12d
696238405Sjkim	pinsrw	$1,(%rdi,%rax,4),%xmm0
697238405Sjkim
698238405Sjkim	addl	%r11d,%r10d
699238405Sjkim	movl	(%rdi,%rcx,4),%edx
700238405Sjkim	xorl	%r11d,%r12d
701238405Sjkim	movl	%ebx,(%rdi,%rcx,4)
702238405Sjkim	xorl	%r10d,%r12d
703238405Sjkim	addl	56(%r15),%r9d
704238405Sjkim	addb	%dl,%bl
705238405Sjkim	movl	16(%rsi),%eax
706238405Sjkim	addl	$4259657740,%r9d
707238405Sjkim	movzbl	%bl,%ebx
708238405Sjkim	addl	%r12d,%r9d
709238405Sjkim	movl	%edx,12(%rsi)
710238405Sjkim	addb	%al,%cl
711238405Sjkim	roll	$23,%r9d
712238405Sjkim	movl	%r11d,%r12d
713238405Sjkim	pinsrw	$1,(%rdi,%rbx,4),%xmm1
714238405Sjkim
715238405Sjkim	addl	%r10d,%r9d
716238405Sjkim	movl	(%rdi,%rcx,4),%edx
717238405Sjkim	xorl	%r10d,%r12d
718238405Sjkim	movl	%eax,(%rdi,%rcx,4)
719238405Sjkim	xorl	%r9d,%r12d
720238405Sjkim	addl	4(%r15),%r8d
721238405Sjkim	addb	%dl,%al
722238405Sjkim	movl	20(%rsi),%ebx
723238405Sjkim	addl	$2763975236,%r8d
724238405Sjkim	movzbl	%al,%eax
725238405Sjkim	addl	%r12d,%r8d
726238405Sjkim	movl	%edx,16(%rsi)
727238405Sjkim	addb	%bl,%cl
728238405Sjkim	roll	$4,%r8d
729238405Sjkim	movl	%r10d,%r12d
730238405Sjkim	pinsrw	$2,(%rdi,%rax,4),%xmm0
731238405Sjkim
732238405Sjkim	addl	%r9d,%r8d
733238405Sjkim	movl	(%rdi,%rcx,4),%edx
734238405Sjkim	xorl	%r9d,%r12d
735238405Sjkim	movl	%ebx,(%rdi,%rcx,4)
736238405Sjkim	xorl	%r8d,%r12d
737238405Sjkim	addl	16(%r15),%r11d
738238405Sjkim	addb	%dl,%bl
739238405Sjkim	movl	24(%rsi),%eax
740238405Sjkim	addl	$1272893353,%r11d
741238405Sjkim	movzbl	%bl,%ebx
742238405Sjkim	addl	%r12d,%r11d
743238405Sjkim	movl	%edx,20(%rsi)
744238405Sjkim	addb	%al,%cl
745238405Sjkim	roll	$11,%r11d
746238405Sjkim	movl	%r9d,%r12d
747238405Sjkim	pinsrw	$2,(%rdi,%rbx,4),%xmm1
748238405Sjkim
749238405Sjkim	addl	%r8d,%r11d
750238405Sjkim	movl	(%rdi,%rcx,4),%edx
751238405Sjkim	xorl	%r8d,%r12d
752238405Sjkim	movl	%eax,(%rdi,%rcx,4)
753238405Sjkim	xorl	%r11d,%r12d
754238405Sjkim	addl	28(%r15),%r10d
755238405Sjkim	addb	%dl,%al
756238405Sjkim	movl	28(%rsi),%ebx
757238405Sjkim	addl	$4139469664,%r10d
758238405Sjkim	movzbl	%al,%eax
759238405Sjkim	addl	%r12d,%r10d
760238405Sjkim	movl	%edx,24(%rsi)
761238405Sjkim	addb	%bl,%cl
762238405Sjkim	roll	$16,%r10d
763238405Sjkim	movl	%r8d,%r12d
764238405Sjkim	pinsrw	$3,(%rdi,%rax,4),%xmm0
765238405Sjkim
766238405Sjkim	addl	%r11d,%r10d
767238405Sjkim	movl	(%rdi,%rcx,4),%edx
768238405Sjkim	xorl	%r11d,%r12d
769238405Sjkim	movl	%ebx,(%rdi,%rcx,4)
770238405Sjkim	xorl	%r10d,%r12d
771238405Sjkim	addl	40(%r15),%r9d
772238405Sjkim	addb	%dl,%bl
773238405Sjkim	movl	32(%rsi),%eax
774238405Sjkim	addl	$3200236656,%r9d
775238405Sjkim	movzbl	%bl,%ebx
776238405Sjkim	addl	%r12d,%r9d
777238405Sjkim	movl	%edx,28(%rsi)
778238405Sjkim	addb	%al,%cl
779238405Sjkim	roll	$23,%r9d
780238405Sjkim	movl	%r11d,%r12d
781238405Sjkim	pinsrw	$3,(%rdi,%rbx,4),%xmm1
782238405Sjkim
783238405Sjkim	addl	%r10d,%r9d
784238405Sjkim	movl	(%rdi,%rcx,4),%edx
785238405Sjkim	xorl	%r10d,%r12d
786238405Sjkim	movl	%eax,(%rdi,%rcx,4)
787238405Sjkim	xorl	%r9d,%r12d
788238405Sjkim	addl	52(%r15),%r8d
789238405Sjkim	addb	%dl,%al
790238405Sjkim	movl	36(%rsi),%ebx
791238405Sjkim	addl	$681279174,%r8d
792238405Sjkim	movzbl	%al,%eax
793238405Sjkim	addl	%r12d,%r8d
794238405Sjkim	movl	%edx,32(%rsi)
795238405Sjkim	addb	%bl,%cl
796238405Sjkim	roll	$4,%r8d
797238405Sjkim	movl	%r10d,%r12d
798238405Sjkim	pinsrw	$4,(%rdi,%rax,4),%xmm0
799238405Sjkim
800238405Sjkim	addl	%r9d,%r8d
801238405Sjkim	movl	(%rdi,%rcx,4),%edx
802238405Sjkim	xorl	%r9d,%r12d
803238405Sjkim	movl	%ebx,(%rdi,%rcx,4)
804238405Sjkim	xorl	%r8d,%r12d
805238405Sjkim	addl	0(%r15),%r11d
806238405Sjkim	addb	%dl,%bl
807238405Sjkim	movl	40(%rsi),%eax
808238405Sjkim	addl	$3936430074,%r11d
809238405Sjkim	movzbl	%bl,%ebx
810238405Sjkim	addl	%r12d,%r11d
811238405Sjkim	movl	%edx,36(%rsi)
812238405Sjkim	addb	%al,%cl
813238405Sjkim	roll	$11,%r11d
814238405Sjkim	movl	%r9d,%r12d
815238405Sjkim	pinsrw	$4,(%rdi,%rbx,4),%xmm1
816238405Sjkim
817238405Sjkim	addl	%r8d,%r11d
818238405Sjkim	movl	(%rdi,%rcx,4),%edx
819238405Sjkim	xorl	%r8d,%r12d
820238405Sjkim	movl	%eax,(%rdi,%rcx,4)
821238405Sjkim	xorl	%r11d,%r12d
822238405Sjkim	addl	12(%r15),%r10d
823238405Sjkim	addb	%dl,%al
824238405Sjkim	movl	44(%rsi),%ebx
825238405Sjkim	addl	$3572445317,%r10d
826238405Sjkim	movzbl	%al,%eax
827238405Sjkim	addl	%r12d,%r10d
828238405Sjkim	movl	%edx,40(%rsi)
829238405Sjkim	addb	%bl,%cl
830238405Sjkim	roll	$16,%r10d
831238405Sjkim	movl	%r8d,%r12d
832238405Sjkim	pinsrw	$5,(%rdi,%rax,4),%xmm0
833238405Sjkim
834238405Sjkim	addl	%r11d,%r10d
835238405Sjkim	movl	(%rdi,%rcx,4),%edx
836238405Sjkim	xorl	%r11d,%r12d
837238405Sjkim	movl	%ebx,(%rdi,%rcx,4)
838238405Sjkim	xorl	%r10d,%r12d
839238405Sjkim	addl	24(%r15),%r9d
840238405Sjkim	addb	%dl,%bl
841238405Sjkim	movl	48(%rsi),%eax
842238405Sjkim	addl	$76029189,%r9d
843238405Sjkim	movzbl	%bl,%ebx
844238405Sjkim	addl	%r12d,%r9d
845238405Sjkim	movl	%edx,44(%rsi)
846238405Sjkim	addb	%al,%cl
847238405Sjkim	roll	$23,%r9d
848238405Sjkim	movl	%r11d,%r12d
849238405Sjkim	pinsrw	$5,(%rdi,%rbx,4),%xmm1
850238405Sjkim
851238405Sjkim	addl	%r10d,%r9d
852238405Sjkim	movl	(%rdi,%rcx,4),%edx
853238405Sjkim	xorl	%r10d,%r12d
854238405Sjkim	movl	%eax,(%rdi,%rcx,4)
855238405Sjkim	xorl	%r9d,%r12d
856238405Sjkim	addl	36(%r15),%r8d
857238405Sjkim	addb	%dl,%al
858238405Sjkim	movl	52(%rsi),%ebx
859238405Sjkim	addl	$3654602809,%r8d
860238405Sjkim	movzbl	%al,%eax
861238405Sjkim	addl	%r12d,%r8d
862238405Sjkim	movl	%edx,48(%rsi)
863238405Sjkim	addb	%bl,%cl
864238405Sjkim	roll	$4,%r8d
865238405Sjkim	movl	%r10d,%r12d
866238405Sjkim	pinsrw	$6,(%rdi,%rax,4),%xmm0
867238405Sjkim
868238405Sjkim	addl	%r9d,%r8d
869238405Sjkim	movl	(%rdi,%rcx,4),%edx
870238405Sjkim	xorl	%r9d,%r12d
871238405Sjkim	movl	%ebx,(%rdi,%rcx,4)
872238405Sjkim	xorl	%r8d,%r12d
873238405Sjkim	addl	48(%r15),%r11d
874238405Sjkim	addb	%dl,%bl
875238405Sjkim	movl	56(%rsi),%eax
876238405Sjkim	addl	$3873151461,%r11d
877238405Sjkim	movzbl	%bl,%ebx
878238405Sjkim	addl	%r12d,%r11d
879238405Sjkim	movl	%edx,52(%rsi)
880238405Sjkim	addb	%al,%cl
881238405Sjkim	roll	$11,%r11d
882238405Sjkim	movl	%r9d,%r12d
883238405Sjkim	pinsrw	$6,(%rdi,%rbx,4),%xmm1
884238405Sjkim
885238405Sjkim	addl	%r8d,%r11d
886238405Sjkim	movl	(%rdi,%rcx,4),%edx
887238405Sjkim	xorl	%r8d,%r12d
888238405Sjkim	movl	%eax,(%rdi,%rcx,4)
889238405Sjkim	xorl	%r11d,%r12d
890238405Sjkim	addl	60(%r15),%r10d
891238405Sjkim	addb	%dl,%al
892238405Sjkim	movl	60(%rsi),%ebx
893238405Sjkim	addl	$530742520,%r10d
894238405Sjkim	movzbl	%al,%eax
895238405Sjkim	addl	%r12d,%r10d
896238405Sjkim	movl	%edx,56(%rsi)
897238405Sjkim	addb	%bl,%cl
898238405Sjkim	roll	$16,%r10d
899238405Sjkim	movl	%r8d,%r12d
900238405Sjkim	pinsrw	$7,(%rdi,%rax,4),%xmm0
901238405Sjkim
902238405Sjkim	addl	%r11d,%r10d
903238405Sjkim	movdqu	32(%r13),%xmm4
904238405Sjkim	movl	(%rdi,%rcx,4),%edx
905238405Sjkim	xorl	%r11d,%r12d
906238405Sjkim	movl	%ebx,(%rdi,%rcx,4)
907238405Sjkim	xorl	%r10d,%r12d
908238405Sjkim	addl	8(%r15),%r9d
909238405Sjkim	addb	%dl,%bl
910238405Sjkim	movl	64(%rsi),%eax
911238405Sjkim	addl	$3299628645,%r9d
912238405Sjkim	movzbl	%bl,%ebx
913238405Sjkim	addl	%r12d,%r9d
914238405Sjkim	movl	%edx,60(%rsi)
915238405Sjkim	addb	%al,%cl
916238405Sjkim	roll	$23,%r9d
917238405Sjkim	movl	$-1,%r12d
918238405Sjkim	pinsrw	$7,(%rdi,%rbx,4),%xmm1
919238405Sjkim
920238405Sjkim	addl	%r10d,%r9d
921238405Sjkim	psllq	$8,%xmm1
922238405Sjkim	pxor	%xmm0,%xmm4
923238405Sjkim	pxor	%xmm1,%xmm4
924238405Sjkim	pxor	%xmm0,%xmm0
925238405Sjkim	movl	(%rdi,%rcx,4),%edx
926238405Sjkim	xorl	%r11d,%r12d
927238405Sjkim	movl	%eax,(%rdi,%rcx,4)
928238405Sjkim	orl	%r9d,%r12d
929238405Sjkim	addl	0(%r15),%r8d
930238405Sjkim	addb	%dl,%al
931238405Sjkim	movl	68(%rsi),%ebx
932238405Sjkim	addl	$4096336452,%r8d
933238405Sjkim	movzbl	%al,%eax
934238405Sjkim	xorl	%r10d,%r12d
935238405Sjkim	movl	%edx,64(%rsi)
936238405Sjkim	addl	%r12d,%r8d
937238405Sjkim	addb	%bl,%cl
938238405Sjkim	roll	$6,%r8d
939238405Sjkim	movl	$-1,%r12d
940238405Sjkim	movd	(%rdi,%rax,4),%xmm0
941238405Sjkim
942238405Sjkim	addl	%r9d,%r8d
943238405Sjkim	pxor	%xmm1,%xmm1
944238405Sjkim	movl	(%rdi,%rcx,4),%edx
945238405Sjkim	xorl	%r10d,%r12d
946238405Sjkim	movl	%ebx,(%rdi,%rcx,4)
947238405Sjkim	orl	%r8d,%r12d
948238405Sjkim	addl	28(%r15),%r11d
949238405Sjkim	addb	%dl,%bl
950238405Sjkim	movl	72(%rsi),%eax
951238405Sjkim	addl	$1126891415,%r11d
952238405Sjkim	movzbl	%bl,%ebx
953238405Sjkim	xorl	%r9d,%r12d
954238405Sjkim	movl	%edx,68(%rsi)
955238405Sjkim	addl	%r12d,%r11d
956238405Sjkim	addb	%al,%cl
957238405Sjkim	roll	$10,%r11d
958238405Sjkim	movl	$-1,%r12d
959238405Sjkim	movd	(%rdi,%rbx,4),%xmm1
960238405Sjkim
961238405Sjkim	addl	%r8d,%r11d
962238405Sjkim	movl	(%rdi,%rcx,4),%edx
963238405Sjkim	xorl	%r9d,%r12d
964238405Sjkim	movl	%eax,(%rdi,%rcx,4)
965238405Sjkim	orl	%r11d,%r12d
966238405Sjkim	addl	56(%r15),%r10d
967238405Sjkim	addb	%dl,%al
968238405Sjkim	movl	76(%rsi),%ebx
969238405Sjkim	addl	$2878612391,%r10d
970238405Sjkim	movzbl	%al,%eax
971238405Sjkim	xorl	%r8d,%r12d
972238405Sjkim	movl	%edx,72(%rsi)
973238405Sjkim	addl	%r12d,%r10d
974238405Sjkim	addb	%bl,%cl
975238405Sjkim	roll	$15,%r10d
976238405Sjkim	movl	$-1,%r12d
977238405Sjkim	pinsrw	$1,(%rdi,%rax,4),%xmm0
978238405Sjkim
979238405Sjkim	addl	%r11d,%r10d
980238405Sjkim	movl	(%rdi,%rcx,4),%edx
981238405Sjkim	xorl	%r8d,%r12d
982238405Sjkim	movl	%ebx,(%rdi,%rcx,4)
983238405Sjkim	orl	%r10d,%r12d
984238405Sjkim	addl	20(%r15),%r9d
985238405Sjkim	addb	%dl,%bl
986238405Sjkim	movl	80(%rsi),%eax
987238405Sjkim	addl	$4237533241,%r9d
988238405Sjkim	movzbl	%bl,%ebx
989238405Sjkim	xorl	%r11d,%r12d
990238405Sjkim	movl	%edx,76(%rsi)
991238405Sjkim	addl	%r12d,%r9d
992238405Sjkim	addb	%al,%cl
993238405Sjkim	roll	$21,%r9d
994238405Sjkim	movl	$-1,%r12d
995238405Sjkim	pinsrw	$1,(%rdi,%rbx,4),%xmm1
996238405Sjkim
997238405Sjkim	addl	%r10d,%r9d
998238405Sjkim	movl	(%rdi,%rcx,4),%edx
999238405Sjkim	xorl	%r11d,%r12d
1000238405Sjkim	movl	%eax,(%rdi,%rcx,4)
1001238405Sjkim	orl	%r9d,%r12d
1002238405Sjkim	addl	48(%r15),%r8d
1003238405Sjkim	addb	%dl,%al
1004238405Sjkim	movl	84(%rsi),%ebx
1005238405Sjkim	addl	$1700485571,%r8d
1006238405Sjkim	movzbl	%al,%eax
1007238405Sjkim	xorl	%r10d,%r12d
1008238405Sjkim	movl	%edx,80(%rsi)
1009238405Sjkim	addl	%r12d,%r8d
1010238405Sjkim	addb	%bl,%cl
1011238405Sjkim	roll	$6,%r8d
1012238405Sjkim	movl	$-1,%r12d
1013238405Sjkim	pinsrw	$2,(%rdi,%rax,4),%xmm0
1014238405Sjkim
1015238405Sjkim	addl	%r9d,%r8d
1016238405Sjkim	movl	(%rdi,%rcx,4),%edx
1017238405Sjkim	xorl	%r10d,%r12d
1018238405Sjkim	movl	%ebx,(%rdi,%rcx,4)
1019238405Sjkim	orl	%r8d,%r12d
1020238405Sjkim	addl	12(%r15),%r11d
1021238405Sjkim	addb	%dl,%bl
1022238405Sjkim	movl	88(%rsi),%eax
1023238405Sjkim	addl	$2399980690,%r11d
1024238405Sjkim	movzbl	%bl,%ebx
1025238405Sjkim	xorl	%r9d,%r12d
1026238405Sjkim	movl	%edx,84(%rsi)
1027238405Sjkim	addl	%r12d,%r11d
1028238405Sjkim	addb	%al,%cl
1029238405Sjkim	roll	$10,%r11d
1030238405Sjkim	movl	$-1,%r12d
1031238405Sjkim	pinsrw	$2,(%rdi,%rbx,4),%xmm1
1032238405Sjkim
1033238405Sjkim	addl	%r8d,%r11d
1034238405Sjkim	movl	(%rdi,%rcx,4),%edx
1035238405Sjkim	xorl	%r9d,%r12d
1036238405Sjkim	movl	%eax,(%rdi,%rcx,4)
1037238405Sjkim	orl	%r11d,%r12d
1038238405Sjkim	addl	40(%r15),%r10d
1039238405Sjkim	addb	%dl,%al
1040238405Sjkim	movl	92(%rsi),%ebx
1041238405Sjkim	addl	$4293915773,%r10d
1042238405Sjkim	movzbl	%al,%eax
1043238405Sjkim	xorl	%r8d,%r12d
1044238405Sjkim	movl	%edx,88(%rsi)
1045238405Sjkim	addl	%r12d,%r10d
1046238405Sjkim	addb	%bl,%cl
1047238405Sjkim	roll	$15,%r10d
1048238405Sjkim	movl	$-1,%r12d
1049238405Sjkim	pinsrw	$3,(%rdi,%rax,4),%xmm0
1050238405Sjkim
1051238405Sjkim	addl	%r11d,%r10d
1052238405Sjkim	movl	(%rdi,%rcx,4),%edx
1053238405Sjkim	xorl	%r8d,%r12d
1054238405Sjkim	movl	%ebx,(%rdi,%rcx,4)
1055238405Sjkim	orl	%r10d,%r12d
1056238405Sjkim	addl	4(%r15),%r9d
1057238405Sjkim	addb	%dl,%bl
1058238405Sjkim	movl	96(%rsi),%eax
1059238405Sjkim	addl	$2240044497,%r9d
1060238405Sjkim	movzbl	%bl,%ebx
1061238405Sjkim	xorl	%r11d,%r12d
1062238405Sjkim	movl	%edx,92(%rsi)
1063238405Sjkim	addl	%r12d,%r9d
1064238405Sjkim	addb	%al,%cl
1065238405Sjkim	roll	$21,%r9d
1066238405Sjkim	movl	$-1,%r12d
1067238405Sjkim	pinsrw	$3,(%rdi,%rbx,4),%xmm1
1068238405Sjkim
1069238405Sjkim	addl	%r10d,%r9d
1070238405Sjkim	movl	(%rdi,%rcx,4),%edx
1071238405Sjkim	xorl	%r11d,%r12d
1072238405Sjkim	movl	%eax,(%rdi,%rcx,4)
1073238405Sjkim	orl	%r9d,%r12d
1074238405Sjkim	addl	32(%r15),%r8d
1075238405Sjkim	addb	%dl,%al
1076238405Sjkim	movl	100(%rsi),%ebx
1077238405Sjkim	addl	$1873313359,%r8d
1078238405Sjkim	movzbl	%al,%eax
1079238405Sjkim	xorl	%r10d,%r12d
1080238405Sjkim	movl	%edx,96(%rsi)
1081238405Sjkim	addl	%r12d,%r8d
1082238405Sjkim	addb	%bl,%cl
1083238405Sjkim	roll	$6,%r8d
1084238405Sjkim	movl	$-1,%r12d
1085238405Sjkim	pinsrw	$4,(%rdi,%rax,4),%xmm0
1086238405Sjkim
1087238405Sjkim	addl	%r9d,%r8d
1088238405Sjkim	movl	(%rdi,%rcx,4),%edx
1089238405Sjkim	xorl	%r10d,%r12d
1090238405Sjkim	movl	%ebx,(%rdi,%rcx,4)
1091238405Sjkim	orl	%r8d,%r12d
1092238405Sjkim	addl	60(%r15),%r11d
1093238405Sjkim	addb	%dl,%bl
1094238405Sjkim	movl	104(%rsi),%eax
1095238405Sjkim	addl	$4264355552,%r11d
1096238405Sjkim	movzbl	%bl,%ebx
1097238405Sjkim	xorl	%r9d,%r12d
1098238405Sjkim	movl	%edx,100(%rsi)
1099238405Sjkim	addl	%r12d,%r11d
1100238405Sjkim	addb	%al,%cl
1101238405Sjkim	roll	$10,%r11d
1102238405Sjkim	movl	$-1,%r12d
1103238405Sjkim	pinsrw	$4,(%rdi,%rbx,4),%xmm1
1104238405Sjkim
1105238405Sjkim	addl	%r8d,%r11d
1106238405Sjkim	movl	(%rdi,%rcx,4),%edx
1107238405Sjkim	xorl	%r9d,%r12d
1108238405Sjkim	movl	%eax,(%rdi,%rcx,4)
1109238405Sjkim	orl	%r11d,%r12d
1110238405Sjkim	addl	24(%r15),%r10d
1111238405Sjkim	addb	%dl,%al
1112238405Sjkim	movl	108(%rsi),%ebx
1113238405Sjkim	addl	$2734768916,%r10d
1114238405Sjkim	movzbl	%al,%eax
1115238405Sjkim	xorl	%r8d,%r12d
1116238405Sjkim	movl	%edx,104(%rsi)
1117238405Sjkim	addl	%r12d,%r10d
1118238405Sjkim	addb	%bl,%cl
1119238405Sjkim	roll	$15,%r10d
1120238405Sjkim	movl	$-1,%r12d
1121238405Sjkim	pinsrw	$5,(%rdi,%rax,4),%xmm0
1122238405Sjkim
1123238405Sjkim	addl	%r11d,%r10d
1124238405Sjkim	movl	(%rdi,%rcx,4),%edx
1125238405Sjkim	xorl	%r8d,%r12d
1126238405Sjkim	movl	%ebx,(%rdi,%rcx,4)
1127238405Sjkim	orl	%r10d,%r12d
1128238405Sjkim	addl	52(%r15),%r9d
1129238405Sjkim	addb	%dl,%bl
1130238405Sjkim	movl	112(%rsi),%eax
1131238405Sjkim	addl	$1309151649,%r9d
1132238405Sjkim	movzbl	%bl,%ebx
1133238405Sjkim	xorl	%r11d,%r12d
1134238405Sjkim	movl	%edx,108(%rsi)
1135238405Sjkim	addl	%r12d,%r9d
1136238405Sjkim	addb	%al,%cl
1137238405Sjkim	roll	$21,%r9d
1138238405Sjkim	movl	$-1,%r12d
1139238405Sjkim	pinsrw	$5,(%rdi,%rbx,4),%xmm1
1140238405Sjkim
1141238405Sjkim	addl	%r10d,%r9d
1142238405Sjkim	movl	(%rdi,%rcx,4),%edx
1143238405Sjkim	xorl	%r11d,%r12d
1144238405Sjkim	movl	%eax,(%rdi,%rcx,4)
1145238405Sjkim	orl	%r9d,%r12d
1146238405Sjkim	addl	16(%r15),%r8d
1147238405Sjkim	addb	%dl,%al
1148238405Sjkim	movl	116(%rsi),%ebx
1149238405Sjkim	addl	$4149444226,%r8d
1150238405Sjkim	movzbl	%al,%eax
1151238405Sjkim	xorl	%r10d,%r12d
1152238405Sjkim	movl	%edx,112(%rsi)
1153238405Sjkim	addl	%r12d,%r8d
1154238405Sjkim	addb	%bl,%cl
1155238405Sjkim	roll	$6,%r8d
1156238405Sjkim	movl	$-1,%r12d
1157238405Sjkim	pinsrw	$6,(%rdi,%rax,4),%xmm0
1158238405Sjkim
1159238405Sjkim	addl	%r9d,%r8d
1160238405Sjkim	movl	(%rdi,%rcx,4),%edx
1161238405Sjkim	xorl	%r10d,%r12d
1162238405Sjkim	movl	%ebx,(%rdi,%rcx,4)
1163238405Sjkim	orl	%r8d,%r12d
1164238405Sjkim	addl	44(%r15),%r11d
1165238405Sjkim	addb	%dl,%bl
1166238405Sjkim	movl	120(%rsi),%eax
1167238405Sjkim	addl	$3174756917,%r11d
1168238405Sjkim	movzbl	%bl,%ebx
1169238405Sjkim	xorl	%r9d,%r12d
1170238405Sjkim	movl	%edx,116(%rsi)
1171238405Sjkim	addl	%r12d,%r11d
1172238405Sjkim	addb	%al,%cl
1173238405Sjkim	roll	$10,%r11d
1174238405Sjkim	movl	$-1,%r12d
1175238405Sjkim	pinsrw	$6,(%rdi,%rbx,4),%xmm1
1176238405Sjkim
1177238405Sjkim	addl	%r8d,%r11d
1178238405Sjkim	movl	(%rdi,%rcx,4),%edx
1179238405Sjkim	xorl	%r9d,%r12d
1180238405Sjkim	movl	%eax,(%rdi,%rcx,4)
1181238405Sjkim	orl	%r11d,%r12d
1182238405Sjkim	addl	8(%r15),%r10d
1183238405Sjkim	addb	%dl,%al
1184238405Sjkim	movl	124(%rsi),%ebx
1185238405Sjkim	addl	$718787259,%r10d
1186238405Sjkim	movzbl	%al,%eax
1187238405Sjkim	xorl	%r8d,%r12d
1188238405Sjkim	movl	%edx,120(%rsi)
1189238405Sjkim	addl	%r12d,%r10d
1190238405Sjkim	addb	%bl,%cl
1191238405Sjkim	roll	$15,%r10d
1192238405Sjkim	movl	$-1,%r12d
1193238405Sjkim	pinsrw	$7,(%rdi,%rax,4),%xmm0
1194238405Sjkim
1195238405Sjkim	addl	%r11d,%r10d
1196238405Sjkim	movdqu	48(%r13),%xmm5
1197238405Sjkim	addb	$32,%bpl
1198238405Sjkim	movl	(%rdi,%rcx,4),%edx
1199238405Sjkim	xorl	%r8d,%r12d
1200238405Sjkim	movl	%ebx,(%rdi,%rcx,4)
1201238405Sjkim	orl	%r10d,%r12d
1202238405Sjkim	addl	36(%r15),%r9d
1203238405Sjkim	addb	%dl,%bl
1204238405Sjkim	movl	0(%rdi,%rbp,4),%eax
1205238405Sjkim	addl	$3951481745,%r9d
1206238405Sjkim	movzbl	%bl,%ebx
1207238405Sjkim	xorl	%r11d,%r12d
1208238405Sjkim	movl	%edx,124(%rsi)
1209238405Sjkim	addl	%r12d,%r9d
1210238405Sjkim	addb	%al,%cl
1211238405Sjkim	roll	$21,%r9d
1212238405Sjkim	movl	$-1,%r12d
1213238405Sjkim	pinsrw	$7,(%rdi,%rbx,4),%xmm1
1214238405Sjkim
1215238405Sjkim	addl	%r10d,%r9d
1216238405Sjkim	movq	%rbp,%rsi
1217238405Sjkim	xorq	%rbp,%rbp
1218238405Sjkim	movb	%sil,%bpl
1219238405Sjkim	movq	%rcx,%rsi
1220238405Sjkim	xorq	%rcx,%rcx
1221238405Sjkim	movb	%sil,%cl
1222238405Sjkim	leaq	(%rdi,%rbp,4),%rsi
1223238405Sjkim	psllq	$8,%xmm1
1224238405Sjkim	pxor	%xmm0,%xmm5
1225238405Sjkim	pxor	%xmm1,%xmm5
1226238405Sjkim	addl	0(%rsp),%r8d
1227238405Sjkim	addl	4(%rsp),%r9d
1228238405Sjkim	addl	8(%rsp),%r10d
1229238405Sjkim	addl	12(%rsp),%r11d
1230238405Sjkim
1231238405Sjkim	movdqu	%xmm2,(%r14,%r13,1)
1232238405Sjkim	movdqu	%xmm3,16(%r14,%r13,1)
1233238405Sjkim	movdqu	%xmm4,32(%r14,%r13,1)
1234238405Sjkim	movdqu	%xmm5,48(%r14,%r13,1)
1235238405Sjkim	leaq	64(%r15),%r15
1236238405Sjkim	leaq	64(%r13),%r13
1237238405Sjkim	cmpq	16(%rsp),%r15
1238238405Sjkim	jb	.Loop
1239238405Sjkim
1240238405Sjkim	movq	24(%rsp),%r12
1241238405Sjkim	subb	%al,%cl
1242238405Sjkim	movl	%r8d,0(%r12)
1243238405Sjkim	movl	%r9d,4(%r12)
1244238405Sjkim	movl	%r10d,8(%r12)
1245238405Sjkim	movl	%r11d,12(%r12)
1246238405Sjkim	subb	$1,%bpl
1247238405Sjkim	movl	%ebp,-8(%rdi)
1248238405Sjkim	movl	%ecx,-4(%rdi)
1249238405Sjkim
1250238405Sjkim	movq	40(%rsp),%r15
1251238405Sjkim	movq	48(%rsp),%r14
1252238405Sjkim	movq	56(%rsp),%r13
1253238405Sjkim	movq	64(%rsp),%r12
1254238405Sjkim	movq	72(%rsp),%rbp
1255238405Sjkim	movq	80(%rsp),%rbx
1256238405Sjkim	leaq	88(%rsp),%rsp
1257238405Sjkim.Lepilogue:
1258238405Sjkim.Labort:
1259238405Sjkim	.byte	0xf3,0xc3
1260238405Sjkim.size	rc4_md5_enc,.-rc4_md5_enc
1261