1c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.file	"vpaes-x86.s"
2c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.text
3c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.align	64
4c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.L_vpaes_consts:
5c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	218628480,235210255,168496130,67568393
6c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	252381056,17041926,33884169,51187212
7c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	252645135,252645135,252645135,252645135
8c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	1512730624,3266504856,1377990664,3401244816
9c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	830229760,1275146365,2969422977,3447763452
10c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	3411033600,2979783055,338359620,2782886510
11c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	4209124096,907596821,221174255,1006095553
12c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	191964160,3799684038,3164090317,1589111125
13c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	182528256,1777043520,2877432650,3265356744
14c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	1874708224,3503451415,3305285752,363511674
15c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	1606117888,3487855781,1093350906,2384367825
16c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	197121,67569157,134941193,202313229
17c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	67569157,134941193,202313229,197121
18c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	134941193,202313229,197121,67569157
19c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	202313229,197121,67569157,134941193
20c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	33619971,100992007,168364043,235736079
21c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	235736079,33619971,100992007,168364043
22c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	168364043,235736079,33619971,100992007
23c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	100992007,168364043,235736079,33619971
24c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	50462976,117835012,185207048,252579084
25c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	252314880,51251460,117574920,184942860
26c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	184682752,252054788,50987272,118359308
27c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	118099200,185467140,251790600,50727180
28c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	2946363062,528716217,1300004225,1881839624
29c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	1532713819,1532713819,1532713819,1532713819
30c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	3602276352,4288629033,3737020424,4153884961
31c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	1354558464,32357713,2958822624,3775749553
32c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	1201988352,132424512,1572796698,503232858
33c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	2213177600,1597421020,4103937655,675398315
34c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	2749646592,4273543773,1511898873,121693092
35c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	3040248576,1103263732,2871565598,1608280554
36c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	2236667136,2588920351,482954393,64377734
37c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	3069987328,291237287,2117370568,3650299247
38c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	533321216,3573750986,2572112006,1401264716
39c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	1339849704,2721158661,548607111,3445553514
40c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	2128193280,3054596040,2183486460,1257083700
41c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	655635200,1165381986,3923443150,2344132524
42c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	190078720,256924420,290342170,357187870
43c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	1610966272,2263057382,4103205268,309794674
44c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	2592527872,2233205587,1335446729,3402964816
45c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	3973531904,3225098121,3002836325,1918774430
46c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	3870401024,2102906079,2284471353,4117666579
47c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	617007872,1021508343,366931923,691083277
48c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	2528395776,3491914898,2968704004,1613121270
49c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	3445188352,3247741094,844474987,4093578302
50c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	651481088,1190302358,1689581232,574775300
51c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	4289380608,206939853,2555985458,2489840491
52c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	2130264064,327674451,3566485037,3349835193
53c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.long	2470714624,316102159,3636825756,3393945945
54c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105
55c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	111,110,32,65,69,83,32,102,111,114,32,120,56,54,47,83
56c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	83,83,69,51,44,32,77,105,107,101,32,72,97,109,98,117
57c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105
58c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	118,101,114,115,105,116,121,41,0
59c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.align	64
60c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.type	_vpaes_preheat,@function
61c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.align	16
62c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita_vpaes_preheat:
63c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	addl	(%esp),%ebp
64c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	-48(%ebp),%xmm7
65c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	-16(%ebp),%xmm6
66c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	ret
67c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.size	_vpaes_preheat,.-_vpaes_preheat
68c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.type	_vpaes_encrypt_core,@function
69c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.align	16
70c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita_vpaes_encrypt_core:
71c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	$16,%ecx
72c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	240(%edx),%eax
73c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	%xmm6,%xmm1
74c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	(%ebp),%xmm2
75c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pandn	%xmm0,%xmm1
76c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqu	(%edx),%xmm5
77c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrld	$4,%xmm1
78c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pand	%xmm6,%xmm0
79c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,208
80c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	16(%ebp),%xmm0
81c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,193
82c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm5,%xmm2
83c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm2,%xmm0
84c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	addl	$16,%edx
85c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	leal	192(%ebp),%ebx
86c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	jmp	.L000enc_entry
87c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.align	16
88c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.L001enc_loop:
89c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	32(%ebp),%xmm4
90c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,226
91c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm5,%xmm4
92c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	48(%ebp),%xmm0
93c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,195
94c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm4,%xmm0
95c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	64(%ebp),%xmm5
96c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,234
97c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	-64(%ebx,%ecx,1),%xmm1
98c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	80(%ebp),%xmm2
99c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,211
100c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm5,%xmm2
101c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	(%ebx,%ecx,1),%xmm4
102c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	%xmm0,%xmm3
103c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,193
104c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	addl	$16,%edx
105c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm2,%xmm0
106c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,220
107c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	addl	$16,%ecx
108c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm0,%xmm3
109c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,193
110c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$48,%ecx
111c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm3,%xmm0
112c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	subl	$1,%eax
113c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.L000enc_entry:
114c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	%xmm6,%xmm1
115c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pandn	%xmm0,%xmm1
116c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrld	$4,%xmm1
117c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pand	%xmm6,%xmm0
118c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	-32(%ebp),%xmm5
119c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,232
120c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm1,%xmm0
121c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	%xmm7,%xmm3
122c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,217
123c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm5,%xmm3
124c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	%xmm7,%xmm4
125c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,224
126c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm5,%xmm4
127c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	%xmm7,%xmm2
128c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,211
129c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm0,%xmm2
130c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	%xmm7,%xmm3
131c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqu	(%edx),%xmm5
132c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,220
133c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm1,%xmm3
134c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	jnz	.L001enc_loop
135c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	96(%ebp),%xmm4
136c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	112(%ebp),%xmm0
137c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,226
138c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm5,%xmm4
139c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,195
140c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	64(%ebx,%ecx,1),%xmm1
141c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm4,%xmm0
142c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,193
143c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	ret
144c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.size	_vpaes_encrypt_core,.-_vpaes_encrypt_core
145c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.type	_vpaes_decrypt_core,@function
146c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.align	16
147c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita_vpaes_decrypt_core:
148c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	240(%edx),%eax
149c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	leal	608(%ebp),%ebx
150c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	%xmm6,%xmm1
151c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	-64(%ebx),%xmm2
152c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pandn	%xmm0,%xmm1
153c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%eax,%ecx
154c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrld	$4,%xmm1
155c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqu	(%edx),%xmm5
156c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	shll	$4,%ecx
157c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pand	%xmm6,%xmm0
158c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,208
159c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	-48(%ebx),%xmm0
160c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	xorl	$48,%ecx
161c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,193
162c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$48,%ecx
163c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm5,%xmm2
164c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	176(%ebp),%xmm5
165c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm2,%xmm0
166c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	addl	$16,%edx
167c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	leal	-352(%ebx,%ecx,1),%ecx
168c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	jmp	.L002dec_entry
169c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.align	16
170c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.L003dec_loop:
171c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	-32(%ebx),%xmm4
172c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,226
173c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm0,%xmm4
174c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	-16(%ebx),%xmm0
175c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,195
176c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm4,%xmm0
177c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	addl	$16,%edx
178c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,197
179c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	(%ebx),%xmm4
180c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,226
181c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm0,%xmm4
182c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	16(%ebx),%xmm0
183c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,195
184c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm4,%xmm0
185c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	subl	$1,%eax
186c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,197
187c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	32(%ebx),%xmm4
188c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,226
189c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm0,%xmm4
190c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	48(%ebx),%xmm0
191c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,195
192c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm4,%xmm0
193c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,197
194c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	64(%ebx),%xmm4
195c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,226
196c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm0,%xmm4
197c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	80(%ebx),%xmm0
198c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,195
199c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm4,%xmm0
200c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,58,15,237,12
201c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.L002dec_entry:
202c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	%xmm6,%xmm1
203c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pandn	%xmm0,%xmm1
204c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrld	$4,%xmm1
205c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pand	%xmm6,%xmm0
206c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	-32(%ebp),%xmm2
207c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,208
208c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm1,%xmm0
209c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	%xmm7,%xmm3
210c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,217
211c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm2,%xmm3
212c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	%xmm7,%xmm4
213c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,224
214c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm2,%xmm4
215c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	%xmm7,%xmm2
216c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,211
217c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm0,%xmm2
218c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	%xmm7,%xmm3
219c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,220
220c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm1,%xmm3
221c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqu	(%edx),%xmm0
222c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	jnz	.L003dec_loop
223c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	96(%ebx),%xmm4
224c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,226
225c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm0,%xmm4
226c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	112(%ebx),%xmm0
227c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	(%ecx),%xmm2
228c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,195
229c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm4,%xmm0
230c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,194
231c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	ret
232c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.size	_vpaes_decrypt_core,.-_vpaes_decrypt_core
233c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.type	_vpaes_schedule_core,@function
234c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.align	16
235c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita_vpaes_schedule_core:
236c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	addl	(%esp),%ebp
237c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqu	(%esi),%xmm0
238c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	320(%ebp),%xmm2
239c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	%xmm0,%xmm3
240c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	leal	(%ebp),%ebx
241c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	%xmm2,4(%esp)
242c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	call	_vpaes_schedule_transform
243c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	%xmm0,%xmm7
244c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	testl	%edi,%edi
245c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	jnz	.L004schedule_am_decrypting
246c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqu	%xmm0,(%edx)
247c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	jmp	.L005schedule_go
248c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.L004schedule_am_decrypting:
249c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	256(%ebp,%ecx,1),%xmm1
250c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,217
251c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqu	%xmm3,(%edx)
252c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	xorl	$48,%ecx
253c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.L005schedule_go:
254c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	cmpl	$192,%eax
255c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	ja	.L006schedule_256
256c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	je	.L007schedule_192
257c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.L008schedule_128:
258c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	$10,%eax
259c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.L009loop_schedule_128:
260c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	call	_vpaes_schedule_round
261c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	decl	%eax
262c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	jz	.L010schedule_mangle_last
263c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	call	_vpaes_schedule_mangle
264c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	jmp	.L009loop_schedule_128
265c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.align	16
266c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.L007schedule_192:
267c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqu	8(%esi),%xmm0
268c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	call	_vpaes_schedule_transform
269c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	%xmm0,%xmm6
270c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm4,%xmm4
271c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movhlps	%xmm4,%xmm6
272c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	$4,%eax
273c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.L011loop_schedule_192:
274c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	call	_vpaes_schedule_round
275c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,58,15,198,8
276c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	call	_vpaes_schedule_mangle
277c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	call	_vpaes_schedule_192_smear
278c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	call	_vpaes_schedule_mangle
279c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	call	_vpaes_schedule_round
280c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	decl	%eax
281c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	jz	.L010schedule_mangle_last
282c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	call	_vpaes_schedule_mangle
283c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	call	_vpaes_schedule_192_smear
284c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	jmp	.L011loop_schedule_192
285c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.align	16
286c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.L006schedule_256:
287c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqu	16(%esi),%xmm0
288c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	call	_vpaes_schedule_transform
289c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	$7,%eax
290c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.L012loop_schedule_256:
291c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	call	_vpaes_schedule_mangle
292c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	%xmm0,%xmm6
293c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	call	_vpaes_schedule_round
294c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	decl	%eax
295c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	jz	.L010schedule_mangle_last
296c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	call	_vpaes_schedule_mangle
297c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pshufd	$255,%xmm0,%xmm0
298c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	%xmm7,20(%esp)
299c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	%xmm6,%xmm7
300c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	call	.L_vpaes_schedule_low_round
301c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	20(%esp),%xmm7
302c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	jmp	.L012loop_schedule_256
303c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.align	16
304c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.L010schedule_mangle_last:
305c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	leal	384(%ebp),%ebx
306c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	testl	%edi,%edi
307c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	jnz	.L013schedule_mangle_last_dec
308c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	256(%ebp,%ecx,1),%xmm1
309c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,193
310c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	leal	352(%ebp),%ebx
311c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	addl	$32,%edx
312c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.L013schedule_mangle_last_dec:
313c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	addl	$-16,%edx
314c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	336(%ebp),%xmm0
315c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	call	_vpaes_schedule_transform
316c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqu	%xmm0,(%edx)
317c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm0,%xmm0
318c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm1,%xmm1
319c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm2,%xmm2
320c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm3,%xmm3
321c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm4,%xmm4
322c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm5,%xmm5
323c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm6,%xmm6
324c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm7,%xmm7
325c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	ret
326c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.size	_vpaes_schedule_core,.-_vpaes_schedule_core
327c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.type	_vpaes_schedule_192_smear,@function
328c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.align	16
329c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita_vpaes_schedule_192_smear:
330c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pshufd	$128,%xmm6,%xmm0
331c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm0,%xmm6
332c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pshufd	$254,%xmm7,%xmm0
333c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm0,%xmm6
334c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	%xmm6,%xmm0
335c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm1,%xmm1
336c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movhlps	%xmm1,%xmm6
337c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	ret
338c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.size	_vpaes_schedule_192_smear,.-_vpaes_schedule_192_smear
339c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.type	_vpaes_schedule_round,@function
340c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.align	16
341c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita_vpaes_schedule_round:
342c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	8(%esp),%xmm2
343c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm1,%xmm1
344c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,58,15,202,15
345c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,58,15,210,15
346c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm1,%xmm7
347c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pshufd	$255,%xmm0,%xmm0
348c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,58,15,192,1
349c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	%xmm2,8(%esp)
350c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.L_vpaes_schedule_low_round:
351c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	%xmm7,%xmm1
352c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pslldq	$4,%xmm7
353c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm1,%xmm7
354c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	%xmm7,%xmm1
355c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pslldq	$8,%xmm7
356c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm1,%xmm7
357c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	336(%ebp),%xmm7
358c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	-16(%ebp),%xmm4
359c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	-48(%ebp),%xmm5
360c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	%xmm4,%xmm1
361c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pandn	%xmm0,%xmm1
362c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrld	$4,%xmm1
363c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pand	%xmm4,%xmm0
364c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	-32(%ebp),%xmm2
365c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,208
366c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm1,%xmm0
367c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	%xmm5,%xmm3
368c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,217
369c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm2,%xmm3
370c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	%xmm5,%xmm4
371c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,224
372c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm2,%xmm4
373c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	%xmm5,%xmm2
374c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,211
375c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm0,%xmm2
376c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	%xmm5,%xmm3
377c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,220
378c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm1,%xmm3
379c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	32(%ebp),%xmm4
380c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,226
381c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	48(%ebp),%xmm0
382c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,195
383c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm4,%xmm0
384c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm7,%xmm0
385c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	%xmm0,%xmm7
386c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	ret
387c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.size	_vpaes_schedule_round,.-_vpaes_schedule_round
388c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.type	_vpaes_schedule_transform,@function
389c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.align	16
390c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita_vpaes_schedule_transform:
391c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	-16(%ebp),%xmm2
392c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	%xmm2,%xmm1
393c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pandn	%xmm0,%xmm1
394c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrld	$4,%xmm1
395c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pand	%xmm2,%xmm0
396c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	(%ebx),%xmm2
397c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,208
398c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	16(%ebx),%xmm0
399c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,193
400c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm2,%xmm0
401c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	ret
402c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.size	_vpaes_schedule_transform,.-_vpaes_schedule_transform
403c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.type	_vpaes_schedule_mangle,@function
404c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.align	16
405c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita_vpaes_schedule_mangle:
406c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	%xmm0,%xmm4
407c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	128(%ebp),%xmm5
408c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	testl	%edi,%edi
409c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	jnz	.L014schedule_mangle_dec
410c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	addl	$16,%edx
411c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	336(%ebp),%xmm4
412c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,229
413c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	%xmm4,%xmm3
414c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,229
415c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm4,%xmm3
416c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,229
417c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm4,%xmm3
418c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	jmp	.L015schedule_mangle_both
419c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.align	16
420c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.L014schedule_mangle_dec:
421c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	-16(%ebp),%xmm2
422c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	leal	416(%ebp),%esi
423c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	%xmm2,%xmm1
424c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pandn	%xmm4,%xmm1
425c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	psrld	$4,%xmm1
426c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pand	%xmm2,%xmm4
427c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	(%esi),%xmm2
428c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,212
429c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	16(%esi),%xmm3
430c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,217
431c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm2,%xmm3
432c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,221
433c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	32(%esi),%xmm2
434c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,212
435c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm3,%xmm2
436c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	48(%esi),%xmm3
437c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,217
438c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm2,%xmm3
439c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,221
440c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	64(%esi),%xmm2
441c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,212
442c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm3,%xmm2
443c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	80(%esi),%xmm3
444c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,217
445c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm2,%xmm3
446c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,221
447c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	96(%esi),%xmm2
448c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,212
449c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm3,%xmm2
450c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	112(%esi),%xmm3
451c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,217
452c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm2,%xmm3
453c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	addl	$-16,%edx
454c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.L015schedule_mangle_both:
455c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	256(%ebp,%ecx,1),%xmm1
456c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.byte	102,15,56,0,217
457c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	addl	$-16,%ecx
458c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$48,%ecx
459c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqu	%xmm3,(%edx)
460c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	ret
461c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.size	_vpaes_schedule_mangle,.-_vpaes_schedule_mangle
462c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.globl	vpaes_set_encrypt_key
463c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.type	vpaes_set_encrypt_key,@function
464c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.align	16
465c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionitavpaes_set_encrypt_key:
466c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.L_vpaes_set_encrypt_key_begin:
467c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pushl	%ebp
468c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pushl	%ebx
469c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pushl	%esi
470c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pushl	%edi
471c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	20(%esp),%esi
472c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	leal	-56(%esp),%ebx
473c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	24(%esp),%eax
474c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$-16,%ebx
475c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	28(%esp),%edx
476c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	xchgl	%esp,%ebx
477c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%ebx,48(%esp)
478c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%eax,%ebx
479c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	shrl	$5,%ebx
480c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	addl	$5,%ebx
481c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%ebx,240(%edx)
482c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	$48,%ecx
483c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	$0,%edi
484c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	leal	.L_vpaes_consts+0x30-.L016pic_point,%ebp
485c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	call	_vpaes_schedule_core
486c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.L016pic_point:
487c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	48(%esp),%esp
488c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	xorl	%eax,%eax
489c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	popl	%edi
490c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	popl	%esi
491c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	popl	%ebx
492c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	popl	%ebp
493c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	ret
494c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.size	vpaes_set_encrypt_key,.-.L_vpaes_set_encrypt_key_begin
495c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.globl	vpaes_set_decrypt_key
496c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.type	vpaes_set_decrypt_key,@function
497c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.align	16
498c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionitavpaes_set_decrypt_key:
499c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.L_vpaes_set_decrypt_key_begin:
500c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pushl	%ebp
501c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pushl	%ebx
502c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pushl	%esi
503c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pushl	%edi
504c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	20(%esp),%esi
505c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	leal	-56(%esp),%ebx
506c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	24(%esp),%eax
507c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$-16,%ebx
508c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	28(%esp),%edx
509c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	xchgl	%esp,%ebx
510c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%ebx,48(%esp)
511c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%eax,%ebx
512c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	shrl	$5,%ebx
513c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	addl	$5,%ebx
514c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%ebx,240(%edx)
515c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	shll	$4,%ebx
516c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	leal	16(%edx,%ebx,1),%edx
517c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	$1,%edi
518c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%eax,%ecx
519c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	shrl	$1,%ecx
520c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$32,%ecx
521c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	xorl	$32,%ecx
522c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	leal	.L_vpaes_consts+0x30-.L017pic_point,%ebp
523c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	call	_vpaes_schedule_core
524c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.L017pic_point:
525c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	48(%esp),%esp
526c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	xorl	%eax,%eax
527c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	popl	%edi
528c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	popl	%esi
529c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	popl	%ebx
530c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	popl	%ebp
531c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	ret
532c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.size	vpaes_set_decrypt_key,.-.L_vpaes_set_decrypt_key_begin
533c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.globl	vpaes_encrypt
534c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.type	vpaes_encrypt,@function
535c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.align	16
536c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionitavpaes_encrypt:
537c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.L_vpaes_encrypt_begin:
538c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pushl	%ebp
539c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pushl	%ebx
540c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pushl	%esi
541c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pushl	%edi
542c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	leal	.L_vpaes_consts+0x30-.L018pic_point,%ebp
543c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	call	_vpaes_preheat
544c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.L018pic_point:
545c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	20(%esp),%esi
546c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	leal	-56(%esp),%ebx
547c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	24(%esp),%edi
548c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$-16,%ebx
549c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	28(%esp),%edx
550c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	xchgl	%esp,%ebx
551c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%ebx,48(%esp)
552c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqu	(%esi),%xmm0
553c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	call	_vpaes_encrypt_core
554c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqu	%xmm0,(%edi)
555c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	48(%esp),%esp
556c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	popl	%edi
557c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	popl	%esi
558c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	popl	%ebx
559c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	popl	%ebp
560c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	ret
561c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.size	vpaes_encrypt,.-.L_vpaes_encrypt_begin
562c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.globl	vpaes_decrypt
563c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.type	vpaes_decrypt,@function
564c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.align	16
565c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionitavpaes_decrypt:
566c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.L_vpaes_decrypt_begin:
567c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pushl	%ebp
568c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pushl	%ebx
569c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pushl	%esi
570c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pushl	%edi
571c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	leal	.L_vpaes_consts+0x30-.L019pic_point,%ebp
572c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	call	_vpaes_preheat
573c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.L019pic_point:
574c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	20(%esp),%esi
575c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	leal	-56(%esp),%ebx
576c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	24(%esp),%edi
577c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$-16,%ebx
578c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	28(%esp),%edx
579c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	xchgl	%esp,%ebx
580c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%ebx,48(%esp)
581c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqu	(%esi),%xmm0
582c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	call	_vpaes_decrypt_core
583c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqu	%xmm0,(%edi)
584c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	48(%esp),%esp
585c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	popl	%edi
586c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	popl	%esi
587c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	popl	%ebx
588c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	popl	%ebp
589c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	ret
590c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.size	vpaes_decrypt,.-.L_vpaes_decrypt_begin
591c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.globl	vpaes_cbc_encrypt
592c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.type	vpaes_cbc_encrypt,@function
593c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.align	16
594c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionitavpaes_cbc_encrypt:
595c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.L_vpaes_cbc_encrypt_begin:
596c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pushl	%ebp
597c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pushl	%ebx
598c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pushl	%esi
599c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pushl	%edi
600c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	20(%esp),%esi
601c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	24(%esp),%edi
602c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	28(%esp),%eax
603c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	32(%esp),%edx
604c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	subl	$16,%eax
605c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	jc	.L020cbc_abort
606c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	leal	-56(%esp),%ebx
607c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	36(%esp),%ebp
608c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	andl	$-16,%ebx
609c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	40(%esp),%ecx
610c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	xchgl	%esp,%ebx
611c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqu	(%ebp),%xmm1
612c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	subl	%esi,%edi
613c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%ebx,48(%esp)
614c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%edi,(%esp)
615c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%edx,4(%esp)
616c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%ebp,8(%esp)
617c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	%eax,%edi
618c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	leal	.L_vpaes_consts+0x30-.L021pic_point,%ebp
619c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	call	_vpaes_preheat
620c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.L021pic_point:
621c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	cmpl	$0,%ecx
622c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	je	.L022cbc_dec_loop
623c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	jmp	.L023cbc_enc_loop
624c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.align	16
625c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.L023cbc_enc_loop:
626c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqu	(%esi),%xmm0
627c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	%xmm1,%xmm0
628c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	call	_vpaes_encrypt_core
629c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	(%esp),%ebx
630c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	4(%esp),%edx
631c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	%xmm0,%xmm1
632c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqu	%xmm0,(%ebx,%esi,1)
633c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	leal	16(%esi),%esi
634c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	subl	$16,%edi
635c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	jnc	.L023cbc_enc_loop
636c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	jmp	.L024cbc_done
637c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.align	16
638c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.L022cbc_dec_loop:
639c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqu	(%esi),%xmm0
640c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	%xmm1,16(%esp)
641c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	%xmm0,32(%esp)
642c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	call	_vpaes_decrypt_core
643c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	(%esp),%ebx
644c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	4(%esp),%edx
645c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	pxor	16(%esp),%xmm0
646c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqa	32(%esp),%xmm1
647c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqu	%xmm0,(%ebx,%esi,1)
648c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	leal	16(%esi),%esi
649c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	subl	$16,%edi
650c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	jnc	.L022cbc_dec_loop
651c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.L024cbc_done:
652c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	8(%esp),%ebx
653c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movl	48(%esp),%esp
654c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	movdqu	%xmm1,(%ebx)
655c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.L020cbc_abort:
656c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	popl	%edi
657c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	popl	%esi
658c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	popl	%ebx
659c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	popl	%ebp
660c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita	ret
661c58cd0fd2cebb61b0e0f200e01562c542525ef46Catalin Ionita.size	vpaes_cbc_encrypt,.-.L_vpaes_cbc_encrypt_begin
662