15ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.file	"crypto/aes/asm/aesni-x86.s"
25ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.text
35ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.globl	_aesni_encrypt
45ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4
55ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com_aesni_encrypt:
65ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL_aesni_encrypt_begin:
75ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	4(%esp),%eax
85ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	12(%esp),%edx
95ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%eax),%xmm2
105ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	240(%edx),%ecx
115ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	8(%esp),%eax
125ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm0
135ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%edx),%xmm1
145ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	32(%edx),%edx
155ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm0,%xmm2
165ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL000enc1_loop_1:
175ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,209
185ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	decl	%ecx
195ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm1
205ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	16(%edx),%edx
215ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jnz	L000enc1_loop_1
225ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,221,209
235ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm2,(%eax)
245ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	ret
255ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.globl	_aesni_decrypt
265ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4
275ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com_aesni_decrypt:
285ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL_aesni_decrypt_begin:
295ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	4(%esp),%eax
305ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	12(%esp),%edx
315ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%eax),%xmm2
325ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	240(%edx),%ecx
335ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	8(%esp),%eax
345ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm0
355ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%edx),%xmm1
365ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	32(%edx),%edx
375ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm0,%xmm2
385ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL001dec1_loop_2:
395ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,209
405ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	decl	%ecx
415ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm1
425ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	16(%edx),%edx
435ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jnz	L001dec1_loop_2
445ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,223,209
455ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm2,(%eax)
465ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	ret
475ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4
485ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com__aesni_encrypt3:
495ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm0
505ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	shrl	$1,%ecx
515ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%edx),%xmm1
525ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	32(%edx),%edx
535ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm0,%xmm2
545ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm3
555ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm4
565ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm0
575ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL002enc3_loop:
585ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,209
595ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,217
605ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	decl	%ecx
615ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,225
625ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%edx),%xmm1
635ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,208
645ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,216
655ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	32(%edx),%edx
665ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,224
675ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm0
685ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jnz	L002enc3_loop
695ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,209
705ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,217
715ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,225
725ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,221,208
735ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,221,216
745ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,221,224
755ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	ret
765ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4
775ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com__aesni_decrypt3:
785ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm0
795ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	shrl	$1,%ecx
805ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%edx),%xmm1
815ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	32(%edx),%edx
825ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm0,%xmm2
835ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm3
845ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm4
855ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm0
865ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL003dec3_loop:
875ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,209
885ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,217
895ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	decl	%ecx
905ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,225
915ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%edx),%xmm1
925ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,208
935ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,216
945ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	32(%edx),%edx
955ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,224
965ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm0
975ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jnz	L003dec3_loop
985ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,209
995ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,217
1005ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,225
1015ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,223,208
1025ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,223,216
1035ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,223,224
1045ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	ret
1055ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4
1065ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com__aesni_encrypt4:
1075ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm0
1085ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%edx),%xmm1
1095ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	shrl	$1,%ecx
1105ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	32(%edx),%edx
1115ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm0,%xmm2
1125ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm3
1135ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm4
1145ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm5
1155ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm0
1165ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL004enc4_loop:
1175ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,209
1185ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,217
1195ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	decl	%ecx
1205ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,225
1215ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,233
1225ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%edx),%xmm1
1235ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,208
1245ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,216
1255ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	32(%edx),%edx
1265ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,224
1275ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,232
1285ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm0
1295ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jnz	L004enc4_loop
1305ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,209
1315ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,217
1325ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,225
1335ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,233
1345ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,221,208
1355ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,221,216
1365ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,221,224
1375ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,221,232
1385ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	ret
1395ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4
1405ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com__aesni_decrypt4:
1415ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm0
1425ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%edx),%xmm1
1435ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	shrl	$1,%ecx
1445ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	32(%edx),%edx
1455ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm0,%xmm2
1465ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm3
1475ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm4
1485ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm5
1495ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm0
1505ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL005dec4_loop:
1515ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,209
1525ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,217
1535ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	decl	%ecx
1545ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,225
1555ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,233
1565ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%edx),%xmm1
1575ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,208
1585ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,216
1595ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	32(%edx),%edx
1605ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,224
1615ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,232
1625ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm0
1635ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jnz	L005dec4_loop
1645ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,209
1655ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,217
1665ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,225
1675ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,233
1685ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,223,208
1695ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,223,216
1705ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,223,224
1715ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,223,232
1725ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	ret
1735ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4
1745ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com__aesni_encrypt6:
1755ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm0
1765ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	shrl	$1,%ecx
1775ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%edx),%xmm1
1785ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	32(%edx),%edx
1795ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm0,%xmm2
1805ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm3
1815ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,209
1825ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm4
1835ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,217
1845ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm5
1855ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	decl	%ecx
1865ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,225
1875ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm6
1885ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,233
1895ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm7
1905ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,241
1915ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm0
1925ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,249
1935ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jmp	L_aesni_encrypt6_enter
1945ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
1955ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL006enc6_loop:
1965ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,209
1975ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,217
1985ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	decl	%ecx
1995ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,225
2005ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,233
2015ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,241
2025ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,249
2035ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
2045ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL_aesni_encrypt6_enter:
2055ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%edx),%xmm1
2065ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,208
2075ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,216
2085ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	32(%edx),%edx
2095ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,224
2105ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,232
2115ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,240
2125ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,248
2135ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm0
2145ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jnz	L006enc6_loop
2155ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,209
2165ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,217
2175ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,225
2185ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,233
2195ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,241
2205ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,249
2215ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,221,208
2225ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,221,216
2235ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,221,224
2245ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,221,232
2255ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,221,240
2265ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,221,248
2275ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	ret
2285ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4
2295ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com__aesni_decrypt6:
2305ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm0
2315ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	shrl	$1,%ecx
2325ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%edx),%xmm1
2335ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	32(%edx),%edx
2345ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm0,%xmm2
2355ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm3
2365ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,209
2375ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm4
2385ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,217
2395ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm5
2405ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	decl	%ecx
2415ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,225
2425ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm6
2435ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,233
2445ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm7
2455ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,241
2465ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm0
2475ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,249
2485ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jmp	L_aesni_decrypt6_enter
2495ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
2505ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL007dec6_loop:
2515ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,209
2525ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,217
2535ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	decl	%ecx
2545ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,225
2555ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,233
2565ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,241
2575ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,249
2585ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
2595ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL_aesni_decrypt6_enter:
2605ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%edx),%xmm1
2615ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,208
2625ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,216
2635ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	32(%edx),%edx
2645ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,224
2655ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,232
2665ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,240
2675ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,248
2685ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm0
2695ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jnz	L007dec6_loop
2705ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,209
2715ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,217
2725ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,225
2735ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,233
2745ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,241
2755ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,249
2765ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,223,208
2775ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,223,216
2785ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,223,224
2795ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,223,232
2805ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,223,240
2815ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,223,248
2825ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	ret
2835ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.globl	_aesni_ecb_encrypt
2845ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4
2855ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com_aesni_ecb_encrypt:
2865ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL_aesni_ecb_encrypt_begin:
2875ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pushl	%ebp
2885ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pushl	%ebx
2895ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pushl	%esi
2905ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pushl	%edi
2915ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	20(%esp),%esi
2925ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	24(%esp),%edi
2935ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	28(%esp),%eax
2945ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	32(%esp),%edx
2955ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	36(%esp),%ebx
2965ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	andl	$-16,%eax
2975ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jz	L008ecb_ret
2985ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	240(%edx),%ecx
2995ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	testl	%ebx,%ebx
3005ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jz	L009ecb_decrypt
3015ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%edx,%ebp
3025ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ecx,%ebx
3035ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	cmpl	$96,%eax
3045ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jb	L010ecb_enc_tail
3055ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	(%esi),%xmm2
3065ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	16(%esi),%xmm3
3075ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	32(%esi),%xmm4
3085ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	48(%esi),%xmm5
3095ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	64(%esi),%xmm6
3105ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	80(%esi),%xmm7
3115ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	96(%esi),%esi
3125ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	subl	$96,%eax
3135ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jmp	L011ecb_enc_loop6_enter
3145ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
3155ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL012ecb_enc_loop6:
3165ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm2,(%edi)
3175ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	(%esi),%xmm2
3185ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm3,16(%edi)
3195ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	16(%esi),%xmm3
3205ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm4,32(%edi)
3215ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	32(%esi),%xmm4
3225ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm5,48(%edi)
3235ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	48(%esi),%xmm5
3245ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm6,64(%edi)
3255ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	64(%esi),%xmm6
3265ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm7,80(%edi)
3275ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	96(%edi),%edi
3285ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	80(%esi),%xmm7
3295ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	96(%esi),%esi
3305ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL011ecb_enc_loop6_enter:
3315ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	__aesni_encrypt6
3325ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ebp,%edx
3335ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ebx,%ecx
3345ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	subl	$96,%eax
3355ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jnc	L012ecb_enc_loop6
3365ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm2,(%edi)
3375ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm3,16(%edi)
3385ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm4,32(%edi)
3395ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm5,48(%edi)
3405ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm6,64(%edi)
3415ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm7,80(%edi)
3425ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	96(%edi),%edi
3435ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	addl	$96,%eax
3445ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jz	L008ecb_ret
3455ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL010ecb_enc_tail:
3465ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%esi),%xmm2
3475ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	cmpl	$32,%eax
3485ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jb	L013ecb_enc_one
3495ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%esi),%xmm3
3505ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	je	L014ecb_enc_two
3515ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	32(%esi),%xmm4
3525ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	cmpl	$64,%eax
3535ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jb	L015ecb_enc_three
3545ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	48(%esi),%xmm5
3555ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	je	L016ecb_enc_four
3565ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	64(%esi),%xmm6
3575ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm7,%xmm7
3585ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	__aesni_encrypt6
3595ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm2,(%edi)
3605ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm3,16(%edi)
3615ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm4,32(%edi)
3625ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm5,48(%edi)
3635ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm6,64(%edi)
3645ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jmp	L008ecb_ret
3655ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
3665ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL013ecb_enc_one:
3675ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm0
3685ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%edx),%xmm1
3695ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	32(%edx),%edx
3705ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm0,%xmm2
3715ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL017enc1_loop_3:
3725ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,209
3735ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	decl	%ecx
3745ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm1
3755ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	16(%edx),%edx
3765ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jnz	L017enc1_loop_3
3775ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,221,209
3785ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm2,(%edi)
3795ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jmp	L008ecb_ret
3805ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
3815ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL014ecb_enc_two:
3825ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm4,%xmm4
3835ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	__aesni_encrypt3
3845ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm2,(%edi)
3855ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm3,16(%edi)
3865ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jmp	L008ecb_ret
3875ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
3885ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL015ecb_enc_three:
3895ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	__aesni_encrypt3
3905ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm2,(%edi)
3915ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm3,16(%edi)
3925ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm4,32(%edi)
3935ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jmp	L008ecb_ret
3945ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
3955ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL016ecb_enc_four:
3965ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	__aesni_encrypt4
3975ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm2,(%edi)
3985ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm3,16(%edi)
3995ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm4,32(%edi)
4005ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm5,48(%edi)
4015ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jmp	L008ecb_ret
4025ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
4035ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL009ecb_decrypt:
4045ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%edx,%ebp
4055ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ecx,%ebx
4065ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	cmpl	$96,%eax
4075ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jb	L018ecb_dec_tail
4085ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	(%esi),%xmm2
4095ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	16(%esi),%xmm3
4105ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	32(%esi),%xmm4
4115ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	48(%esi),%xmm5
4125ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	64(%esi),%xmm6
4135ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	80(%esi),%xmm7
4145ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	96(%esi),%esi
4155ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	subl	$96,%eax
4165ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jmp	L019ecb_dec_loop6_enter
4175ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
4185ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL020ecb_dec_loop6:
4195ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm2,(%edi)
4205ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	(%esi),%xmm2
4215ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm3,16(%edi)
4225ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	16(%esi),%xmm3
4235ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm4,32(%edi)
4245ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	32(%esi),%xmm4
4255ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm5,48(%edi)
4265ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	48(%esi),%xmm5
4275ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm6,64(%edi)
4285ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	64(%esi),%xmm6
4295ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm7,80(%edi)
4305ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	96(%edi),%edi
4315ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	80(%esi),%xmm7
4325ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	96(%esi),%esi
4335ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL019ecb_dec_loop6_enter:
4345ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	__aesni_decrypt6
4355ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ebp,%edx
4365ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ebx,%ecx
4375ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	subl	$96,%eax
4385ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jnc	L020ecb_dec_loop6
4395ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm2,(%edi)
4405ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm3,16(%edi)
4415ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm4,32(%edi)
4425ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm5,48(%edi)
4435ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm6,64(%edi)
4445ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm7,80(%edi)
4455ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	96(%edi),%edi
4465ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	addl	$96,%eax
4475ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jz	L008ecb_ret
4485ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL018ecb_dec_tail:
4495ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%esi),%xmm2
4505ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	cmpl	$32,%eax
4515ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jb	L021ecb_dec_one
4525ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%esi),%xmm3
4535ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	je	L022ecb_dec_two
4545ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	32(%esi),%xmm4
4555ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	cmpl	$64,%eax
4565ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jb	L023ecb_dec_three
4575ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	48(%esi),%xmm5
4585ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	je	L024ecb_dec_four
4595ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	64(%esi),%xmm6
4605ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm7,%xmm7
4615ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	__aesni_decrypt6
4625ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm2,(%edi)
4635ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm3,16(%edi)
4645ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm4,32(%edi)
4655ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm5,48(%edi)
4665ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm6,64(%edi)
4675ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jmp	L008ecb_ret
4685ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
4695ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL021ecb_dec_one:
4705ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm0
4715ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%edx),%xmm1
4725ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	32(%edx),%edx
4735ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm0,%xmm2
4745ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL025dec1_loop_4:
4755ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,209
4765ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	decl	%ecx
4775ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm1
4785ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	16(%edx),%edx
4795ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jnz	L025dec1_loop_4
4805ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,223,209
4815ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm2,(%edi)
4825ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jmp	L008ecb_ret
4835ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
4845ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL022ecb_dec_two:
4855ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm4,%xmm4
4865ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	__aesni_decrypt3
4875ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm2,(%edi)
4885ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm3,16(%edi)
4895ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jmp	L008ecb_ret
4905ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
4915ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL023ecb_dec_three:
4925ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	__aesni_decrypt3
4935ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm2,(%edi)
4945ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm3,16(%edi)
4955ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm4,32(%edi)
4965ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jmp	L008ecb_ret
4975ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
4985ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL024ecb_dec_four:
4995ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	__aesni_decrypt4
5005ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm2,(%edi)
5015ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm3,16(%edi)
5025ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm4,32(%edi)
5035ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm5,48(%edi)
5045ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL008ecb_ret:
5055ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	popl	%edi
5065ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	popl	%esi
5075ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	popl	%ebx
5085ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	popl	%ebp
5095ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	ret
5105ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.globl	_aesni_ccm64_encrypt_blocks
5115ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4
5125ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com_aesni_ccm64_encrypt_blocks:
5135ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL_aesni_ccm64_encrypt_blocks_begin:
5145ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pushl	%ebp
5155ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pushl	%ebx
5165ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pushl	%esi
5175ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pushl	%edi
5185ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	20(%esp),%esi
5195ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	24(%esp),%edi
5205ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	28(%esp),%eax
5215ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	32(%esp),%edx
5225ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	36(%esp),%ebx
5235ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	40(%esp),%ecx
5245ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%esp,%ebp
5255ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	subl	$60,%esp
5265ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	andl	$-16,%esp
5275ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ebp,48(%esp)
5285ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	(%ebx),%xmm7
5295ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	(%ecx),%xmm3
5305ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	240(%edx),%ecx
5315ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	$202182159,(%esp)
5325ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	$134810123,4(%esp)
5335ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	$67438087,8(%esp)
5345ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	$66051,12(%esp)
5355ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	$1,%ebx
5365ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorl	%ebp,%ebp
5375ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ebx,16(%esp)
5385ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ebp,20(%esp)
5395ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ebp,24(%esp)
5405ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ebp,28(%esp)
5415ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	shrl	$1,%ecx
5425ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	(%edx),%ebp
5435ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	(%esp),%xmm5
5445ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	%xmm7,%xmm2
5455ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ecx,%ebx
5465ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,0,253
5475ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL026ccm64_enc_outer:
5485ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%ebp),%xmm0
5495ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ebx,%ecx
5505ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%esi),%xmm6
5515ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm0,%xmm2
5525ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%ebp),%xmm1
5535ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm6,%xmm0
5545ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	32(%ebp),%edx
5555ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm0,%xmm3
5565ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm0
5575ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL027ccm64_enc2_loop:
5585ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,209
5595ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	decl	%ecx
5605ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,217
5615ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%edx),%xmm1
5625ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,208
5635ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	32(%edx),%edx
5645ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,216
5655ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm0
5665ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jnz	L027ccm64_enc2_loop
5675ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,209
5685ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,217
5695ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	paddq	16(%esp),%xmm7
5705ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,221,208
5715ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,221,216
5725ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	decl	%eax
5735ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	16(%esi),%esi
5745ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm2,%xmm6
5755ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	%xmm7,%xmm2
5765ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm6,(%edi)
5775ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	16(%edi),%edi
5785ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,0,213
5795ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jnz	L026ccm64_enc_outer
5805ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	48(%esp),%esp
5815ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	40(%esp),%edi
5825ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm3,(%edi)
5835ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	popl	%edi
5845ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	popl	%esi
5855ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	popl	%ebx
5865ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	popl	%ebp
5875ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	ret
5885ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.globl	_aesni_ccm64_decrypt_blocks
5895ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4
5905ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com_aesni_ccm64_decrypt_blocks:
5915ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL_aesni_ccm64_decrypt_blocks_begin:
5925ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pushl	%ebp
5935ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pushl	%ebx
5945ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pushl	%esi
5955ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pushl	%edi
5965ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	20(%esp),%esi
5975ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	24(%esp),%edi
5985ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	28(%esp),%eax
5995ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	32(%esp),%edx
6005ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	36(%esp),%ebx
6015ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	40(%esp),%ecx
6025ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%esp,%ebp
6035ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	subl	$60,%esp
6045ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	andl	$-16,%esp
6055ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ebp,48(%esp)
6065ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	(%ebx),%xmm7
6075ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	(%ecx),%xmm3
6085ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	240(%edx),%ecx
6095ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	$202182159,(%esp)
6105ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	$134810123,4(%esp)
6115ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	$67438087,8(%esp)
6125ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	$66051,12(%esp)
6135ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	$1,%ebx
6145ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorl	%ebp,%ebp
6155ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ebx,16(%esp)
6165ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ebp,20(%esp)
6175ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ebp,24(%esp)
6185ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ebp,28(%esp)
6195ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	(%esp),%xmm5
6205ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	%xmm7,%xmm2
6215ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%edx,%ebp
6225ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ecx,%ebx
6235ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,0,253
6245ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm0
6255ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%edx),%xmm1
6265ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	32(%edx),%edx
6275ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm0,%xmm2
6285ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL028enc1_loop_5:
6295ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,209
6305ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	decl	%ecx
6315ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm1
6325ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	16(%edx),%edx
6335ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jnz	L028enc1_loop_5
6345ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,221,209
6355ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%esi),%xmm6
6365ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	paddq	16(%esp),%xmm7
6375ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	16(%esi),%esi
6385ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jmp	L029ccm64_dec_outer
6395ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
6405ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL029ccm64_dec_outer:
6415ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm2,%xmm6
6425ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	%xmm7,%xmm2
6435ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ebx,%ecx
6445ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm6,(%edi)
6455ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	16(%edi),%edi
6465ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,0,213
6475ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	subl	$1,%eax
6485ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jz	L030ccm64_dec_break
6495ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%ebp),%xmm0
6505ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	shrl	$1,%ecx
6515ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%ebp),%xmm1
6525ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm0,%xmm6
6535ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	32(%ebp),%edx
6545ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm0,%xmm2
6555ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm6,%xmm3
6565ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm0
6575ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL031ccm64_dec2_loop:
6585ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,209
6595ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	decl	%ecx
6605ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,217
6615ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%edx),%xmm1
6625ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,208
6635ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	32(%edx),%edx
6645ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,216
6655ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm0
6665ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jnz	L031ccm64_dec2_loop
6675ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%esi),%xmm6
6685ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	paddq	16(%esp),%xmm7
6695ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,209
6705ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,217
6715ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	16(%esi),%esi
6725ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,221,208
6735ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,221,216
6745ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jmp	L029ccm64_dec_outer
6755ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
6765ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL030ccm64_dec_break:
6775ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ebp,%edx
6785ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm0
6795ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%edx),%xmm1
6805ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm0,%xmm6
6815ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	32(%edx),%edx
6825ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm6,%xmm3
6835ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL032enc1_loop_6:
6845ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,217
6855ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	decl	%ecx
6865ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm1
6875ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	16(%edx),%edx
6885ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jnz	L032enc1_loop_6
6895ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,221,217
6905ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	48(%esp),%esp
6915ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	40(%esp),%edi
6925ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm3,(%edi)
6935ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	popl	%edi
6945ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	popl	%esi
6955ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	popl	%ebx
6965ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	popl	%ebp
6975ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	ret
6985ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.globl	_aesni_ctr32_encrypt_blocks
6995ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4
7005ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com_aesni_ctr32_encrypt_blocks:
7015ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL_aesni_ctr32_encrypt_blocks_begin:
7025ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pushl	%ebp
7035ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pushl	%ebx
7045ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pushl	%esi
7055ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pushl	%edi
7065ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	20(%esp),%esi
7075ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	24(%esp),%edi
7085ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	28(%esp),%eax
7095ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	32(%esp),%edx
7105ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	36(%esp),%ebx
7115ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%esp,%ebp
7125ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	subl	$88,%esp
7135ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	andl	$-16,%esp
7145ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ebp,80(%esp)
7155ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	cmpl	$1,%eax
7165ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	je	L033ctr32_one_shortcut
7175ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	(%ebx),%xmm7
7185ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	$202182159,(%esp)
7195ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	$134810123,4(%esp)
7205ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	$67438087,8(%esp)
7215ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	$66051,12(%esp)
7225ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	$6,%ecx
7235ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorl	%ebp,%ebp
7245ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ecx,16(%esp)
7255ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ecx,20(%esp)
7265ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ecx,24(%esp)
7275ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ebp,28(%esp)
7285ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,58,22,251,3
7295ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,58,34,253,3
7305ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	240(%edx),%ecx
7315ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	bswap	%ebx
7325ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm1,%xmm1
7335ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm0
7345ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	(%esp),%xmm2
7355ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,58,34,203,0
7365ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	3(%ebx),%ebp
7375ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,58,34,197,0
7385ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	incl	%ebx
7395ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,58,34,203,1
7405ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	incl	%ebp
7415ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,58,34,197,1
7425ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	incl	%ebx
7435ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,58,34,203,2
7445ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	incl	%ebp
7455ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,58,34,197,2
7465ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	%xmm1,48(%esp)
7475ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,0,202
7485ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	%xmm0,64(%esp)
7495ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,0,194
7505ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pshufd	$192,%xmm1,%xmm2
7515ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pshufd	$128,%xmm1,%xmm3
7525ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	cmpl	$6,%eax
7535ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jb	L034ctr32_tail
7545ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	%xmm7,32(%esp)
7555ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	shrl	$1,%ecx
7565ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%edx,%ebp
7575ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ecx,%ebx
7585ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	subl	$6,%eax
7595ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jmp	L035ctr32_loop6
7605ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
7615ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL035ctr32_loop6:
7625ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pshufd	$64,%xmm1,%xmm4
7635ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	32(%esp),%xmm1
7645ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pshufd	$192,%xmm0,%xmm5
7655ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	por	%xmm1,%xmm2
7665ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pshufd	$128,%xmm0,%xmm6
7675ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	por	%xmm1,%xmm3
7685ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pshufd	$64,%xmm0,%xmm7
7695ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	por	%xmm1,%xmm4
7705ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	por	%xmm1,%xmm5
7715ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	por	%xmm1,%xmm6
7725ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	por	%xmm1,%xmm7
7735ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%ebp),%xmm0
7745ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%ebp),%xmm1
7755ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	32(%ebp),%edx
7765ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	decl	%ecx
7775ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm2
7785ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm3
7795ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,209
7805ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm4
7815ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,217
7825ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm5
7835ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,225
7845ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm6
7855ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,233
7865ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm7
7875ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,241
7885ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm0
7895ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,249
7905ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	L_aesni_encrypt6_enter
7915ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%esi),%xmm1
7925ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%esi),%xmm0
7935ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm1,%xmm2
7945ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	32(%esi),%xmm1
7955ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm0,%xmm3
7965ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm2,(%edi)
7975ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	16(%esp),%xmm0
7985ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm1,%xmm4
7995ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	48(%esp),%xmm1
8005ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm3,16(%edi)
8015ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm4,32(%edi)
8025ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	paddd	%xmm0,%xmm1
8035ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	paddd	64(%esp),%xmm0
8045ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	(%esp),%xmm2
8055ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	48(%esi),%xmm3
8065ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	64(%esi),%xmm4
8075ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm3,%xmm5
8085ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	80(%esi),%xmm3
8095ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	96(%esi),%esi
8105ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	%xmm1,48(%esp)
8115ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,0,202
8125ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm4,%xmm6
8135ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm5,48(%edi)
8145ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm3,%xmm7
8155ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	%xmm0,64(%esp)
8165ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,0,194
8175ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm6,64(%edi)
8185ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pshufd	$192,%xmm1,%xmm2
8195ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm7,80(%edi)
8205ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	96(%edi),%edi
8215ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ebx,%ecx
8225ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pshufd	$128,%xmm1,%xmm3
8235ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	subl	$6,%eax
8245ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jnc	L035ctr32_loop6
8255ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	addl	$6,%eax
8265ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jz	L036ctr32_ret
8275ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ebp,%edx
8285ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	1(,%ecx,2),%ecx
8295ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	32(%esp),%xmm7
8305ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL034ctr32_tail:
8315ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	por	%xmm7,%xmm2
8325ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	cmpl	$2,%eax
8335ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jb	L037ctr32_one
8345ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pshufd	$64,%xmm1,%xmm4
8355ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	por	%xmm7,%xmm3
8365ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	je	L038ctr32_two
8375ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pshufd	$192,%xmm0,%xmm5
8385ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	por	%xmm7,%xmm4
8395ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	cmpl	$4,%eax
8405ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jb	L039ctr32_three
8415ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pshufd	$128,%xmm0,%xmm6
8425ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	por	%xmm7,%xmm5
8435ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	je	L040ctr32_four
8445ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	por	%xmm7,%xmm6
8455ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	__aesni_encrypt6
8465ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%esi),%xmm1
8475ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%esi),%xmm0
8485ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm1,%xmm2
8495ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	32(%esi),%xmm1
8505ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm0,%xmm3
8515ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	48(%esi),%xmm0
8525ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm1,%xmm4
8535ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	64(%esi),%xmm1
8545ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm0,%xmm5
8555ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm2,(%edi)
8565ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm1,%xmm6
8575ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm3,16(%edi)
8585ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm4,32(%edi)
8595ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm5,48(%edi)
8605ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm6,64(%edi)
8615ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jmp	L036ctr32_ret
8625ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
8635ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL033ctr32_one_shortcut:
8645ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%ebx),%xmm2
8655ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	240(%edx),%ecx
8665ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL037ctr32_one:
8675ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm0
8685ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%edx),%xmm1
8695ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	32(%edx),%edx
8705ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm0,%xmm2
8715ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL041enc1_loop_7:
8725ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,209
8735ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	decl	%ecx
8745ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm1
8755ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	16(%edx),%edx
8765ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jnz	L041enc1_loop_7
8775ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,221,209
8785ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%esi),%xmm6
8795ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm2,%xmm6
8805ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm6,(%edi)
8815ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jmp	L036ctr32_ret
8825ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
8835ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL038ctr32_two:
8845ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	__aesni_encrypt3
8855ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%esi),%xmm5
8865ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%esi),%xmm6
8875ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm5,%xmm2
8885ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm6,%xmm3
8895ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm2,(%edi)
8905ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm3,16(%edi)
8915ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jmp	L036ctr32_ret
8925ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
8935ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL039ctr32_three:
8945ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	__aesni_encrypt3
8955ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%esi),%xmm5
8965ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%esi),%xmm6
8975ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm5,%xmm2
8985ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	32(%esi),%xmm7
8995ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm6,%xmm3
9005ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm2,(%edi)
9015ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm7,%xmm4
9025ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm3,16(%edi)
9035ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm4,32(%edi)
9045ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jmp	L036ctr32_ret
9055ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
9065ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL040ctr32_four:
9075ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	__aesni_encrypt4
9085ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%esi),%xmm6
9095ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%esi),%xmm7
9105ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	32(%esi),%xmm1
9115ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm6,%xmm2
9125ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	48(%esi),%xmm0
9135ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm7,%xmm3
9145ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm2,(%edi)
9155ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm1,%xmm4
9165ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm3,16(%edi)
9175ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm0,%xmm5
9185ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm4,32(%edi)
9195ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm5,48(%edi)
9205ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL036ctr32_ret:
9215ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	80(%esp),%esp
9225ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	popl	%edi
9235ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	popl	%esi
9245ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	popl	%ebx
9255ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	popl	%ebp
9265ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	ret
9275ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.globl	_aesni_xts_encrypt
9285ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4
9295ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com_aesni_xts_encrypt:
9305ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL_aesni_xts_encrypt_begin:
9315ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pushl	%ebp
9325ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pushl	%ebx
9335ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pushl	%esi
9345ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pushl	%edi
9355ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	36(%esp),%edx
9365ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	40(%esp),%esi
9375ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	240(%edx),%ecx
9385ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%esi),%xmm2
9395ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm0
9405ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%edx),%xmm1
9415ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	32(%edx),%edx
9425ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm0,%xmm2
9435ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL042enc1_loop_8:
9445ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,209
9455ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	decl	%ecx
9465ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm1
9475ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	16(%edx),%edx
9485ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jnz	L042enc1_loop_8
9495ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,221,209
9505ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	20(%esp),%esi
9515ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	24(%esp),%edi
9525ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	28(%esp),%eax
9535ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	32(%esp),%edx
9545ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%esp,%ebp
9555ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	subl	$120,%esp
9565ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	240(%edx),%ecx
9575ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	andl	$-16,%esp
9585ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	$135,96(%esp)
9595ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	$0,100(%esp)
9605ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	$1,104(%esp)
9615ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	$0,108(%esp)
9625ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%eax,112(%esp)
9635ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ebp,116(%esp)
9645ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	%xmm2,%xmm1
9655ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm0
9665ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	96(%esp),%xmm3
9675ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pcmpgtd	%xmm1,%xmm0
9685ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	andl	$-16,%eax
9695ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%edx,%ebp
9705ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ecx,%ebx
9715ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	subl	$96,%eax
9725ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jc	L043xts_enc_short
9735ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	shrl	$1,%ecx
9745ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ecx,%ebx
9755ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jmp	L044xts_enc_loop6
9765ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
9775ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL044xts_enc_loop6:
9785ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pshufd	$19,%xmm0,%xmm2
9795ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm0
9805ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	%xmm1,(%esp)
9815ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	paddq	%xmm1,%xmm1
9825ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pand	%xmm3,%xmm2
9835ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pcmpgtd	%xmm1,%xmm0
9845ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm2,%xmm1
9855ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pshufd	$19,%xmm0,%xmm2
9865ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm0
9875ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	%xmm1,16(%esp)
9885ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	paddq	%xmm1,%xmm1
9895ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pand	%xmm3,%xmm2
9905ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pcmpgtd	%xmm1,%xmm0
9915ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm2,%xmm1
9925ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pshufd	$19,%xmm0,%xmm2
9935ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm0
9945ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	%xmm1,32(%esp)
9955ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	paddq	%xmm1,%xmm1
9965ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pand	%xmm3,%xmm2
9975ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pcmpgtd	%xmm1,%xmm0
9985ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm2,%xmm1
9995ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pshufd	$19,%xmm0,%xmm2
10005ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm0
10015ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	%xmm1,48(%esp)
10025ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	paddq	%xmm1,%xmm1
10035ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pand	%xmm3,%xmm2
10045ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pcmpgtd	%xmm1,%xmm0
10055ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm2,%xmm1
10065ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pshufd	$19,%xmm0,%xmm7
10075ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	%xmm1,64(%esp)
10085ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	paddq	%xmm1,%xmm1
10095ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%ebp),%xmm0
10105ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pand	%xmm3,%xmm7
10115ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%esi),%xmm2
10125ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm1,%xmm7
10135ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	16(%esi),%xmm3
10145ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm0,%xmm2
10155ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	32(%esi),%xmm4
10165ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm3
10175ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	48(%esi),%xmm5
10185ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm4
10195ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	64(%esi),%xmm6
10205ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm5
10215ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	80(%esi),%xmm1
10225ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm6
10235ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	96(%esi),%esi
10245ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	(%esp),%xmm2
10255ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	%xmm7,80(%esp)
10265ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm1,%xmm7
10275ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%ebp),%xmm1
10285ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	32(%ebp),%edx
10295ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	16(%esp),%xmm3
10305ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,209
10315ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	32(%esp),%xmm4
10325ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,217
10335ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	48(%esp),%xmm5
10345ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	decl	%ecx
10355ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,225
10365ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	64(%esp),%xmm6
10375ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,233
10385ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm7
10395ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,241
10405ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm0
10415ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,249
10425ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	L_aesni_encrypt6_enter
10435ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	80(%esp),%xmm1
10445ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm0
10455ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	(%esp),%xmm2
10465ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pcmpgtd	%xmm1,%xmm0
10475ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	16(%esp),%xmm3
10485ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm2,(%edi)
10495ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	32(%esp),%xmm4
10505ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm3,16(%edi)
10515ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	48(%esp),%xmm5
10525ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm4,32(%edi)
10535ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	64(%esp),%xmm6
10545ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm5,48(%edi)
10555ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm1,%xmm7
10565ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm6,64(%edi)
10575ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pshufd	$19,%xmm0,%xmm2
10585ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm7,80(%edi)
10595ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	96(%edi),%edi
10605ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	96(%esp),%xmm3
10615ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm0
10625ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	paddq	%xmm1,%xmm1
10635ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pand	%xmm3,%xmm2
10645ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pcmpgtd	%xmm1,%xmm0
10655ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ebx,%ecx
10665ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm2,%xmm1
10675ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	subl	$96,%eax
10685ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jnc	L044xts_enc_loop6
10695ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	1(,%ecx,2),%ecx
10705ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ebp,%edx
10715ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ecx,%ebx
10725ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL043xts_enc_short:
10735ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	addl	$96,%eax
10745ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jz	L045xts_enc_done6x
10755ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	%xmm1,%xmm5
10765ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	cmpl	$32,%eax
10775ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jb	L046xts_enc_one
10785ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pshufd	$19,%xmm0,%xmm2
10795ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm0
10805ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	paddq	%xmm1,%xmm1
10815ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pand	%xmm3,%xmm2
10825ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pcmpgtd	%xmm1,%xmm0
10835ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm2,%xmm1
10845ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	je	L047xts_enc_two
10855ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pshufd	$19,%xmm0,%xmm2
10865ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm0
10875ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	%xmm1,%xmm6
10885ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	paddq	%xmm1,%xmm1
10895ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pand	%xmm3,%xmm2
10905ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pcmpgtd	%xmm1,%xmm0
10915ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm2,%xmm1
10925ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	cmpl	$64,%eax
10935ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jb	L048xts_enc_three
10945ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pshufd	$19,%xmm0,%xmm2
10955ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm0
10965ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	%xmm1,%xmm7
10975ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	paddq	%xmm1,%xmm1
10985ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pand	%xmm3,%xmm2
10995ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pcmpgtd	%xmm1,%xmm0
11005ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm2,%xmm1
11015ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	%xmm5,(%esp)
11025ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	%xmm6,16(%esp)
11035ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	je	L049xts_enc_four
11045ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	%xmm7,32(%esp)
11055ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pshufd	$19,%xmm0,%xmm7
11065ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	%xmm1,48(%esp)
11075ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	paddq	%xmm1,%xmm1
11085ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pand	%xmm3,%xmm7
11095ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm1,%xmm7
11105ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	(%esi),%xmm2
11115ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	16(%esi),%xmm3
11125ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	32(%esi),%xmm4
11135ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	(%esp),%xmm2
11145ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	48(%esi),%xmm5
11155ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	16(%esp),%xmm3
11165ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	64(%esi),%xmm6
11175ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	32(%esp),%xmm4
11185ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	80(%esi),%esi
11195ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	48(%esp),%xmm5
11205ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	%xmm7,64(%esp)
11215ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm7,%xmm6
11225ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	__aesni_encrypt6
11235ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movaps	64(%esp),%xmm1
11245ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	(%esp),%xmm2
11255ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	16(%esp),%xmm3
11265ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	32(%esp),%xmm4
11275ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm2,(%edi)
11285ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	48(%esp),%xmm5
11295ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm3,16(%edi)
11305ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm1,%xmm6
11315ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm4,32(%edi)
11325ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm5,48(%edi)
11335ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm6,64(%edi)
11345ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	80(%edi),%edi
11355ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jmp	L050xts_enc_done
11365ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
11375ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL046xts_enc_one:
11385ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%esi),%xmm2
11395ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	16(%esi),%esi
11405ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm5,%xmm2
11415ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm0
11425ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%edx),%xmm1
11435ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	32(%edx),%edx
11445ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm0,%xmm2
11455ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL051enc1_loop_9:
11465ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,209
11475ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	decl	%ecx
11485ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm1
11495ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	16(%edx),%edx
11505ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jnz	L051enc1_loop_9
11515ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,221,209
11525ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm5,%xmm2
11535ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm2,(%edi)
11545ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	16(%edi),%edi
11555ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	%xmm5,%xmm1
11565ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jmp	L050xts_enc_done
11575ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
11585ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL047xts_enc_two:
11595ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movaps	%xmm1,%xmm6
11605ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%esi),%xmm2
11615ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%esi),%xmm3
11625ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	32(%esi),%esi
11635ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm5,%xmm2
11645ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm6,%xmm3
11655ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm4,%xmm4
11665ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	__aesni_encrypt3
11675ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm5,%xmm2
11685ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm6,%xmm3
11695ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm2,(%edi)
11705ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm3,16(%edi)
11715ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	32(%edi),%edi
11725ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	%xmm6,%xmm1
11735ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jmp	L050xts_enc_done
11745ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
11755ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL048xts_enc_three:
11765ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movaps	%xmm1,%xmm7
11775ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%esi),%xmm2
11785ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%esi),%xmm3
11795ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	32(%esi),%xmm4
11805ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	48(%esi),%esi
11815ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm5,%xmm2
11825ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm6,%xmm3
11835ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm7,%xmm4
11845ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	__aesni_encrypt3
11855ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm5,%xmm2
11865ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm6,%xmm3
11875ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm7,%xmm4
11885ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm2,(%edi)
11895ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm3,16(%edi)
11905ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm4,32(%edi)
11915ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	48(%edi),%edi
11925ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	%xmm7,%xmm1
11935ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jmp	L050xts_enc_done
11945ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
11955ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL049xts_enc_four:
11965ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movaps	%xmm1,%xmm6
11975ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%esi),%xmm2
11985ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%esi),%xmm3
11995ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	32(%esi),%xmm4
12005ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	(%esp),%xmm2
12015ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	48(%esi),%xmm5
12025ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	64(%esi),%esi
12035ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	16(%esp),%xmm3
12045ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm7,%xmm4
12055ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm6,%xmm5
12065ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	__aesni_encrypt4
12075ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	(%esp),%xmm2
12085ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	16(%esp),%xmm3
12095ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm7,%xmm4
12105ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm2,(%edi)
12115ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm6,%xmm5
12125ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm3,16(%edi)
12135ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm4,32(%edi)
12145ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm5,48(%edi)
12155ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	64(%edi),%edi
12165ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	%xmm6,%xmm1
12175ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jmp	L050xts_enc_done
12185ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
12195ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL045xts_enc_done6x:
12205ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	112(%esp),%eax
12215ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	andl	$15,%eax
12225ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jz	L052xts_enc_ret
12235ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	%xmm1,%xmm5
12245ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%eax,112(%esp)
12255ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jmp	L053xts_enc_steal
12265ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
12275ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL050xts_enc_done:
12285ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	112(%esp),%eax
12295ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm0
12305ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	andl	$15,%eax
12315ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jz	L052xts_enc_ret
12325ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pcmpgtd	%xmm1,%xmm0
12335ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%eax,112(%esp)
12345ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pshufd	$19,%xmm0,%xmm5
12355ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	paddq	%xmm1,%xmm1
12365ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pand	96(%esp),%xmm5
12375ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm1,%xmm5
12385ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL053xts_enc_steal:
12395ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movzbl	(%esi),%ecx
12405ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movzbl	-16(%edi),%edx
12415ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	1(%esi),%esi
12425ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movb	%cl,-16(%edi)
12435ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movb	%dl,(%edi)
12445ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	1(%edi),%edi
12455ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	subl	$1,%eax
12465ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jnz	L053xts_enc_steal
12475ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	subl	112(%esp),%edi
12485ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ebp,%edx
12495ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ebx,%ecx
12505ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	-16(%edi),%xmm2
12515ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm5,%xmm2
12525ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm0
12535ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%edx),%xmm1
12545ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	32(%edx),%edx
12555ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm0,%xmm2
12565ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL054enc1_loop_10:
12575ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,209
12585ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	decl	%ecx
12595ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm1
12605ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	16(%edx),%edx
12615ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jnz	L054enc1_loop_10
12625ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,221,209
12635ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm5,%xmm2
12645ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm2,-16(%edi)
12655ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL052xts_enc_ret:
12665ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	116(%esp),%esp
12675ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	popl	%edi
12685ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	popl	%esi
12695ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	popl	%ebx
12705ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	popl	%ebp
12715ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	ret
12725ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.globl	_aesni_xts_decrypt
12735ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4
12745ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com_aesni_xts_decrypt:
12755ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL_aesni_xts_decrypt_begin:
12765ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pushl	%ebp
12775ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pushl	%ebx
12785ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pushl	%esi
12795ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pushl	%edi
12805ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	36(%esp),%edx
12815ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	40(%esp),%esi
12825ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	240(%edx),%ecx
12835ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%esi),%xmm2
12845ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm0
12855ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%edx),%xmm1
12865ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	32(%edx),%edx
12875ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm0,%xmm2
12885ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL055enc1_loop_11:
12895ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,209
12905ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	decl	%ecx
12915ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm1
12925ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	16(%edx),%edx
12935ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jnz	L055enc1_loop_11
12945ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,221,209
12955ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	20(%esp),%esi
12965ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	24(%esp),%edi
12975ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	28(%esp),%eax
12985ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	32(%esp),%edx
12995ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%esp,%ebp
13005ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	subl	$120,%esp
13015ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	andl	$-16,%esp
13025ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorl	%ebx,%ebx
13035ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	testl	$15,%eax
13045ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	setnz	%bl
13055ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	shll	$4,%ebx
13065ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	subl	%ebx,%eax
13075ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	$135,96(%esp)
13085ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	$0,100(%esp)
13095ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	$1,104(%esp)
13105ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	$0,108(%esp)
13115ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%eax,112(%esp)
13125ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ebp,116(%esp)
13135ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	240(%edx),%ecx
13145ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%edx,%ebp
13155ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ecx,%ebx
13165ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	%xmm2,%xmm1
13175ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm0
13185ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	96(%esp),%xmm3
13195ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pcmpgtd	%xmm1,%xmm0
13205ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	andl	$-16,%eax
13215ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	subl	$96,%eax
13225ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jc	L056xts_dec_short
13235ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	shrl	$1,%ecx
13245ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ecx,%ebx
13255ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jmp	L057xts_dec_loop6
13265ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
13275ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL057xts_dec_loop6:
13285ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pshufd	$19,%xmm0,%xmm2
13295ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm0
13305ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	%xmm1,(%esp)
13315ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	paddq	%xmm1,%xmm1
13325ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pand	%xmm3,%xmm2
13335ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pcmpgtd	%xmm1,%xmm0
13345ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm2,%xmm1
13355ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pshufd	$19,%xmm0,%xmm2
13365ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm0
13375ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	%xmm1,16(%esp)
13385ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	paddq	%xmm1,%xmm1
13395ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pand	%xmm3,%xmm2
13405ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pcmpgtd	%xmm1,%xmm0
13415ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm2,%xmm1
13425ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pshufd	$19,%xmm0,%xmm2
13435ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm0
13445ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	%xmm1,32(%esp)
13455ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	paddq	%xmm1,%xmm1
13465ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pand	%xmm3,%xmm2
13475ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pcmpgtd	%xmm1,%xmm0
13485ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm2,%xmm1
13495ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pshufd	$19,%xmm0,%xmm2
13505ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm0
13515ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	%xmm1,48(%esp)
13525ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	paddq	%xmm1,%xmm1
13535ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pand	%xmm3,%xmm2
13545ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pcmpgtd	%xmm1,%xmm0
13555ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm2,%xmm1
13565ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pshufd	$19,%xmm0,%xmm7
13575ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	%xmm1,64(%esp)
13585ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	paddq	%xmm1,%xmm1
13595ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%ebp),%xmm0
13605ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pand	%xmm3,%xmm7
13615ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%esi),%xmm2
13625ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm1,%xmm7
13635ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	16(%esi),%xmm3
13645ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm0,%xmm2
13655ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	32(%esi),%xmm4
13665ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm3
13675ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	48(%esi),%xmm5
13685ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm4
13695ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	64(%esi),%xmm6
13705ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm5
13715ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	80(%esi),%xmm1
13725ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm6
13735ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	96(%esi),%esi
13745ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	(%esp),%xmm2
13755ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	%xmm7,80(%esp)
13765ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm1,%xmm7
13775ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%ebp),%xmm1
13785ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	32(%ebp),%edx
13795ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	16(%esp),%xmm3
13805ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,209
13815ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	32(%esp),%xmm4
13825ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,217
13835ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	48(%esp),%xmm5
13845ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	decl	%ecx
13855ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,225
13865ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	64(%esp),%xmm6
13875ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,233
13885ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm7
13895ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,241
13905ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm0
13915ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,249
13925ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	L_aesni_decrypt6_enter
13935ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	80(%esp),%xmm1
13945ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm0
13955ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	(%esp),%xmm2
13965ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pcmpgtd	%xmm1,%xmm0
13975ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	16(%esp),%xmm3
13985ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm2,(%edi)
13995ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	32(%esp),%xmm4
14005ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm3,16(%edi)
14015ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	48(%esp),%xmm5
14025ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm4,32(%edi)
14035ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	64(%esp),%xmm6
14045ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm5,48(%edi)
14055ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm1,%xmm7
14065ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm6,64(%edi)
14075ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pshufd	$19,%xmm0,%xmm2
14085ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm7,80(%edi)
14095ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	96(%edi),%edi
14105ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	96(%esp),%xmm3
14115ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm0
14125ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	paddq	%xmm1,%xmm1
14135ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pand	%xmm3,%xmm2
14145ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pcmpgtd	%xmm1,%xmm0
14155ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ebx,%ecx
14165ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm2,%xmm1
14175ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	subl	$96,%eax
14185ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jnc	L057xts_dec_loop6
14195ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	1(,%ecx,2),%ecx
14205ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ebp,%edx
14215ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ecx,%ebx
14225ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL056xts_dec_short:
14235ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	addl	$96,%eax
14245ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jz	L058xts_dec_done6x
14255ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	%xmm1,%xmm5
14265ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	cmpl	$32,%eax
14275ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jb	L059xts_dec_one
14285ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pshufd	$19,%xmm0,%xmm2
14295ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm0
14305ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	paddq	%xmm1,%xmm1
14315ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pand	%xmm3,%xmm2
14325ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pcmpgtd	%xmm1,%xmm0
14335ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm2,%xmm1
14345ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	je	L060xts_dec_two
14355ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pshufd	$19,%xmm0,%xmm2
14365ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm0
14375ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	%xmm1,%xmm6
14385ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	paddq	%xmm1,%xmm1
14395ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pand	%xmm3,%xmm2
14405ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pcmpgtd	%xmm1,%xmm0
14415ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm2,%xmm1
14425ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	cmpl	$64,%eax
14435ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jb	L061xts_dec_three
14445ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pshufd	$19,%xmm0,%xmm2
14455ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm0
14465ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	%xmm1,%xmm7
14475ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	paddq	%xmm1,%xmm1
14485ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pand	%xmm3,%xmm2
14495ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pcmpgtd	%xmm1,%xmm0
14505ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm2,%xmm1
14515ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	%xmm5,(%esp)
14525ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	%xmm6,16(%esp)
14535ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	je	L062xts_dec_four
14545ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	%xmm7,32(%esp)
14555ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pshufd	$19,%xmm0,%xmm7
14565ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	%xmm1,48(%esp)
14575ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	paddq	%xmm1,%xmm1
14585ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pand	%xmm3,%xmm7
14595ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm1,%xmm7
14605ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	(%esi),%xmm2
14615ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	16(%esi),%xmm3
14625ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	32(%esi),%xmm4
14635ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	(%esp),%xmm2
14645ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	48(%esi),%xmm5
14655ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	16(%esp),%xmm3
14665ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	64(%esi),%xmm6
14675ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	32(%esp),%xmm4
14685ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	80(%esi),%esi
14695ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	48(%esp),%xmm5
14705ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	%xmm7,64(%esp)
14715ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm7,%xmm6
14725ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	__aesni_decrypt6
14735ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movaps	64(%esp),%xmm1
14745ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	(%esp),%xmm2
14755ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	16(%esp),%xmm3
14765ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	32(%esp),%xmm4
14775ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm2,(%edi)
14785ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	48(%esp),%xmm5
14795ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm3,16(%edi)
14805ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm1,%xmm6
14815ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm4,32(%edi)
14825ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm5,48(%edi)
14835ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm6,64(%edi)
14845ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	80(%edi),%edi
14855ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jmp	L063xts_dec_done
14865ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
14875ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL059xts_dec_one:
14885ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%esi),%xmm2
14895ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	16(%esi),%esi
14905ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm5,%xmm2
14915ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm0
14925ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%edx),%xmm1
14935ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	32(%edx),%edx
14945ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm0,%xmm2
14955ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL064dec1_loop_12:
14965ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,209
14975ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	decl	%ecx
14985ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm1
14995ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	16(%edx),%edx
15005ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jnz	L064dec1_loop_12
15015ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,223,209
15025ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm5,%xmm2
15035ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm2,(%edi)
15045ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	16(%edi),%edi
15055ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	%xmm5,%xmm1
15065ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jmp	L063xts_dec_done
15075ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
15085ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL060xts_dec_two:
15095ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movaps	%xmm1,%xmm6
15105ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%esi),%xmm2
15115ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%esi),%xmm3
15125ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	32(%esi),%esi
15135ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm5,%xmm2
15145ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm6,%xmm3
15155ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	__aesni_decrypt3
15165ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm5,%xmm2
15175ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm6,%xmm3
15185ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm2,(%edi)
15195ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm3,16(%edi)
15205ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	32(%edi),%edi
15215ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	%xmm6,%xmm1
15225ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jmp	L063xts_dec_done
15235ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
15245ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL061xts_dec_three:
15255ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movaps	%xmm1,%xmm7
15265ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%esi),%xmm2
15275ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%esi),%xmm3
15285ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	32(%esi),%xmm4
15295ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	48(%esi),%esi
15305ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm5,%xmm2
15315ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm6,%xmm3
15325ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm7,%xmm4
15335ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	__aesni_decrypt3
15345ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm5,%xmm2
15355ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm6,%xmm3
15365ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm7,%xmm4
15375ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm2,(%edi)
15385ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm3,16(%edi)
15395ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm4,32(%edi)
15405ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	48(%edi),%edi
15415ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	%xmm7,%xmm1
15425ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jmp	L063xts_dec_done
15435ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
15445ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL062xts_dec_four:
15455ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movaps	%xmm1,%xmm6
15465ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%esi),%xmm2
15475ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%esi),%xmm3
15485ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	32(%esi),%xmm4
15495ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	(%esp),%xmm2
15505ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	48(%esi),%xmm5
15515ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	64(%esi),%esi
15525ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	16(%esp),%xmm3
15535ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm7,%xmm4
15545ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm6,%xmm5
15555ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	__aesni_decrypt4
15565ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	(%esp),%xmm2
15575ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	16(%esp),%xmm3
15585ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm7,%xmm4
15595ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm2,(%edi)
15605ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm6,%xmm5
15615ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm3,16(%edi)
15625ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm4,32(%edi)
15635ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm5,48(%edi)
15645ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	64(%edi),%edi
15655ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	%xmm6,%xmm1
15665ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jmp	L063xts_dec_done
15675ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
15685ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL058xts_dec_done6x:
15695ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	112(%esp),%eax
15705ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	andl	$15,%eax
15715ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jz	L065xts_dec_ret
15725ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%eax,112(%esp)
15735ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jmp	L066xts_dec_only_one_more
15745ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
15755ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL063xts_dec_done:
15765ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	112(%esp),%eax
15775ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm0
15785ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	andl	$15,%eax
15795ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jz	L065xts_dec_ret
15805ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pcmpgtd	%xmm1,%xmm0
15815ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%eax,112(%esp)
15825ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pshufd	$19,%xmm0,%xmm2
15835ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm0,%xmm0
15845ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	96(%esp),%xmm3
15855ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	paddq	%xmm1,%xmm1
15865ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pand	%xmm3,%xmm2
15875ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pcmpgtd	%xmm1,%xmm0
15885ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm2,%xmm1
15895ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL066xts_dec_only_one_more:
15905ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pshufd	$19,%xmm0,%xmm5
15915ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	%xmm1,%xmm6
15925ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	paddq	%xmm1,%xmm1
15935ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pand	%xmm3,%xmm5
15945ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm1,%xmm5
15955ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ebp,%edx
15965ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ebx,%ecx
15975ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%esi),%xmm2
15985ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm5,%xmm2
15995ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm0
16005ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%edx),%xmm1
16015ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	32(%edx),%edx
16025ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm0,%xmm2
16035ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL067dec1_loop_13:
16045ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,209
16055ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	decl	%ecx
16065ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm1
16075ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	16(%edx),%edx
16085ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jnz	L067dec1_loop_13
16095ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,223,209
16105ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm5,%xmm2
16115ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm2,(%edi)
16125ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL068xts_dec_steal:
16135ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movzbl	16(%esi),%ecx
16145ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movzbl	(%edi),%edx
16155ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	1(%esi),%esi
16165ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movb	%cl,(%edi)
16175ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movb	%dl,16(%edi)
16185ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	1(%edi),%edi
16195ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	subl	$1,%eax
16205ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jnz	L068xts_dec_steal
16215ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	subl	112(%esp),%edi
16225ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ebp,%edx
16235ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ebx,%ecx
16245ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edi),%xmm2
16255ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm6,%xmm2
16265ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm0
16275ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%edx),%xmm1
16285ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	32(%edx),%edx
16295ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm0,%xmm2
16305ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL069dec1_loop_14:
16315ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,209
16325ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	decl	%ecx
16335ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm1
16345ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	16(%edx),%edx
16355ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jnz	L069dec1_loop_14
16365ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,223,209
16375ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm6,%xmm2
16385ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm2,(%edi)
16395ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL065xts_dec_ret:
16405ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	116(%esp),%esp
16415ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	popl	%edi
16425ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	popl	%esi
16435ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	popl	%ebx
16445ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	popl	%ebp
16455ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	ret
16465ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.globl	_aesni_cbc_encrypt
16475ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4
16485ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com_aesni_cbc_encrypt:
16495ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL_aesni_cbc_encrypt_begin:
16505ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pushl	%ebp
16515ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pushl	%ebx
16525ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pushl	%esi
16535ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pushl	%edi
16545ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	20(%esp),%esi
16555ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%esp,%ebx
16565ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	24(%esp),%edi
16575ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	subl	$24,%ebx
16585ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	28(%esp),%eax
16595ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	andl	$-16,%ebx
16605ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	32(%esp),%edx
16615ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	36(%esp),%ebp
16625ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	testl	%eax,%eax
16635ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jz	L070cbc_abort
16645ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	cmpl	$0,40(%esp)
16655ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xchgl	%esp,%ebx
16665ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%ebp),%xmm7
16675ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	240(%edx),%ecx
16685ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%edx,%ebp
16695ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ebx,16(%esp)
16705ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ecx,%ebx
16715ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	je	L071cbc_decrypt
16725ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movaps	%xmm7,%xmm2
16735ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	cmpl	$16,%eax
16745ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jb	L072cbc_enc_tail
16755ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	subl	$16,%eax
16765ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jmp	L073cbc_enc_loop
16775ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
16785ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL073cbc_enc_loop:
16795ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%esi),%xmm7
16805ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	16(%esi),%esi
16815ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm0
16825ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%edx),%xmm1
16835ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm0,%xmm7
16845ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	32(%edx),%edx
16855ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm7,%xmm2
16865ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL074enc1_loop_15:
16875ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,220,209
16885ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	decl	%ecx
16895ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm1
16905ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	16(%edx),%edx
16915ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jnz	L074enc1_loop_15
16925ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,221,209
16935ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ebx,%ecx
16945ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ebp,%edx
16955ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm2,(%edi)
16965ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	16(%edi),%edi
16975ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	subl	$16,%eax
16985ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jnc	L073cbc_enc_loop
16995ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	addl	$16,%eax
17005ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jnz	L072cbc_enc_tail
17015ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movaps	%xmm2,%xmm7
17025ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jmp	L075cbc_ret
17035ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL072cbc_enc_tail:
17045ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%eax,%ecx
17055ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.long	2767451785
17065ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	$16,%ecx
17075ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	subl	%eax,%ecx
17085ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorl	%eax,%eax
17095ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.long	2868115081
17105ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	-16(%edi),%edi
17115ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ebx,%ecx
17125ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%edi,%esi
17135ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ebp,%edx
17145ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jmp	L073cbc_enc_loop
17155ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
17165ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL071cbc_decrypt:
17175ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	cmpl	$80,%eax
17185ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jbe	L076cbc_dec_tail
17195ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movaps	%xmm7,(%esp)
17205ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	subl	$80,%eax
17215ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jmp	L077cbc_dec_loop6_enter
17225ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
17235ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL078cbc_dec_loop6:
17245ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movaps	%xmm0,(%esp)
17255ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm7,(%edi)
17265ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	16(%edi),%edi
17275ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL077cbc_dec_loop6_enter:
17285ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	(%esi),%xmm2
17295ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	16(%esi),%xmm3
17305ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	32(%esi),%xmm4
17315ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	48(%esi),%xmm5
17325ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	64(%esi),%xmm6
17335ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqu	80(%esi),%xmm7
17345ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	__aesni_decrypt6
17355ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%esi),%xmm1
17365ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%esi),%xmm0
17375ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	(%esp),%xmm2
17385ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm1,%xmm3
17395ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	32(%esi),%xmm1
17405ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm0,%xmm4
17415ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	48(%esi),%xmm0
17425ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm1,%xmm5
17435ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	64(%esi),%xmm1
17445ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm0,%xmm6
17455ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	80(%esi),%xmm0
17465ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm1,%xmm7
17475ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm2,(%edi)
17485ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm3,16(%edi)
17495ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	96(%esi),%esi
17505ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm4,32(%edi)
17515ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ebx,%ecx
17525ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm5,48(%edi)
17535ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ebp,%edx
17545ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm6,64(%edi)
17555ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	80(%edi),%edi
17565ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	subl	$96,%eax
17575ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	ja	L078cbc_dec_loop6
17585ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movaps	%xmm7,%xmm2
17595ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movaps	%xmm0,%xmm7
17605ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	addl	$80,%eax
17615ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jle	L079cbc_dec_tail_collected
17625ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm2,(%edi)
17635ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	16(%edi),%edi
17645ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL076cbc_dec_tail:
17655ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%esi),%xmm2
17665ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movaps	%xmm2,%xmm6
17675ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	cmpl	$16,%eax
17685ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jbe	L080cbc_dec_one
17695ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%esi),%xmm3
17705ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movaps	%xmm3,%xmm5
17715ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	cmpl	$32,%eax
17725ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jbe	L081cbc_dec_two
17735ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	32(%esi),%xmm4
17745ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	cmpl	$48,%eax
17755ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jbe	L082cbc_dec_three
17765ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	48(%esi),%xmm5
17775ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	cmpl	$64,%eax
17785ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jbe	L083cbc_dec_four
17795ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	64(%esi),%xmm6
17805ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movaps	%xmm7,(%esp)
17815ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%esi),%xmm2
17825ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm7,%xmm7
17835ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	__aesni_decrypt6
17845ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%esi),%xmm1
17855ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%esi),%xmm0
17865ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	(%esp),%xmm2
17875ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm1,%xmm3
17885ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	32(%esi),%xmm1
17895ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm0,%xmm4
17905ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	48(%esi),%xmm0
17915ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm1,%xmm5
17925ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	64(%esi),%xmm7
17935ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm0,%xmm6
17945ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm2,(%edi)
17955ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm3,16(%edi)
17965ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm4,32(%edi)
17975ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm5,48(%edi)
17985ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	64(%edi),%edi
17995ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movaps	%xmm6,%xmm2
18005ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	subl	$80,%eax
18015ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jmp	L079cbc_dec_tail_collected
18025ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
18035ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL080cbc_dec_one:
18045ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm0
18055ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%edx),%xmm1
18065ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	32(%edx),%edx
18075ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm0,%xmm2
18085ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL084dec1_loop_16:
18095ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,222,209
18105ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	decl	%ecx
18115ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm1
18125ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	16(%edx),%edx
18135ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jnz	L084dec1_loop_16
18145ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,223,209
18155ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm7,%xmm2
18165ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movaps	%xmm6,%xmm7
18175ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	subl	$16,%eax
18185ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jmp	L079cbc_dec_tail_collected
18195ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
18205ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL081cbc_dec_two:
18215ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm4,%xmm4
18225ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	__aesni_decrypt3
18235ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm7,%xmm2
18245ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm6,%xmm3
18255ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm2,(%edi)
18265ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movaps	%xmm3,%xmm2
18275ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	16(%edi),%edi
18285ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movaps	%xmm5,%xmm7
18295ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	subl	$32,%eax
18305ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jmp	L079cbc_dec_tail_collected
18315ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
18325ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL082cbc_dec_three:
18335ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	__aesni_decrypt3
18345ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm7,%xmm2
18355ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm6,%xmm3
18365ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm5,%xmm4
18375ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm2,(%edi)
18385ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movaps	%xmm4,%xmm2
18395ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm3,16(%edi)
18405ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	32(%edi),%edi
18415ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	32(%esi),%xmm7
18425ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	subl	$48,%eax
18435ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jmp	L079cbc_dec_tail_collected
18445ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
18455ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL083cbc_dec_four:
18465ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	__aesni_decrypt4
18475ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%esi),%xmm1
18485ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	32(%esi),%xmm0
18495ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm7,%xmm2
18505ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	48(%esi),%xmm7
18515ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm6,%xmm3
18525ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm2,(%edi)
18535ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm1,%xmm4
18545ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm3,16(%edi)
18555ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm0,%xmm5
18565ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm4,32(%edi)
18575ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	48(%edi),%edi
18585ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movaps	%xmm5,%xmm2
18595ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	subl	$64,%eax
18605ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL079cbc_dec_tail_collected:
18615ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	andl	$15,%eax
18625ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jnz	L085cbc_dec_tail_partial
18635ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm2,(%edi)
18645ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jmp	L075cbc_ret
18655ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
18665ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL085cbc_dec_tail_partial:
18675ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movaps	%xmm2,(%esp)
18685ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	$16,%ecx
18695ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%esp,%esi
18705ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	subl	%eax,%ecx
18715ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.long	2767451785
18725ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL075cbc_ret:
18735ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	16(%esp),%esp
18745ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	36(%esp),%ebp
18755ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm7,(%ebp)
18765ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL070cbc_abort:
18775ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	popl	%edi
18785ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	popl	%esi
18795ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	popl	%ebx
18805ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	popl	%ebp
18815ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	ret
18825ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4
18835ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com__aesni_set_encrypt_key:
18845ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	testl	%eax,%eax
18855ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jz	L086bad_pointer
18865ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	testl	%edx,%edx
18875ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jz	L086bad_pointer
18885ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%eax),%xmm0
18895ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm4,%xmm4
18905ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	16(%edx),%edx
18915ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	cmpl	$256,%ecx
18925ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	je	L08714rounds
18935ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	cmpl	$192,%ecx
18945ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	je	L08812rounds
18955ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	cmpl	$128,%ecx
18965ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jne	L089bad_keybits
18975ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
18985ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL09010rounds:
18995ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	$9,%ecx
19005ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm0,-16(%edx)
19015ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,58,223,200,1
19025ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	L091key_128_cold
19035ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,58,223,200,2
19045ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	L092key_128
19055ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,58,223,200,4
19065ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	L092key_128
19075ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,58,223,200,8
19085ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	L092key_128
19095ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,58,223,200,16
19105ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	L092key_128
19115ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,58,223,200,32
19125ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	L092key_128
19135ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,58,223,200,64
19145ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	L092key_128
19155ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,58,223,200,128
19165ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	L092key_128
19175ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,58,223,200,27
19185ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	L092key_128
19195ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,58,223,200,54
19205ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	L092key_128
19215ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm0,(%edx)
19225ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ecx,80(%edx)
19235ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorl	%eax,%eax
19245ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	ret
19255ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
19265ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL092key_128:
19275ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm0,(%edx)
19285ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	16(%edx),%edx
19295ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL091key_128_cold:
19305ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	shufps	$16,%xmm0,%xmm4
19315ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm4,%xmm0
19325ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	shufps	$140,%xmm0,%xmm4
19335ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm4,%xmm0
19345ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	shufps	$255,%xmm1,%xmm1
19355ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm1,%xmm0
19365ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	ret
19375ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
19385ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL08812rounds:
19395ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movq	16(%eax),%xmm2
19405ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	$11,%ecx
19415ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm0,-16(%edx)
19425ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,58,223,202,1
19435ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	L093key_192a_cold
19445ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,58,223,202,2
19455ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	L094key_192b
19465ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,58,223,202,4
19475ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	L095key_192a
19485ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,58,223,202,8
19495ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	L094key_192b
19505ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,58,223,202,16
19515ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	L095key_192a
19525ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,58,223,202,32
19535ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	L094key_192b
19545ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,58,223,202,64
19555ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	L095key_192a
19565ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,58,223,202,128
19575ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	L094key_192b
19585ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm0,(%edx)
19595ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ecx,48(%edx)
19605ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorl	%eax,%eax
19615ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	ret
19625ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
19635ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL095key_192a:
19645ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm0,(%edx)
19655ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	16(%edx),%edx
19665ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
19675ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL093key_192a_cold:
19685ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movaps	%xmm2,%xmm5
19695ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL096key_192b_warm:
19705ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	shufps	$16,%xmm0,%xmm4
19715ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movdqa	%xmm2,%xmm3
19725ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm4,%xmm0
19735ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	shufps	$140,%xmm0,%xmm4
19745ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pslldq	$4,%xmm3
19755ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm4,%xmm0
19765ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pshufd	$85,%xmm1,%xmm1
19775ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm3,%xmm2
19785ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm1,%xmm0
19795ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pshufd	$255,%xmm0,%xmm3
19805ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	pxor	%xmm3,%xmm2
19815ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	ret
19825ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
19835ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL094key_192b:
19845ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movaps	%xmm0,%xmm3
19855ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	shufps	$68,%xmm0,%xmm5
19865ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm5,(%edx)
19875ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	shufps	$78,%xmm2,%xmm3
19885ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm3,16(%edx)
19895ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	32(%edx),%edx
19905ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jmp	L096key_192b_warm
19915ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
19925ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL08714rounds:
19935ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	16(%eax),%xmm2
19945ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	$13,%ecx
19955ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	16(%edx),%edx
19965ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm0,-32(%edx)
19975ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm2,-16(%edx)
19985ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,58,223,202,1
19995ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	L097key_256a_cold
20005ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,58,223,200,1
20015ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	L098key_256b
20025ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,58,223,202,2
20035ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	L099key_256a
20045ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,58,223,200,2
20055ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	L098key_256b
20065ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,58,223,202,4
20075ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	L099key_256a
20085ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,58,223,200,4
20095ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	L098key_256b
20105ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,58,223,202,8
20115ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	L099key_256a
20125ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,58,223,200,8
20135ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	L098key_256b
20145ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,58,223,202,16
20155ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	L099key_256a
20165ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,58,223,200,16
20175ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	L098key_256b
20185ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,58,223,202,32
20195ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	L099key_256a
20205ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,58,223,200,32
20215ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	L098key_256b
20225ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,58,223,202,64
20235ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	L099key_256a
20245ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm0,(%edx)
20255ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	%ecx,16(%edx)
20265ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorl	%eax,%eax
20275ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	ret
20285ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
20295ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL099key_256a:
20305ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm2,(%edx)
20315ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	16(%edx),%edx
20325ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL097key_256a_cold:
20335ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	shufps	$16,%xmm0,%xmm4
20345ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm4,%xmm0
20355ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	shufps	$140,%xmm0,%xmm4
20365ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm4,%xmm0
20375ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	shufps	$255,%xmm1,%xmm1
20385ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm1,%xmm0
20395ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	ret
20405ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4,0x90
20415ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL098key_256b:
20425ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm0,(%edx)
20435ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	16(%edx),%edx
20445ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	shufps	$16,%xmm2,%xmm4
20455ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm4,%xmm2
20465ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	shufps	$140,%xmm2,%xmm4
20475ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm4,%xmm2
20485ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	shufps	$170,%xmm1,%xmm1
20495ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorps	%xmm1,%xmm2
20505ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	ret
20515ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	2,0x90
20525ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL086bad_pointer:
20535ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	$-1,%eax
20545ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	ret
20555ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	2,0x90
20565ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL089bad_keybits:
20575ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	$-2,%eax
20585ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	ret
20595ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.globl	_aesni_set_encrypt_key
20605ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4
20615ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com_aesni_set_encrypt_key:
20625ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL_aesni_set_encrypt_key_begin:
20635ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	4(%esp),%eax
20645ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	8(%esp),%ecx
20655ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	12(%esp),%edx
20665ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	__aesni_set_encrypt_key
20675ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	ret
20685ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.globl	_aesni_set_decrypt_key
20695ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align	4
20705ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com_aesni_set_decrypt_key:
20715ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL_aesni_set_decrypt_key_begin:
20725ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	4(%esp),%eax
20735ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	8(%esp),%ecx
20745ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	12(%esp),%edx
20755ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	call	__aesni_set_encrypt_key
20765ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movl	12(%esp),%edx
20775ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	shll	$4,%ecx
20785ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	testl	%eax,%eax
20795ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	jnz	L100dec_key_ret
20805ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	16(%edx,%ecx,1),%eax
20815ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm0
20825ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%eax),%xmm1
20835ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm0,(%eax)
20845ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm1,(%edx)
20855ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	16(%edx),%edx
20865ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	-16(%eax),%eax
20875ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL101dec_key_inverse:
20885ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm0
20895ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%eax),%xmm1
20905ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,219,192
20915ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,219,201
20925ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	16(%edx),%edx
20935ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	leal	-16(%eax),%eax
20945ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm0,16(%eax)
20955ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm1,-16(%edx)
20965ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	cmpl	%edx,%eax
20975ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	ja	L101dec_key_inverse
20985ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	(%edx),%xmm0
20995ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	102,15,56,219,192
21005ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	movups	%xmm0,(%edx)
21015ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	xorl	%eax,%eax
21025ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL100dec_key_ret:
21035ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com	ret
21045ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69
21055ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83
21065ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115
21075ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte	115,108,46,111,114,103,62,0
2108