• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# This file is generated from a similarly-named Perl script in the BoringSSL
2# source tree. Do not edit by hand.
3
4#if defined(__i386__)
5#include "ring_core_generated/prefix_symbols_asm.h"
6.text
7.align	64
8.L_vpaes_consts:
9.long	218628480,235210255,168496130,67568393
10.long	252381056,17041926,33884169,51187212
11.long	252645135,252645135,252645135,252645135
12.long	1512730624,3266504856,1377990664,3401244816
13.long	830229760,1275146365,2969422977,3447763452
14.long	3411033600,2979783055,338359620,2782886510
15.long	4209124096,907596821,221174255,1006095553
16.long	191964160,3799684038,3164090317,1589111125
17.long	182528256,1777043520,2877432650,3265356744
18.long	1874708224,3503451415,3305285752,363511674
19.long	1606117888,3487855781,1093350906,2384367825
20.long	197121,67569157,134941193,202313229
21.long	67569157,134941193,202313229,197121
22.long	134941193,202313229,197121,67569157
23.long	202313229,197121,67569157,134941193
24.long	33619971,100992007,168364043,235736079
25.long	235736079,33619971,100992007,168364043
26.long	168364043,235736079,33619971,100992007
27.long	100992007,168364043,235736079,33619971
28.long	50462976,117835012,185207048,252579084
29.long	252314880,51251460,117574920,184942860
30.long	184682752,252054788,50987272,118359308
31.long	118099200,185467140,251790600,50727180
32.long	2946363062,528716217,1300004225,1881839624
33.long	1532713819,1532713819,1532713819,1532713819
34.long	3602276352,4288629033,3737020424,4153884961
35.long	1354558464,32357713,2958822624,3775749553
36.long	1201988352,132424512,1572796698,503232858
37.long	2213177600,1597421020,4103937655,675398315
38.byte	86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105
39.byte	111,110,32,65,69,83,32,102,111,114,32,120,56,54,47,83
40.byte	83,83,69,51,44,32,77,105,107,101,32,72,97,109,98,117
41.byte	114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105
42.byte	118,101,114,115,105,116,121,41,0
43.align	64
44.hidden	_vpaes_preheat
45.type	_vpaes_preheat,@function
46.align	16
47_vpaes_preheat:
48	addl	(%esp),%ebp
49	movdqa	-48(%ebp),%xmm7
50	movdqa	-16(%ebp),%xmm6
51	ret
52.size	_vpaes_preheat,.-_vpaes_preheat
53.hidden	_vpaes_encrypt_core
54.type	_vpaes_encrypt_core,@function
55.align	16
56_vpaes_encrypt_core:
57	movl	$16,%ecx
58	movl	240(%edx),%eax
59	movdqa	%xmm6,%xmm1
60	movdqa	(%ebp),%xmm2
61	pandn	%xmm0,%xmm1
62	pand	%xmm6,%xmm0
63	movdqu	(%edx),%xmm5
64.byte	102,15,56,0,208
65	movdqa	16(%ebp),%xmm0
66	pxor	%xmm5,%xmm2
67	psrld	$4,%xmm1
68	addl	$16,%edx
69.byte	102,15,56,0,193
70	leal	192(%ebp),%ebx
71	pxor	%xmm2,%xmm0
72	jmp	.L000enc_entry
73.align	16
74.L001enc_loop:
75	movdqa	32(%ebp),%xmm4
76	movdqa	48(%ebp),%xmm0
77.byte	102,15,56,0,226
78.byte	102,15,56,0,195
79	pxor	%xmm5,%xmm4
80	movdqa	64(%ebp),%xmm5
81	pxor	%xmm4,%xmm0
82	movdqa	-64(%ebx,%ecx,1),%xmm1
83.byte	102,15,56,0,234
84	movdqa	80(%ebp),%xmm2
85	movdqa	(%ebx,%ecx,1),%xmm4
86.byte	102,15,56,0,211
87	movdqa	%xmm0,%xmm3
88	pxor	%xmm5,%xmm2
89.byte	102,15,56,0,193
90	addl	$16,%edx
91	pxor	%xmm2,%xmm0
92.byte	102,15,56,0,220
93	addl	$16,%ecx
94	pxor	%xmm0,%xmm3
95.byte	102,15,56,0,193
96	andl	$48,%ecx
97	subl	$1,%eax
98	pxor	%xmm3,%xmm0
99.L000enc_entry:
100	movdqa	%xmm6,%xmm1
101	movdqa	-32(%ebp),%xmm5
102	pandn	%xmm0,%xmm1
103	psrld	$4,%xmm1
104	pand	%xmm6,%xmm0
105.byte	102,15,56,0,232
106	movdqa	%xmm7,%xmm3
107	pxor	%xmm1,%xmm0
108.byte	102,15,56,0,217
109	movdqa	%xmm7,%xmm4
110	pxor	%xmm5,%xmm3
111.byte	102,15,56,0,224
112	movdqa	%xmm7,%xmm2
113	pxor	%xmm5,%xmm4
114.byte	102,15,56,0,211
115	movdqa	%xmm7,%xmm3
116	pxor	%xmm0,%xmm2
117.byte	102,15,56,0,220
118	movdqu	(%edx),%xmm5
119	pxor	%xmm1,%xmm3
120	jnz	.L001enc_loop
121	movdqa	96(%ebp),%xmm4
122	movdqa	112(%ebp),%xmm0
123.byte	102,15,56,0,226
124	pxor	%xmm5,%xmm4
125.byte	102,15,56,0,195
126	movdqa	64(%ebx,%ecx,1),%xmm1
127	pxor	%xmm4,%xmm0
128.byte	102,15,56,0,193
129	ret
130.size	_vpaes_encrypt_core,.-_vpaes_encrypt_core
131.hidden	_vpaes_schedule_core
132.type	_vpaes_schedule_core,@function
133.align	16
134_vpaes_schedule_core:
135	addl	(%esp),%ebp
136	movdqu	(%esi),%xmm0
137	movdqa	320(%ebp),%xmm2
138	movdqa	%xmm0,%xmm3
139	leal	(%ebp),%ebx
140	movdqa	%xmm2,4(%esp)
141	call	_vpaes_schedule_transform
142	movdqa	%xmm0,%xmm7
143	testl	%edi,%edi
144	jnz	.L002schedule_am_decrypting
145	movdqu	%xmm0,(%edx)
146	jmp	.L003schedule_go
147.L002schedule_am_decrypting:
148	movdqa	256(%ebp,%ecx,1),%xmm1
149.byte	102,15,56,0,217
150	movdqu	%xmm3,(%edx)
151	xorl	$48,%ecx
152.L003schedule_go:
153	cmpl	$192,%eax
154	ja	.L004schedule_256
155.L005schedule_128:
156	movl	$10,%eax
157.L006loop_schedule_128:
158	call	_vpaes_schedule_round
159	decl	%eax
160	jz	.L007schedule_mangle_last
161	call	_vpaes_schedule_mangle
162	jmp	.L006loop_schedule_128
163.align	16
164.L004schedule_256:
165	movdqu	16(%esi),%xmm0
166	call	_vpaes_schedule_transform
167	movl	$7,%eax
168.L008loop_schedule_256:
169	call	_vpaes_schedule_mangle
170	movdqa	%xmm0,%xmm6
171	call	_vpaes_schedule_round
172	decl	%eax
173	jz	.L007schedule_mangle_last
174	call	_vpaes_schedule_mangle
175	pshufd	$255,%xmm0,%xmm0
176	movdqa	%xmm7,20(%esp)
177	movdqa	%xmm6,%xmm7
178	call	.L_vpaes_schedule_low_round
179	movdqa	20(%esp),%xmm7
180	jmp	.L008loop_schedule_256
181.align	16
182.L007schedule_mangle_last:
183	leal	384(%ebp),%ebx
184	testl	%edi,%edi
185	jnz	.L009schedule_mangle_last_dec
186	movdqa	256(%ebp,%ecx,1),%xmm1
187.byte	102,15,56,0,193
188	leal	352(%ebp),%ebx
189	addl	$32,%edx
190.L009schedule_mangle_last_dec:
191	addl	$-16,%edx
192	pxor	336(%ebp),%xmm0
193	call	_vpaes_schedule_transform
194	movdqu	%xmm0,(%edx)
195	pxor	%xmm0,%xmm0
196	pxor	%xmm1,%xmm1
197	pxor	%xmm2,%xmm2
198	pxor	%xmm3,%xmm3
199	pxor	%xmm4,%xmm4
200	pxor	%xmm5,%xmm5
201	pxor	%xmm6,%xmm6
202	pxor	%xmm7,%xmm7
203	ret
204.size	_vpaes_schedule_core,.-_vpaes_schedule_core
205.hidden	_vpaes_schedule_round
206.type	_vpaes_schedule_round,@function
207.align	16
208_vpaes_schedule_round:
209	movdqa	8(%esp),%xmm2
210	pxor	%xmm1,%xmm1
211.byte	102,15,58,15,202,15
212.byte	102,15,58,15,210,15
213	pxor	%xmm1,%xmm7
214	pshufd	$255,%xmm0,%xmm0
215.byte	102,15,58,15,192,1
216	movdqa	%xmm2,8(%esp)
217.L_vpaes_schedule_low_round:
218	movdqa	%xmm7,%xmm1
219	pslldq	$4,%xmm7
220	pxor	%xmm1,%xmm7
221	movdqa	%xmm7,%xmm1
222	pslldq	$8,%xmm7
223	pxor	%xmm1,%xmm7
224	pxor	336(%ebp),%xmm7
225	movdqa	-16(%ebp),%xmm4
226	movdqa	-48(%ebp),%xmm5
227	movdqa	%xmm4,%xmm1
228	pandn	%xmm0,%xmm1
229	psrld	$4,%xmm1
230	pand	%xmm4,%xmm0
231	movdqa	-32(%ebp),%xmm2
232.byte	102,15,56,0,208
233	pxor	%xmm1,%xmm0
234	movdqa	%xmm5,%xmm3
235.byte	102,15,56,0,217
236	pxor	%xmm2,%xmm3
237	movdqa	%xmm5,%xmm4
238.byte	102,15,56,0,224
239	pxor	%xmm2,%xmm4
240	movdqa	%xmm5,%xmm2
241.byte	102,15,56,0,211
242	pxor	%xmm0,%xmm2
243	movdqa	%xmm5,%xmm3
244.byte	102,15,56,0,220
245	pxor	%xmm1,%xmm3
246	movdqa	32(%ebp),%xmm4
247.byte	102,15,56,0,226
248	movdqa	48(%ebp),%xmm0
249.byte	102,15,56,0,195
250	pxor	%xmm4,%xmm0
251	pxor	%xmm7,%xmm0
252	movdqa	%xmm0,%xmm7
253	ret
254.size	_vpaes_schedule_round,.-_vpaes_schedule_round
255.hidden	_vpaes_schedule_transform
256.type	_vpaes_schedule_transform,@function
257.align	16
258_vpaes_schedule_transform:
259	movdqa	-16(%ebp),%xmm2
260	movdqa	%xmm2,%xmm1
261	pandn	%xmm0,%xmm1
262	psrld	$4,%xmm1
263	pand	%xmm2,%xmm0
264	movdqa	(%ebx),%xmm2
265.byte	102,15,56,0,208
266	movdqa	16(%ebx),%xmm0
267.byte	102,15,56,0,193
268	pxor	%xmm2,%xmm0
269	ret
270.size	_vpaes_schedule_transform,.-_vpaes_schedule_transform
271.hidden	_vpaes_schedule_mangle
272.type	_vpaes_schedule_mangle,@function
273.align	16
274_vpaes_schedule_mangle:
275	movdqa	%xmm0,%xmm4
276	movdqa	128(%ebp),%xmm5
277	testl	%edi,%edi
278	jnz	.L010schedule_mangle_dec
279	addl	$16,%edx
280	pxor	336(%ebp),%xmm4
281.byte	102,15,56,0,229
282	movdqa	%xmm4,%xmm3
283.byte	102,15,56,0,229
284	pxor	%xmm4,%xmm3
285.byte	102,15,56,0,229
286	pxor	%xmm4,%xmm3
287	jmp	.L011schedule_mangle_both
288.align	16
289.L010schedule_mangle_dec:
290	movdqa	-16(%ebp),%xmm2
291	leal	(%ebp),%esi
292	movdqa	%xmm2,%xmm1
293	pandn	%xmm4,%xmm1
294	psrld	$4,%xmm1
295	pand	%xmm2,%xmm4
296	movdqa	(%esi),%xmm2
297.byte	102,15,56,0,212
298	movdqa	16(%esi),%xmm3
299.byte	102,15,56,0,217
300	pxor	%xmm2,%xmm3
301.byte	102,15,56,0,221
302	movdqa	32(%esi),%xmm2
303.byte	102,15,56,0,212
304	pxor	%xmm3,%xmm2
305	movdqa	48(%esi),%xmm3
306.byte	102,15,56,0,217
307	pxor	%xmm2,%xmm3
308.byte	102,15,56,0,221
309	movdqa	64(%esi),%xmm2
310.byte	102,15,56,0,212
311	pxor	%xmm3,%xmm2
312	movdqa	80(%esi),%xmm3
313.byte	102,15,56,0,217
314	pxor	%xmm2,%xmm3
315.byte	102,15,56,0,221
316	movdqa	96(%esi),%xmm2
317.byte	102,15,56,0,212
318	pxor	%xmm3,%xmm2
319	movdqa	112(%esi),%xmm3
320.byte	102,15,56,0,217
321	pxor	%xmm2,%xmm3
322	addl	$-16,%edx
323.L011schedule_mangle_both:
324	movdqa	256(%ebp,%ecx,1),%xmm1
325.byte	102,15,56,0,217
326	addl	$-16,%ecx
327	andl	$48,%ecx
328	movdqu	%xmm3,(%edx)
329	ret
330.size	_vpaes_schedule_mangle,.-_vpaes_schedule_mangle
331.globl	vpaes_set_encrypt_key
332.hidden	vpaes_set_encrypt_key
333.type	vpaes_set_encrypt_key,@function
334.align	16
335vpaes_set_encrypt_key:
336.L_vpaes_set_encrypt_key_begin:
337	pushl	%ebp
338	pushl	%ebx
339	pushl	%esi
340	pushl	%edi
341	movl	20(%esp),%esi
342	leal	-56(%esp),%ebx
343	movl	24(%esp),%eax
344	andl	$-16,%ebx
345	movl	28(%esp),%edx
346	xchgl	%esp,%ebx
347	movl	%ebx,48(%esp)
348	movl	%eax,%ebx
349	shrl	$5,%ebx
350	addl	$5,%ebx
351	movl	%ebx,240(%edx)
352	movl	$48,%ecx
353	movl	$0,%edi
354	leal	.L_vpaes_consts+0x30-.L012pic_point,%ebp
355	call	_vpaes_schedule_core
356.L012pic_point:
357	movl	48(%esp),%esp
358	xorl	%eax,%eax
359	popl	%edi
360	popl	%esi
361	popl	%ebx
362	popl	%ebp
363	ret
364.size	vpaes_set_encrypt_key,.-.L_vpaes_set_encrypt_key_begin
365.globl	vpaes_encrypt
366.hidden	vpaes_encrypt
367.type	vpaes_encrypt,@function
368.align	16
369vpaes_encrypt:
370.L_vpaes_encrypt_begin:
371	pushl	%ebp
372	pushl	%ebx
373	pushl	%esi
374	pushl	%edi
375	leal	.L_vpaes_consts+0x30-.L013pic_point,%ebp
376	call	_vpaes_preheat
377.L013pic_point:
378	movl	20(%esp),%esi
379	leal	-56(%esp),%ebx
380	movl	24(%esp),%edi
381	andl	$-16,%ebx
382	movl	28(%esp),%edx
383	xchgl	%esp,%ebx
384	movl	%ebx,48(%esp)
385	movdqu	(%esi),%xmm0
386	call	_vpaes_encrypt_core
387	movdqu	%xmm0,(%edi)
388	movl	48(%esp),%esp
389	popl	%edi
390	popl	%esi
391	popl	%ebx
392	popl	%ebp
393	ret
394.size	vpaes_encrypt,.-.L_vpaes_encrypt_begin
395#endif
396.section	.note.GNU-stack,"",@progbits
397