VirtualBox

source: vbox/trunk/src/libs/openssl-3.0.9/crypto/genasm-elf/chacha-x86.S@ 100942

Last change on this file since 100942 was 97372, checked in by vboxsync, 2 years ago

libs: Switch to openssl-3.0.7, bugref:10317

File size: 6.9 KB
Line 
1.text
2.globl ChaCha20_ctr32
3.type ChaCha20_ctr32,@function
4.align 16
5ChaCha20_ctr32:
6.L_ChaCha20_ctr32_begin:
7 #ifdef __CET__
8
9.byte 243,15,30,251
10 #endif
11
12 pushl %ebp
13 pushl %ebx
14 pushl %esi
15 pushl %edi
16 xorl %eax,%eax
17 cmpl 28(%esp),%eax
18 je .L000no_data
19 movl 32(%esp),%esi
20 movl 36(%esp),%edi
21 subl $132,%esp
22 movl (%esi),%eax
23 movl 4(%esi),%ebx
24 movl 8(%esi),%ecx
25 movl 12(%esi),%edx
26 movl %eax,80(%esp)
27 movl %ebx,84(%esp)
28 movl %ecx,88(%esp)
29 movl %edx,92(%esp)
30 movl 16(%esi),%eax
31 movl 20(%esi),%ebx
32 movl 24(%esi),%ecx
33 movl 28(%esi),%edx
34 movl %eax,96(%esp)
35 movl %ebx,100(%esp)
36 movl %ecx,104(%esp)
37 movl %edx,108(%esp)
38 movl (%edi),%eax
39 movl 4(%edi),%ebx
40 movl 8(%edi),%ecx
41 movl 12(%edi),%edx
42 subl $1,%eax
43 movl %eax,112(%esp)
44 movl %ebx,116(%esp)
45 movl %ecx,120(%esp)
46 movl %edx,124(%esp)
47 jmp .L001entry
48.align 16
49.L002outer_loop:
50 movl %ebx,156(%esp)
51 movl %eax,152(%esp)
52 movl %ecx,160(%esp)
53.L001entry:
54 movl $1634760805,%eax
55 movl $857760878,4(%esp)
56 movl $2036477234,8(%esp)
57 movl $1797285236,12(%esp)
58 movl 84(%esp),%ebx
59 movl 88(%esp),%ebp
60 movl 104(%esp),%ecx
61 movl 108(%esp),%esi
62 movl 116(%esp),%edx
63 movl 120(%esp),%edi
64 movl %ebx,20(%esp)
65 movl %ebp,24(%esp)
66 movl %ecx,40(%esp)
67 movl %esi,44(%esp)
68 movl %edx,52(%esp)
69 movl %edi,56(%esp)
70 movl 92(%esp),%ebx
71 movl 124(%esp),%edi
72 movl 112(%esp),%edx
73 movl 80(%esp),%ebp
74 movl 96(%esp),%ecx
75 movl 100(%esp),%esi
76 addl $1,%edx
77 movl %ebx,28(%esp)
78 movl %edi,60(%esp)
79 movl %edx,112(%esp)
80 movl $10,%ebx
81 jmp .L003loop
82.align 16
83.L003loop:
84 addl %ebp,%eax
85 movl %ebx,128(%esp)
86 movl %ebp,%ebx
87 xorl %eax,%edx
88 roll $16,%edx
89 addl %edx,%ecx
90 xorl %ecx,%ebx
91 movl 52(%esp),%edi
92 roll $12,%ebx
93 movl 20(%esp),%ebp
94 addl %ebx,%eax
95 xorl %eax,%edx
96 movl %eax,(%esp)
97 roll $8,%edx
98 movl 4(%esp),%eax
99 addl %edx,%ecx
100 movl %edx,48(%esp)
101 xorl %ecx,%ebx
102 addl %ebp,%eax
103 roll $7,%ebx
104 xorl %eax,%edi
105 movl %ecx,32(%esp)
106 roll $16,%edi
107 movl %ebx,16(%esp)
108 addl %edi,%esi
109 movl 40(%esp),%ecx
110 xorl %esi,%ebp
111 movl 56(%esp),%edx
112 roll $12,%ebp
113 movl 24(%esp),%ebx
114 addl %ebp,%eax
115 xorl %eax,%edi
116 movl %eax,4(%esp)
117 roll $8,%edi
118 movl 8(%esp),%eax
119 addl %edi,%esi
120 movl %edi,52(%esp)
121 xorl %esi,%ebp
122 addl %ebx,%eax
123 roll $7,%ebp
124 xorl %eax,%edx
125 movl %esi,36(%esp)
126 roll $16,%edx
127 movl %ebp,20(%esp)
128 addl %edx,%ecx
129 movl 44(%esp),%esi
130 xorl %ecx,%ebx
131 movl 60(%esp),%edi
132 roll $12,%ebx
133 movl 28(%esp),%ebp
134 addl %ebx,%eax
135 xorl %eax,%edx
136 movl %eax,8(%esp)
137 roll $8,%edx
138 movl 12(%esp),%eax
139 addl %edx,%ecx
140 movl %edx,56(%esp)
141 xorl %ecx,%ebx
142 addl %ebp,%eax
143 roll $7,%ebx
144 xorl %eax,%edi
145 roll $16,%edi
146 movl %ebx,24(%esp)
147 addl %edi,%esi
148 xorl %esi,%ebp
149 roll $12,%ebp
150 movl 20(%esp),%ebx
151 addl %ebp,%eax
152 xorl %eax,%edi
153 movl %eax,12(%esp)
154 roll $8,%edi
155 movl (%esp),%eax
156 addl %edi,%esi
157 movl %edi,%edx
158 xorl %esi,%ebp
159 addl %ebx,%eax
160 roll $7,%ebp
161 xorl %eax,%edx
162 roll $16,%edx
163 movl %ebp,28(%esp)
164 addl %edx,%ecx
165 xorl %ecx,%ebx
166 movl 48(%esp),%edi
167 roll $12,%ebx
168 movl 24(%esp),%ebp
169 addl %ebx,%eax
170 xorl %eax,%edx
171 movl %eax,(%esp)
172 roll $8,%edx
173 movl 4(%esp),%eax
174 addl %edx,%ecx
175 movl %edx,60(%esp)
176 xorl %ecx,%ebx
177 addl %ebp,%eax
178 roll $7,%ebx
179 xorl %eax,%edi
180 movl %ecx,40(%esp)
181 roll $16,%edi
182 movl %ebx,20(%esp)
183 addl %edi,%esi
184 movl 32(%esp),%ecx
185 xorl %esi,%ebp
186 movl 52(%esp),%edx
187 roll $12,%ebp
188 movl 28(%esp),%ebx
189 addl %ebp,%eax
190 xorl %eax,%edi
191 movl %eax,4(%esp)
192 roll $8,%edi
193 movl 8(%esp),%eax
194 addl %edi,%esi
195 movl %edi,48(%esp)
196 xorl %esi,%ebp
197 addl %ebx,%eax
198 roll $7,%ebp
199 xorl %eax,%edx
200 movl %esi,44(%esp)
201 roll $16,%edx
202 movl %ebp,24(%esp)
203 addl %edx,%ecx
204 movl 36(%esp),%esi
205 xorl %ecx,%ebx
206 movl 56(%esp),%edi
207 roll $12,%ebx
208 movl 16(%esp),%ebp
209 addl %ebx,%eax
210 xorl %eax,%edx
211 movl %eax,8(%esp)
212 roll $8,%edx
213 movl 12(%esp),%eax
214 addl %edx,%ecx
215 movl %edx,52(%esp)
216 xorl %ecx,%ebx
217 addl %ebp,%eax
218 roll $7,%ebx
219 xorl %eax,%edi
220 roll $16,%edi
221 movl %ebx,28(%esp)
222 addl %edi,%esi
223 xorl %esi,%ebp
224 movl 48(%esp),%edx
225 roll $12,%ebp
226 movl 128(%esp),%ebx
227 addl %ebp,%eax
228 xorl %eax,%edi
229 movl %eax,12(%esp)
230 roll $8,%edi
231 movl (%esp),%eax
232 addl %edi,%esi
233 movl %edi,56(%esp)
234 xorl %esi,%ebp
235 roll $7,%ebp
236 decl %ebx
237 jnz .L003loop
238 movl 160(%esp),%ebx
239 addl $1634760805,%eax
240 addl 80(%esp),%ebp
241 addl 96(%esp),%ecx
242 addl 100(%esp),%esi
243 cmpl $64,%ebx
244 jb .L004tail
245 movl 156(%esp),%ebx
246 addl 112(%esp),%edx
247 addl 120(%esp),%edi
248 xorl (%ebx),%eax
249 xorl 16(%ebx),%ebp
250 movl %eax,(%esp)
251 movl 152(%esp),%eax
252 xorl 32(%ebx),%ecx
253 xorl 36(%ebx),%esi
254 xorl 48(%ebx),%edx
255 xorl 56(%ebx),%edi
256 movl %ebp,16(%eax)
257 movl %ecx,32(%eax)
258 movl %esi,36(%eax)
259 movl %edx,48(%eax)
260 movl %edi,56(%eax)
261 movl 4(%esp),%ebp
262 movl 8(%esp),%ecx
263 movl 12(%esp),%esi
264 movl 20(%esp),%edx
265 movl 24(%esp),%edi
266 addl $857760878,%ebp
267 addl $2036477234,%ecx
268 addl $1797285236,%esi
269 addl 84(%esp),%edx
270 addl 88(%esp),%edi
271 xorl 4(%ebx),%ebp
272 xorl 8(%ebx),%ecx
273 xorl 12(%ebx),%esi
274 xorl 20(%ebx),%edx
275 xorl 24(%ebx),%edi
276 movl %ebp,4(%eax)
277 movl %ecx,8(%eax)
278 movl %esi,12(%eax)
279 movl %edx,20(%eax)
280 movl %edi,24(%eax)
281 movl 28(%esp),%ebp
282 movl 40(%esp),%ecx
283 movl 44(%esp),%esi
284 movl 52(%esp),%edx
285 movl 60(%esp),%edi
286 addl 92(%esp),%ebp
287 addl 104(%esp),%ecx
288 addl 108(%esp),%esi
289 addl 116(%esp),%edx
290 addl 124(%esp),%edi
291 xorl 28(%ebx),%ebp
292 xorl 40(%ebx),%ecx
293 xorl 44(%ebx),%esi
294 xorl 52(%ebx),%edx
295 xorl 60(%ebx),%edi
296 leal 64(%ebx),%ebx
297 movl %ebp,28(%eax)
298 movl (%esp),%ebp
299 movl %ecx,40(%eax)
300 movl 160(%esp),%ecx
301 movl %esi,44(%eax)
302 movl %edx,52(%eax)
303 movl %edi,60(%eax)
304 movl %ebp,(%eax)
305 leal 64(%eax),%eax
306 subl $64,%ecx
307 jnz .L002outer_loop
308 jmp .L005done
309.L004tail:
310 addl 112(%esp),%edx
311 addl 120(%esp),%edi
312 movl %eax,(%esp)
313 movl %ebp,16(%esp)
314 movl %ecx,32(%esp)
315 movl %esi,36(%esp)
316 movl %edx,48(%esp)
317 movl %edi,56(%esp)
318 movl 4(%esp),%ebp
319 movl 8(%esp),%ecx
320 movl 12(%esp),%esi
321 movl 20(%esp),%edx
322 movl 24(%esp),%edi
323 addl $857760878,%ebp
324 addl $2036477234,%ecx
325 addl $1797285236,%esi
326 addl 84(%esp),%edx
327 addl 88(%esp),%edi
328 movl %ebp,4(%esp)
329 movl %ecx,8(%esp)
330 movl %esi,12(%esp)
331 movl %edx,20(%esp)
332 movl %edi,24(%esp)
333 movl 28(%esp),%ebp
334 movl 40(%esp),%ecx
335 movl 44(%esp),%esi
336 movl 52(%esp),%edx
337 movl 60(%esp),%edi
338 addl 92(%esp),%ebp
339 addl 104(%esp),%ecx
340 addl 108(%esp),%esi
341 addl 116(%esp),%edx
342 addl 124(%esp),%edi
343 movl %ebp,28(%esp)
344 movl 156(%esp),%ebp
345 movl %ecx,40(%esp)
346 movl 152(%esp),%ecx
347 movl %esi,44(%esp)
348 xorl %esi,%esi
349 movl %edx,52(%esp)
350 movl %edi,60(%esp)
351 xorl %eax,%eax
352 xorl %edx,%edx
353.L006tail_loop:
354 movb (%esi,%ebp,1),%al
355 movb (%esp,%esi,1),%dl
356 leal 1(%esi),%esi
357 xorb %dl,%al
358 movb %al,-1(%ecx,%esi,1)
359 decl %ebx
360 jnz .L006tail_loop
361.L005done:
362 addl $132,%esp
363.L000no_data:
364 popl %edi
365 popl %esi
366 popl %ebx
367 popl %ebp
368 ret
369.size ChaCha20_ctr32,.-.L_ChaCha20_ctr32_begin
370.byte 67,104,97,67,104,97,50,48,32,102,111,114,32,120,56,54
371.byte 44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32
372.byte 60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111
373.byte 114,103,62,0
374
375 .section ".note.gnu.property", "a"
376 .p2align 2
377 .long 1f - 0f
378 .long 4f - 1f
379 .long 5
3800:
381 .asciz "GNU"
3821:
383 .p2align 2
384 .long 0xc0000002
385 .long 3f - 2f
3862:
387 .long 3
3883:
389 .p2align 2
3904:
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette