cLogging::SetModuleOption(LCLASS(7,0x20<<4),false); // Nagra L_SYS_CPUSTATS
   cLogging::SetModuleOption(LCLASS(16,0x20<<5),false); // Viacsess L_SYS_DISASM
   unsigned char ecm[4096];
-  ReadRaw(argv[6],ecm,sizeof(ecm));
+  int len=ReadRaw(argv[6],ecm,sizeof(ecm));
     
   int caid=strtol(argv[3],0,0);
   int provid=strtol(argv[4],0,0);
   while((sys=cSystems::FindBySysId(caid,false,lastPri))) {
     lastPri=sys->Pri();
     printf("processing with module '%s'\n",sys->Name());
-    bool res=sys->ProcessECM(&ecmD,ecm);
-    if(res) {
-      printf("resulting CW: ");
-      SDump(sys->CW(),16);
+    bool res=false;
+    for(int i=0; i<len;) {
+      int s=SCT_LEN(&ecm[i]);
+      if(sys->ProcessECM(&ecmD,&ecm[i])) {
+        printf("resulting CW: ");
+        SDump(sys->CW(),16);
+        res=true;
+        }
+      i+=s;
       }
     delete sys;
     if(res) break;