Actually use BN when selected!
[openssl.git] / crypto / des / asm / desboth.pl
1 #!/usr/local/bin/perl
2
3 $L="edi";
4 $R="esi";
5
6 sub des_encrypt3
7         {
8         local($name,$enc)=@_;
9
10         &function_begin_B($name,"");
11         &push("ebx");
12         &mov("ebx",&wparam(0));
13
14         &push("ebp");
15         &push("esi");
16
17         &push("edi");
18
19         &comment("");
20         &comment("Load the data words");
21         &mov($L,&DWP(0,"ebx","",0));
22         &mov($R,&DWP(4,"ebx","",0));
23         &stack_push(3);
24
25         &comment("");
26         &comment("IP");
27         &IP_new($L,$R,"edx",0);
28
29         # put them back
30         
31         if ($enc)
32                 {
33                 &mov(&DWP(4,"ebx","",0),$R);
34                  &mov("eax",&wparam(1));
35                 &mov(&DWP(0,"ebx","",0),"edx");
36                  &mov("edi",&wparam(2));
37                  &mov("esi",&wparam(3));
38                 }
39         else
40                 {
41                 &mov(&DWP(4,"ebx","",0),$R);
42                  &mov("esi",&wparam(1));
43                 &mov(&DWP(0,"ebx","",0),"edx");
44                  &mov("edi",&wparam(2));
45                  &mov("eax",&wparam(3));
46                 }
47         &mov(&swtmp(2), (($enc)?"1":"0"));
48         &mov(&swtmp(1), "eax");
49         &mov(&swtmp(0), "ebx");
50         &call("des_encrypt2");
51         &mov(&swtmp(2), (($enc)?"0":"1"));
52         &mov(&swtmp(1), "edi");
53         &mov(&swtmp(0), "ebx");
54         &call("des_encrypt2");
55         &mov(&swtmp(2), (($enc)?"1":"0"));
56         &mov(&swtmp(1), "esi");
57         &mov(&swtmp(0), "ebx");
58         &call("des_encrypt2");
59
60         &stack_pop(3);
61         &mov($L,&DWP(0,"ebx","",0));
62         &mov($R,&DWP(4,"ebx","",0));
63
64         &comment("");
65         &comment("FP");
66         &FP_new($L,$R,"eax",0);
67
68         &mov(&DWP(0,"ebx","",0),"eax");
69         &mov(&DWP(4,"ebx","",0),$R);
70
71         &pop("edi");
72         &pop("esi");
73         &pop("ebp");
74         &pop("ebx");
75         &ret();
76         &function_end_B($name);
77         }
78
79