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