 da0f8353ac
			
		
	
	da0f8353ac
	
	
	
		
			
			git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@1924 ec53bebd-3082-4978-b11e-865c3cabbd6b
		
			
				
	
	
		
			68 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Raku
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Raku
		
	
	
	
	
	
| #!/usr/local/bin/perl
 | |
| 
 | |
| $L="edi";
 | |
| $R="esi";
 | |
| 
 | |
| sub des_encrypt3
 | |
| 	{
 | |
| 	local($name,$enc)=@_;
 | |
| 
 | |
| 	&function_begin($name,4);
 | |
| 
 | |
| 	&comment("");
 | |
| 	&comment("Load the data words");
 | |
| 	&mov("ebx",&wparam(0));
 | |
| 	&mov($L,&DWP(0,"ebx","",0));
 | |
| 	&mov($R,&DWP(4,"ebx","",0));
 | |
| 
 | |
| 	&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));
 | |
| 		}
 | |
| 	&push(($enc)?"1":"0");
 | |
| 	&push("eax");
 | |
| 	&push("ebx");
 | |
| 	&call("des_encrypt2");
 | |
| 	&push(($enc)?"0":"1");
 | |
| 	&push("edi");
 | |
| 	&push("ebx");
 | |
| 	&call("des_encrypt2");
 | |
| 	&push(($enc)?"1":"0");
 | |
| 	&push("esi");
 | |
| 	&push("ebx");
 | |
| 	&call("des_encrypt2");
 | |
| 
 | |
| 	&mov($L,&DWP(0,"ebx","",0));
 | |
| 	&add("esp",36);
 | |
| 	&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);
 | |
| 
 | |
| 	&function_end($name);
 | |
| 	}
 | |
| 
 | |
| 
 |