From 0b7609dd1b4a944c20f3f11102eadc61d9abbaef Mon Sep 17 00:00:00 2001
From: leslie <unknown>
Date: Sun, 8 Jun 2008 21:36:34 +0800
Subject: [PATCH] nagra-0101: map39/map3a

---
 systems/nagra/nagra2-0101.c | 2 ++
 systems/nagra/nagra2-0501.c | 5 -----
 systems/nagra/nagra2.c      | 7 +++++++
 3 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/systems/nagra/nagra2-0101.c b/systems/nagra/nagra2-0101.c
index 2b92790..d45bbc9 100644
--- a/systems/nagra/nagra2-0101.c
+++ b/systems/nagra/nagra2-0101.c
@@ -855,6 +855,7 @@ bool cN2Prov0101::ProcessMap(int f)
       if(l>wordsize) { l=wordsize; dl=l<<3; }
       // fall through
     case 0x32:
+    case 0x39:
     case 0x3b:
       if(l>34) { l=34; dl=34<<3; }
       GetMem(HILO(0x44),tmp,dl,0);
@@ -863,6 +864,7 @@ bool cN2Prov0101::ProcessMap(int f)
     case 0x21:
     case 0x30:
     case 0x31:
+    case 0x3a:
     case 0x43:
       DoMap(f);
       break;
diff --git a/systems/nagra/nagra2-0501.c b/systems/nagra/nagra2-0501.c
index 083c3bd..d249d76 100644
--- a/systems/nagra/nagra2-0501.c
+++ b/systems/nagra/nagra2-0501.c
@@ -49,11 +49,6 @@ void cMap0501::DoMap(int f, unsigned char *data, int l)
       I.GetLE(data,l<<3);
       MonMul(B,I,B);
       break;
-    case 0x3a:
-      MonInit();
-      MonMul(B,A,B);
-      MonMul(B,A,B);
-      break;
     default:
       if(!cMapCore::DoMap(f,data,l))
         PRINTF(L_SYS_MAP,"%04x: unsupported call %02x",mId,f);
diff --git a/systems/nagra/nagra2.c b/systems/nagra/nagra2.c
index baf7c98..c3b6699 100644
--- a/systems/nagra/nagra2.c
+++ b/systems/nagra/nagra2.c
@@ -684,6 +684,13 @@ bool cMapCore::DoMap(int f, unsigned char *data, int l)
     case COPY_D_C:
       last=3; BN_copy(C,D); cycles=462+(8*l1+3)/5*5-6; break;
 
+    case 0x39:
+    case 0x3a:
+      MonInit();
+      if(f==0x39) I.GetLE(data,wordsize<<3);
+      MonMul(B,(f==0x39?I:A),B);
+      MonMul(B,A,B);
+      break;
     case 0x43: // init SHA1
       SHA1_Init(&sctx);
       break;
-- 
2.39.5