1656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#!/usr/local/bin/perl 2656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 3656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project$L="edi"; 4656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project$R="esi"; 5656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 6656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectsub DES_encrypt3 7656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project { 8656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project local($name,$enc)=@_; 9656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 10656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project &function_begin_B($name,""); 11656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project &push("ebx"); 12656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project &mov("ebx",&wparam(0)); 13656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 14656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project &push("ebp"); 15656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project &push("esi"); 16656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 17656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project &push("edi"); 18656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 19656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project &comment(""); 20656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project &comment("Load the data words"); 21656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project &mov($L,&DWP(0,"ebx","",0)); 22656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project &mov($R,&DWP(4,"ebx","",0)); 23656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project &stack_push(3); 24656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 25656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project &comment(""); 26656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project &comment("IP"); 27656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project &IP_new($L,$R,"edx",0); 28656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 29656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project # put them back 30656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 31656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project if ($enc) 32656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project { 33656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project &mov(&DWP(4,"ebx","",0),$R); 34656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project &mov("eax",&wparam(1)); 35656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project &mov(&DWP(0,"ebx","",0),"edx"); 36656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project &mov("edi",&wparam(2)); 37656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project &mov("esi",&wparam(3)); 38656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project } 39656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project else 40656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project { 41656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project &mov(&DWP(4,"ebx","",0),$R); 42656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project &mov("esi",&wparam(1)); 43656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project &mov(&DWP(0,"ebx","",0),"edx"); 44656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project &mov("edi",&wparam(2)); 45656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project &mov("eax",&wparam(3)); 46656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project } 47656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project &mov(&swtmp(2), (DWC(($enc)?"1":"0"))); 48656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project &mov(&swtmp(1), "eax"); 49656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project &mov(&swtmp(0), "ebx"); 50656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project &call("DES_encrypt2"); 51656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project &mov(&swtmp(2), (DWC(($enc)?"0":"1"))); 52656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project &mov(&swtmp(1), "edi"); 53656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project &mov(&swtmp(0), "ebx"); 54656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project &call("DES_encrypt2"); 55656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project &mov(&swtmp(2), (DWC(($enc)?"1":"0"))); 56656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project &mov(&swtmp(1), "esi"); 57656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project &mov(&swtmp(0), "ebx"); 58656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project &call("DES_encrypt2"); 59656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 60656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project &stack_pop(3); 61656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project &mov($L,&DWP(0,"ebx","",0)); 62656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project &mov($R,&DWP(4,"ebx","",0)); 63656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 64656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project &comment(""); 65656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project &comment("FP"); 66656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project &FP_new($L,$R,"eax",0); 67656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 68656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project &mov(&DWP(0,"ebx","",0),"eax"); 69656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project &mov(&DWP(4,"ebx","",0),$R); 70656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 71656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project &pop("edi"); 72656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project &pop("esi"); 73656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project &pop("ebp"); 74656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project &pop("ebx"); 75656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project &ret(); 76656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project &function_end_B($name); 77656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project } 78656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 79656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 80