Import of old SSLeay release: SSLeay 0.8.1b
[openssl.git] / crypto / des / asm / desboth.pl
1 #!/usr/local/bin/perl
2 \r
3 $L="edi";\r
4 $R="esi";\r
5 \r
6 sub des_encrypt3\r
7         {\r
8         local($name,$enc)=@_;\r
9 \r
10         &function_begin($name,4,"");\r
11 \r
12         &comment("");\r
13         &comment("Load the data words");\r
14         &mov("ebx",&wparam(0));\r
15         &mov($L,&DWP(0,"ebx","",0));\r
16         &mov($R,&DWP(4,"ebx","",0));\r
17 \r
18         &comment("");\r
19         &comment("IP");\r
20         &IP_new($L,$R,"edx",0);\r
21 \r
22         # put them back\r
23         \r
24         if ($enc)\r
25                 {\r
26                 &mov(&DWP(4,"ebx","",0),$R);\r
27                  &mov("eax",&wparam(1));\r
28                 &mov(&DWP(0,"ebx","",0),"edx");\r
29                  &mov("edi",&wparam(2));\r
30                  &mov("esi",&wparam(3));\r
31                 }\r
32         else\r
33                 {\r
34                 &mov(&DWP(4,"ebx","",0),$R);\r
35                  &mov("esi",&wparam(1));\r
36                 &mov(&DWP(0,"ebx","",0),"edx");\r
37                  &mov("edi",&wparam(2));\r
38                  &mov("eax",&wparam(3));\r
39                 }\r
40         &push(($enc)?"1":"0");\r
41         &push("eax");\r
42         &push("ebx");\r
43         &call("des_encrypt2");\r
44         &push(($enc)?"0":"1");\r
45         &push("edi");\r
46         &push("ebx");\r
47         &call("des_encrypt2");\r
48         &push(($enc)?"1":"0");\r
49         &push("esi");\r
50         &push("ebx");\r
51         &call("des_encrypt2");\r
52 \r
53         &mov($L,&DWP(0,"ebx","",0));\r
54         &add("esp",36);\r
55         &mov($R,&DWP(4,"ebx","",0));\r
56 \r
57         &comment("");\r
58         &comment("FP");\r
59         &FP_new($L,$R,"eax",0);\r
60 \r
61         &mov(&DWP(0,"ebx","",0),"eax");\r
62         &mov(&DWP(4,"ebx","",0),$R);\r
63 \r
64         &function_end($name);\r
65         }\r
66 \r
67 \r