xref: /aosp_15_r20/external/boringssl/src/gen/bcm/md5-586-win.asm (revision 8fb009dc861624b67b6cdb62ea21f0f22d0c584b)
1; This file is generated from a similarly-named Perl script in the BoringSSL
2; source tree. Do not edit by hand.
3
4%ifdef BORINGSSL_PREFIX
5%include "boringssl_prefix_symbols_nasm.inc"
6%endif
7%ifidn __OUTPUT_FORMAT__, win32
8%ifidn __OUTPUT_FORMAT__,obj
9section	code	use32 class=code align=64
10%elifidn __OUTPUT_FORMAT__,win32
11$@feat.00 equ 1
12section	.text	code align=64
13%else
14section	.text	code
15%endif
16global	_md5_block_asm_data_order
17align	16
18_md5_block_asm_data_order:
19L$_md5_block_asm_data_order_begin:
20	push	esi
21	push	edi
22	mov	edi,DWORD [12+esp]
23	mov	esi,DWORD [16+esp]
24	mov	ecx,DWORD [20+esp]
25	push	ebp
26	shl	ecx,6
27	push	ebx
28	add	ecx,esi
29	sub	ecx,64
30	mov	eax,DWORD [edi]
31	push	ecx
32	mov	ebx,DWORD [4+edi]
33	mov	ecx,DWORD [8+edi]
34	mov	edx,DWORD [12+edi]
35L$000start:
36	;
37	; R0 section
38	mov	edi,ecx
39	mov	ebp,DWORD [esi]
40	; R0 0
41	xor	edi,edx
42	and	edi,ebx
43	lea	eax,[3614090360+ebp*1+eax]
44	xor	edi,edx
45	add	eax,edi
46	mov	edi,ebx
47	rol	eax,7
48	mov	ebp,DWORD [4+esi]
49	add	eax,ebx
50	; R0 1
51	xor	edi,ecx
52	and	edi,eax
53	lea	edx,[3905402710+ebp*1+edx]
54	xor	edi,ecx
55	add	edx,edi
56	mov	edi,eax
57	rol	edx,12
58	mov	ebp,DWORD [8+esi]
59	add	edx,eax
60	; R0 2
61	xor	edi,ebx
62	and	edi,edx
63	lea	ecx,[606105819+ebp*1+ecx]
64	xor	edi,ebx
65	add	ecx,edi
66	mov	edi,edx
67	rol	ecx,17
68	mov	ebp,DWORD [12+esi]
69	add	ecx,edx
70	; R0 3
71	xor	edi,eax
72	and	edi,ecx
73	lea	ebx,[3250441966+ebp*1+ebx]
74	xor	edi,eax
75	add	ebx,edi
76	mov	edi,ecx
77	rol	ebx,22
78	mov	ebp,DWORD [16+esi]
79	add	ebx,ecx
80	; R0 4
81	xor	edi,edx
82	and	edi,ebx
83	lea	eax,[4118548399+ebp*1+eax]
84	xor	edi,edx
85	add	eax,edi
86	mov	edi,ebx
87	rol	eax,7
88	mov	ebp,DWORD [20+esi]
89	add	eax,ebx
90	; R0 5
91	xor	edi,ecx
92	and	edi,eax
93	lea	edx,[1200080426+ebp*1+edx]
94	xor	edi,ecx
95	add	edx,edi
96	mov	edi,eax
97	rol	edx,12
98	mov	ebp,DWORD [24+esi]
99	add	edx,eax
100	; R0 6
101	xor	edi,ebx
102	and	edi,edx
103	lea	ecx,[2821735955+ebp*1+ecx]
104	xor	edi,ebx
105	add	ecx,edi
106	mov	edi,edx
107	rol	ecx,17
108	mov	ebp,DWORD [28+esi]
109	add	ecx,edx
110	; R0 7
111	xor	edi,eax
112	and	edi,ecx
113	lea	ebx,[4249261313+ebp*1+ebx]
114	xor	edi,eax
115	add	ebx,edi
116	mov	edi,ecx
117	rol	ebx,22
118	mov	ebp,DWORD [32+esi]
119	add	ebx,ecx
120	; R0 8
121	xor	edi,edx
122	and	edi,ebx
123	lea	eax,[1770035416+ebp*1+eax]
124	xor	edi,edx
125	add	eax,edi
126	mov	edi,ebx
127	rol	eax,7
128	mov	ebp,DWORD [36+esi]
129	add	eax,ebx
130	; R0 9
131	xor	edi,ecx
132	and	edi,eax
133	lea	edx,[2336552879+ebp*1+edx]
134	xor	edi,ecx
135	add	edx,edi
136	mov	edi,eax
137	rol	edx,12
138	mov	ebp,DWORD [40+esi]
139	add	edx,eax
140	; R0 10
141	xor	edi,ebx
142	and	edi,edx
143	lea	ecx,[4294925233+ebp*1+ecx]
144	xor	edi,ebx
145	add	ecx,edi
146	mov	edi,edx
147	rol	ecx,17
148	mov	ebp,DWORD [44+esi]
149	add	ecx,edx
150	; R0 11
151	xor	edi,eax
152	and	edi,ecx
153	lea	ebx,[2304563134+ebp*1+ebx]
154	xor	edi,eax
155	add	ebx,edi
156	mov	edi,ecx
157	rol	ebx,22
158	mov	ebp,DWORD [48+esi]
159	add	ebx,ecx
160	; R0 12
161	xor	edi,edx
162	and	edi,ebx
163	lea	eax,[1804603682+ebp*1+eax]
164	xor	edi,edx
165	add	eax,edi
166	mov	edi,ebx
167	rol	eax,7
168	mov	ebp,DWORD [52+esi]
169	add	eax,ebx
170	; R0 13
171	xor	edi,ecx
172	and	edi,eax
173	lea	edx,[4254626195+ebp*1+edx]
174	xor	edi,ecx
175	add	edx,edi
176	mov	edi,eax
177	rol	edx,12
178	mov	ebp,DWORD [56+esi]
179	add	edx,eax
180	; R0 14
181	xor	edi,ebx
182	and	edi,edx
183	lea	ecx,[2792965006+ebp*1+ecx]
184	xor	edi,ebx
185	add	ecx,edi
186	mov	edi,edx
187	rol	ecx,17
188	mov	ebp,DWORD [60+esi]
189	add	ecx,edx
190	; R0 15
191	xor	edi,eax
192	and	edi,ecx
193	lea	ebx,[1236535329+ebp*1+ebx]
194	xor	edi,eax
195	add	ebx,edi
196	mov	edi,ecx
197	rol	ebx,22
198	mov	ebp,DWORD [4+esi]
199	add	ebx,ecx
200	;
201	; R1 section
202	; R1 16
203	lea	eax,[4129170786+ebp*1+eax]
204	xor	edi,ebx
205	and	edi,edx
206	mov	ebp,DWORD [24+esi]
207	xor	edi,ecx
208	add	eax,edi
209	mov	edi,ebx
210	rol	eax,5
211	add	eax,ebx
212	; R1 17
213	lea	edx,[3225465664+ebp*1+edx]
214	xor	edi,eax
215	and	edi,ecx
216	mov	ebp,DWORD [44+esi]
217	xor	edi,ebx
218	add	edx,edi
219	mov	edi,eax
220	rol	edx,9
221	add	edx,eax
222	; R1 18
223	lea	ecx,[643717713+ebp*1+ecx]
224	xor	edi,edx
225	and	edi,ebx
226	mov	ebp,DWORD [esi]
227	xor	edi,eax
228	add	ecx,edi
229	mov	edi,edx
230	rol	ecx,14
231	add	ecx,edx
232	; R1 19
233	lea	ebx,[3921069994+ebp*1+ebx]
234	xor	edi,ecx
235	and	edi,eax
236	mov	ebp,DWORD [20+esi]
237	xor	edi,edx
238	add	ebx,edi
239	mov	edi,ecx
240	rol	ebx,20
241	add	ebx,ecx
242	; R1 20
243	lea	eax,[3593408605+ebp*1+eax]
244	xor	edi,ebx
245	and	edi,edx
246	mov	ebp,DWORD [40+esi]
247	xor	edi,ecx
248	add	eax,edi
249	mov	edi,ebx
250	rol	eax,5
251	add	eax,ebx
252	; R1 21
253	lea	edx,[38016083+ebp*1+edx]
254	xor	edi,eax
255	and	edi,ecx
256	mov	ebp,DWORD [60+esi]
257	xor	edi,ebx
258	add	edx,edi
259	mov	edi,eax
260	rol	edx,9
261	add	edx,eax
262	; R1 22
263	lea	ecx,[3634488961+ebp*1+ecx]
264	xor	edi,edx
265	and	edi,ebx
266	mov	ebp,DWORD [16+esi]
267	xor	edi,eax
268	add	ecx,edi
269	mov	edi,edx
270	rol	ecx,14
271	add	ecx,edx
272	; R1 23
273	lea	ebx,[3889429448+ebp*1+ebx]
274	xor	edi,ecx
275	and	edi,eax
276	mov	ebp,DWORD [36+esi]
277	xor	edi,edx
278	add	ebx,edi
279	mov	edi,ecx
280	rol	ebx,20
281	add	ebx,ecx
282	; R1 24
283	lea	eax,[568446438+ebp*1+eax]
284	xor	edi,ebx
285	and	edi,edx
286	mov	ebp,DWORD [56+esi]
287	xor	edi,ecx
288	add	eax,edi
289	mov	edi,ebx
290	rol	eax,5
291	add	eax,ebx
292	; R1 25
293	lea	edx,[3275163606+ebp*1+edx]
294	xor	edi,eax
295	and	edi,ecx
296	mov	ebp,DWORD [12+esi]
297	xor	edi,ebx
298	add	edx,edi
299	mov	edi,eax
300	rol	edx,9
301	add	edx,eax
302	; R1 26
303	lea	ecx,[4107603335+ebp*1+ecx]
304	xor	edi,edx
305	and	edi,ebx
306	mov	ebp,DWORD [32+esi]
307	xor	edi,eax
308	add	ecx,edi
309	mov	edi,edx
310	rol	ecx,14
311	add	ecx,edx
312	; R1 27
313	lea	ebx,[1163531501+ebp*1+ebx]
314	xor	edi,ecx
315	and	edi,eax
316	mov	ebp,DWORD [52+esi]
317	xor	edi,edx
318	add	ebx,edi
319	mov	edi,ecx
320	rol	ebx,20
321	add	ebx,ecx
322	; R1 28
323	lea	eax,[2850285829+ebp*1+eax]
324	xor	edi,ebx
325	and	edi,edx
326	mov	ebp,DWORD [8+esi]
327	xor	edi,ecx
328	add	eax,edi
329	mov	edi,ebx
330	rol	eax,5
331	add	eax,ebx
332	; R1 29
333	lea	edx,[4243563512+ebp*1+edx]
334	xor	edi,eax
335	and	edi,ecx
336	mov	ebp,DWORD [28+esi]
337	xor	edi,ebx
338	add	edx,edi
339	mov	edi,eax
340	rol	edx,9
341	add	edx,eax
342	; R1 30
343	lea	ecx,[1735328473+ebp*1+ecx]
344	xor	edi,edx
345	and	edi,ebx
346	mov	ebp,DWORD [48+esi]
347	xor	edi,eax
348	add	ecx,edi
349	mov	edi,edx
350	rol	ecx,14
351	add	ecx,edx
352	; R1 31
353	lea	ebx,[2368359562+ebp*1+ebx]
354	xor	edi,ecx
355	and	edi,eax
356	mov	ebp,DWORD [20+esi]
357	xor	edi,edx
358	add	ebx,edi
359	mov	edi,ecx
360	rol	ebx,20
361	add	ebx,ecx
362	;
363	; R2 section
364	; R2 32
365	xor	edi,edx
366	xor	edi,ebx
367	lea	eax,[4294588738+ebp*1+eax]
368	add	eax,edi
369	rol	eax,4
370	mov	ebp,DWORD [32+esi]
371	mov	edi,ebx
372	; R2 33
373	lea	edx,[2272392833+ebp*1+edx]
374	add	eax,ebx
375	xor	edi,ecx
376	xor	edi,eax
377	mov	ebp,DWORD [44+esi]
378	add	edx,edi
379	mov	edi,eax
380	rol	edx,11
381	add	edx,eax
382	; R2 34
383	xor	edi,ebx
384	xor	edi,edx
385	lea	ecx,[1839030562+ebp*1+ecx]
386	add	ecx,edi
387	rol	ecx,16
388	mov	ebp,DWORD [56+esi]
389	mov	edi,edx
390	; R2 35
391	lea	ebx,[4259657740+ebp*1+ebx]
392	add	ecx,edx
393	xor	edi,eax
394	xor	edi,ecx
395	mov	ebp,DWORD [4+esi]
396	add	ebx,edi
397	mov	edi,ecx
398	rol	ebx,23
399	add	ebx,ecx
400	; R2 36
401	xor	edi,edx
402	xor	edi,ebx
403	lea	eax,[2763975236+ebp*1+eax]
404	add	eax,edi
405	rol	eax,4
406	mov	ebp,DWORD [16+esi]
407	mov	edi,ebx
408	; R2 37
409	lea	edx,[1272893353+ebp*1+edx]
410	add	eax,ebx
411	xor	edi,ecx
412	xor	edi,eax
413	mov	ebp,DWORD [28+esi]
414	add	edx,edi
415	mov	edi,eax
416	rol	edx,11
417	add	edx,eax
418	; R2 38
419	xor	edi,ebx
420	xor	edi,edx
421	lea	ecx,[4139469664+ebp*1+ecx]
422	add	ecx,edi
423	rol	ecx,16
424	mov	ebp,DWORD [40+esi]
425	mov	edi,edx
426	; R2 39
427	lea	ebx,[3200236656+ebp*1+ebx]
428	add	ecx,edx
429	xor	edi,eax
430	xor	edi,ecx
431	mov	ebp,DWORD [52+esi]
432	add	ebx,edi
433	mov	edi,ecx
434	rol	ebx,23
435	add	ebx,ecx
436	; R2 40
437	xor	edi,edx
438	xor	edi,ebx
439	lea	eax,[681279174+ebp*1+eax]
440	add	eax,edi
441	rol	eax,4
442	mov	ebp,DWORD [esi]
443	mov	edi,ebx
444	; R2 41
445	lea	edx,[3936430074+ebp*1+edx]
446	add	eax,ebx
447	xor	edi,ecx
448	xor	edi,eax
449	mov	ebp,DWORD [12+esi]
450	add	edx,edi
451	mov	edi,eax
452	rol	edx,11
453	add	edx,eax
454	; R2 42
455	xor	edi,ebx
456	xor	edi,edx
457	lea	ecx,[3572445317+ebp*1+ecx]
458	add	ecx,edi
459	rol	ecx,16
460	mov	ebp,DWORD [24+esi]
461	mov	edi,edx
462	; R2 43
463	lea	ebx,[76029189+ebp*1+ebx]
464	add	ecx,edx
465	xor	edi,eax
466	xor	edi,ecx
467	mov	ebp,DWORD [36+esi]
468	add	ebx,edi
469	mov	edi,ecx
470	rol	ebx,23
471	add	ebx,ecx
472	; R2 44
473	xor	edi,edx
474	xor	edi,ebx
475	lea	eax,[3654602809+ebp*1+eax]
476	add	eax,edi
477	rol	eax,4
478	mov	ebp,DWORD [48+esi]
479	mov	edi,ebx
480	; R2 45
481	lea	edx,[3873151461+ebp*1+edx]
482	add	eax,ebx
483	xor	edi,ecx
484	xor	edi,eax
485	mov	ebp,DWORD [60+esi]
486	add	edx,edi
487	mov	edi,eax
488	rol	edx,11
489	add	edx,eax
490	; R2 46
491	xor	edi,ebx
492	xor	edi,edx
493	lea	ecx,[530742520+ebp*1+ecx]
494	add	ecx,edi
495	rol	ecx,16
496	mov	ebp,DWORD [8+esi]
497	mov	edi,edx
498	; R2 47
499	lea	ebx,[3299628645+ebp*1+ebx]
500	add	ecx,edx
501	xor	edi,eax
502	xor	edi,ecx
503	mov	ebp,DWORD [esi]
504	add	ebx,edi
505	mov	edi,-1
506	rol	ebx,23
507	add	ebx,ecx
508	;
509	; R3 section
510	; R3 48
511	xor	edi,edx
512	or	edi,ebx
513	lea	eax,[4096336452+ebp*1+eax]
514	xor	edi,ecx
515	mov	ebp,DWORD [28+esi]
516	add	eax,edi
517	mov	edi,-1
518	rol	eax,6
519	xor	edi,ecx
520	add	eax,ebx
521	; R3 49
522	or	edi,eax
523	lea	edx,[1126891415+ebp*1+edx]
524	xor	edi,ebx
525	mov	ebp,DWORD [56+esi]
526	add	edx,edi
527	mov	edi,-1
528	rol	edx,10
529	xor	edi,ebx
530	add	edx,eax
531	; R3 50
532	or	edi,edx
533	lea	ecx,[2878612391+ebp*1+ecx]
534	xor	edi,eax
535	mov	ebp,DWORD [20+esi]
536	add	ecx,edi
537	mov	edi,-1
538	rol	ecx,15
539	xor	edi,eax
540	add	ecx,edx
541	; R3 51
542	or	edi,ecx
543	lea	ebx,[4237533241+ebp*1+ebx]
544	xor	edi,edx
545	mov	ebp,DWORD [48+esi]
546	add	ebx,edi
547	mov	edi,-1
548	rol	ebx,21
549	xor	edi,edx
550	add	ebx,ecx
551	; R3 52
552	or	edi,ebx
553	lea	eax,[1700485571+ebp*1+eax]
554	xor	edi,ecx
555	mov	ebp,DWORD [12+esi]
556	add	eax,edi
557	mov	edi,-1
558	rol	eax,6
559	xor	edi,ecx
560	add	eax,ebx
561	; R3 53
562	or	edi,eax
563	lea	edx,[2399980690+ebp*1+edx]
564	xor	edi,ebx
565	mov	ebp,DWORD [40+esi]
566	add	edx,edi
567	mov	edi,-1
568	rol	edx,10
569	xor	edi,ebx
570	add	edx,eax
571	; R3 54
572	or	edi,edx
573	lea	ecx,[4293915773+ebp*1+ecx]
574	xor	edi,eax
575	mov	ebp,DWORD [4+esi]
576	add	ecx,edi
577	mov	edi,-1
578	rol	ecx,15
579	xor	edi,eax
580	add	ecx,edx
581	; R3 55
582	or	edi,ecx
583	lea	ebx,[2240044497+ebp*1+ebx]
584	xor	edi,edx
585	mov	ebp,DWORD [32+esi]
586	add	ebx,edi
587	mov	edi,-1
588	rol	ebx,21
589	xor	edi,edx
590	add	ebx,ecx
591	; R3 56
592	or	edi,ebx
593	lea	eax,[1873313359+ebp*1+eax]
594	xor	edi,ecx
595	mov	ebp,DWORD [60+esi]
596	add	eax,edi
597	mov	edi,-1
598	rol	eax,6
599	xor	edi,ecx
600	add	eax,ebx
601	; R3 57
602	or	edi,eax
603	lea	edx,[4264355552+ebp*1+edx]
604	xor	edi,ebx
605	mov	ebp,DWORD [24+esi]
606	add	edx,edi
607	mov	edi,-1
608	rol	edx,10
609	xor	edi,ebx
610	add	edx,eax
611	; R3 58
612	or	edi,edx
613	lea	ecx,[2734768916+ebp*1+ecx]
614	xor	edi,eax
615	mov	ebp,DWORD [52+esi]
616	add	ecx,edi
617	mov	edi,-1
618	rol	ecx,15
619	xor	edi,eax
620	add	ecx,edx
621	; R3 59
622	or	edi,ecx
623	lea	ebx,[1309151649+ebp*1+ebx]
624	xor	edi,edx
625	mov	ebp,DWORD [16+esi]
626	add	ebx,edi
627	mov	edi,-1
628	rol	ebx,21
629	xor	edi,edx
630	add	ebx,ecx
631	; R3 60
632	or	edi,ebx
633	lea	eax,[4149444226+ebp*1+eax]
634	xor	edi,ecx
635	mov	ebp,DWORD [44+esi]
636	add	eax,edi
637	mov	edi,-1
638	rol	eax,6
639	xor	edi,ecx
640	add	eax,ebx
641	; R3 61
642	or	edi,eax
643	lea	edx,[3174756917+ebp*1+edx]
644	xor	edi,ebx
645	mov	ebp,DWORD [8+esi]
646	add	edx,edi
647	mov	edi,-1
648	rol	edx,10
649	xor	edi,ebx
650	add	edx,eax
651	; R3 62
652	or	edi,edx
653	lea	ecx,[718787259+ebp*1+ecx]
654	xor	edi,eax
655	mov	ebp,DWORD [36+esi]
656	add	ecx,edi
657	mov	edi,-1
658	rol	ecx,15
659	xor	edi,eax
660	add	ecx,edx
661	; R3 63
662	or	edi,ecx
663	lea	ebx,[3951481745+ebp*1+ebx]
664	xor	edi,edx
665	mov	ebp,DWORD [24+esp]
666	add	ebx,edi
667	add	esi,64
668	rol	ebx,21
669	mov	edi,DWORD [ebp]
670	add	ebx,ecx
671	add	eax,edi
672	mov	edi,DWORD [4+ebp]
673	add	ebx,edi
674	mov	edi,DWORD [8+ebp]
675	add	ecx,edi
676	mov	edi,DWORD [12+ebp]
677	add	edx,edi
678	mov	DWORD [ebp],eax
679	mov	DWORD [4+ebp],ebx
680	mov	edi,DWORD [esp]
681	mov	DWORD [8+ebp],ecx
682	mov	DWORD [12+ebp],edx
683	cmp	edi,esi
684	jae	NEAR L$000start
685	pop	eax
686	pop	ebx
687	pop	ebp
688	pop	edi
689	pop	esi
690	ret
691%else
692; Work around https://bugzilla.nasm.us/show_bug.cgi?id=3392738
693ret
694%endif
695