Following the license change, modify the boilerplates in crypto/des/
[openssl.git] / crypto / des / asm / desboth.pl
1 #! /usr/bin/env perl
2 # Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
3 #
4 # Licensed under the Apache License 2.0 (the "License").  You may not use
5 # this file except in compliance with the License.  You can obtain a copy
6 # in the file LICENSE in the source distribution or at
7 # https://www.openssl.org/source/license.html
8
9
10 $L="edi";
11 $R="esi";
12
13 sub DES_encrypt3
14         {
15         local($name,$enc)=@_;
16
17         &function_begin_B($name,"");
18         &push("ebx");
19         &mov("ebx",&wparam(0));
20
21         &push("ebp");
22         &push("esi");
23
24         &push("edi");
25
26         &comment("");
27         &comment("Load the data words");
28         &mov($L,&DWP(0,"ebx","",0));
29         &mov($R,&DWP(4,"ebx","",0));
30         &stack_push(3);
31
32         &comment("");
33         &comment("IP");
34         &IP_new($L,$R,"edx",0);
35
36         # put them back
37
38         if ($enc)
39                 {
40                 &mov(&DWP(4,"ebx","",0),$R);
41                  &mov("eax",&wparam(1));
42                 &mov(&DWP(0,"ebx","",0),"edx");
43                  &mov("edi",&wparam(2));
44                  &mov("esi",&wparam(3));
45                 }
46         else
47                 {
48                 &mov(&DWP(4,"ebx","",0),$R);
49                  &mov("esi",&wparam(1));
50                 &mov(&DWP(0,"ebx","",0),"edx");
51                  &mov("edi",&wparam(2));
52                  &mov("eax",&wparam(3));
53                 }
54         &mov(&swtmp(2), (DWC(($enc)?"1":"0")));
55         &mov(&swtmp(1), "eax");
56         &mov(&swtmp(0), "ebx");
57         &call("DES_encrypt2");
58         &mov(&swtmp(2), (DWC(($enc)?"0":"1")));
59         &mov(&swtmp(1), "edi");
60         &mov(&swtmp(0), "ebx");
61         &call("DES_encrypt2");
62         &mov(&swtmp(2), (DWC(($enc)?"1":"0")));
63         &mov(&swtmp(1), "esi");
64         &mov(&swtmp(0), "ebx");
65         &call("DES_encrypt2");
66
67         &stack_pop(3);
68         &mov($L,&DWP(0,"ebx","",0));
69         &mov($R,&DWP(4,"ebx","",0));
70
71         &comment("");
72         &comment("FP");
73         &FP_new($L,$R,"eax",0);
74
75         &mov(&DWP(0,"ebx","",0),"eax");
76         &mov(&DWP(4,"ebx","",0),$R);
77
78         &pop("edi");
79         &pop("esi");
80         &pop("ebp");
81         &pop("ebx");
82         &ret();
83         &function_end_B($name);
84         }
85
86