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