diff options
author | Martin Willi <martin@strongswan.org> | 2006-05-10 07:32:34 +0000 |
---|---|---|
committer | Martin Willi <martin@strongswan.org> | 2006-05-10 07:32:34 +0000 |
commit | bc4a07a0adc9e31af75576477fbed488c31edaa4 (patch) | |
tree | 82a8ba5612c448b8db585b437fbbe38ef243a0ba /src/libfreeswan/libdes/des/asm/desboth.pl | |
parent | 37a2b616e28649b6db7c87e96b375ba1176b52cc (diff) | |
download | strongswan-bc4a07a0adc9e31af75576477fbed488c31edaa4.tar.bz2 strongswan-bc4a07a0adc9e31af75576477fbed488c31edaa4.tar.xz |
- started to rebuild source layout
Diffstat (limited to 'src/libfreeswan/libdes/des/asm/desboth.pl')
-rw-r--r-- | src/libfreeswan/libdes/des/asm/desboth.pl | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/src/libfreeswan/libdes/des/asm/desboth.pl b/src/libfreeswan/libdes/des/asm/desboth.pl new file mode 100644 index 000000000..8f939953a --- /dev/null +++ b/src/libfreeswan/libdes/des/asm/desboth.pl @@ -0,0 +1,79 @@ +#!/usr/bin/perl + +$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), (($enc)?"1":"0")); + &mov(&swtmp(1), "eax"); + &mov(&swtmp(0), "ebx"); + &call("des_encrypt2"); + &mov(&swtmp(2), (($enc)?"0":"1")); + &mov(&swtmp(1), "edi"); + &mov(&swtmp(0), "ebx"); + &call("des_encrypt2"); + &mov(&swtmp(2), (($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); + } + + |