| Viewing file:  desboth.pl (1.66 KB)      -rw-r--r-- Select action/file-type:
 
  (+) |  (+) |  (+) | Code (+) | Session (+) |  (+) | SDB (+) |  (+) |  (+) |  (+) |  (+) |  (+) | 
 
#! /usr/bin/env perl# Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
 #
 # Licensed under the Apache License 2.0 (the "License").  You may not use
 # this file except in compliance with the License.  You can obtain a copy
 # in the file LICENSE in the source distribution or at
 # https://www.openssl.org/source/license.html
 
 
 $L="edi";
 $R="esi";
 
 sub DES_encrypt3
 {
 local($name,$enc)=@_;
 
 &function_begin_B($name,"");
 &push("ebx");
 &mov("ebx",&wparam(0));
 
 &push("ebp");
 &push("esi");
 
 &push("edi");
 
 &comment("");
 &comment("Load the data words");
 &mov($L,&DWP(0,"ebx","",0));
 &mov($R,&DWP(4,"ebx","",0));
 &stack_push(3);
 
 &comment("");
 &comment("IP");
 &IP_new($L,$R,"edx",0);
 
 # put them back
 
 if ($enc)
 {
 &mov(&DWP(4,"ebx","",0),$R);
 &mov("eax",&wparam(1));
 &mov(&DWP(0,"ebx","",0),"edx");
 &mov("edi",&wparam(2));
 &mov("esi",&wparam(3));
 }
 else
 {
 &mov(&DWP(4,"ebx","",0),$R);
 &mov("esi",&wparam(1));
 &mov(&DWP(0,"ebx","",0),"edx");
 &mov("edi",&wparam(2));
 &mov("eax",&wparam(3));
 }
 &mov(&swtmp(2),    (DWC(($enc)?"1":"0")));
 &mov(&swtmp(1),    "eax");
 &mov(&swtmp(0),    "ebx");
 &call("DES_encrypt2");
 &mov(&swtmp(2),    (DWC(($enc)?"0":"1")));
 &mov(&swtmp(1),    "edi");
 &mov(&swtmp(0),    "ebx");
 &call("DES_encrypt2");
 &mov(&swtmp(2),    (DWC(($enc)?"1":"0")));
 &mov(&swtmp(1),    "esi");
 &mov(&swtmp(0),    "ebx");
 &call("DES_encrypt2");
 
 &stack_pop(3);
 &mov($L,&DWP(0,"ebx","",0));
 &mov($R,&DWP(4,"ebx","",0));
 
 &comment("");
 &comment("FP");
 &FP_new($L,$R,"eax",0);
 
 &mov(&DWP(0,"ebx","",0),"eax");
 &mov(&DWP(4,"ebx","",0),$R);
 
 &pop("edi");
 &pop("esi");
 &pop("ebp");
 &pop("ebx");
 &ret();
 &function_end_B($name);
 }
 
 
 
 |