home *** CD-ROM | disk | FTP | other *** search
/ telefisk.org / virusCollection.lzx / VirusResearch / Vaginitis / decodestd.e < prev    next >
Text File  |  2011-12-20  |  2KB  |  124 lines

  1. MODULE    'dos/doshunks'
  2. MODULE    'tools/file'
  3.  
  4.  
  5. DEF    hunks=NIL,
  6.     cdh=NIL,
  7.     lst=NIL,
  8.     code=NIL,
  9.     firstcode=NIL,
  10.     newfile[256]:STRING,
  11.     buffer=NIL,
  12.     size=NIL
  13.  
  14. PROC main()
  15.      DEF     lock=NIL
  16.  
  17.     size:=FileLength(arg)
  18.     StringF(newfile,'\s.dec',arg)
  19.     lock:=Open(arg,OLDFILE)
  20.     buffer:=New(size)
  21.     Read(lock,buffer,size)
  22.     Close(lock)
  23.  
  24.     MOVE.L    size,D0
  25.     MOVEA.L    buffer,A0
  26.     MOVEQ    #0,D2
  27.     MOVEQ    #0,D3
  28.  
  29.     MOVEA.L    A0,A2
  30.     ADDA.L    D0,A2
  31.  
  32.     CMPI.L    #$3F3,(A0)+
  33.     BEQ    namelp
  34.  
  35.     WriteF('Not an executable\n')
  36.     CleanUp()
  37.  
  38. exit:    MOVE.L    D1,lst
  39.     MOVE.L    D2,hunks
  40.     MOVE.L    D3,cdh
  41.     MOVE.L    D0,code
  42.     eind()
  43. namelp:
  44.     CMPA.L    A0,A2
  45.     BCS    exit
  46.     MOVE.L    (A0)+,D0
  47.     BEQ    endnam
  48.     LSL.L    #2,D0
  49.     ADDA.L    D0,A0
  50.     BRA    namelp
  51. endnam:    MOVE.L    (A0)+,D0
  52.     LSL.L    #2,D0
  53.     ADDQ.L    #8,D0
  54.     ADDA.L    D0,A0
  55.     MOVEQ    #0,D0
  56.  
  57. dohunk:
  58.     CMPA.L    A0,A2
  59.     BCS.B    exit
  60.  
  61.     MOVE.L    (A0),D0
  62.  
  63.     AND.L    #$00FFFFFF,D0
  64.     CMP.L    #$3E9,D0
  65.     BNE    doother
  66.  
  67.     ADDQ.L    #8,A0
  68.     MOVE.L    A0,firstcode
  69.  
  70.     decode()
  71.  
  72.     eind()
  73.  
  74. doother:
  75.     MOVE.W    (A0)+,D0
  76.     CMPA.L    A0,A2
  77.     BCS    exit
  78.     CMP.W    #$3F2,D0
  79.     BNE    doother
  80.  
  81. doend:
  82.     ->ADDA.L    #4,A0
  83.     ADD.L    #1,D2
  84.     ->MOVE.L    (A0)+,D0
  85.     BRA    dohunk
  86.  
  87. ENDPROC
  88.  
  89. PROC eind()
  90.     WriteF('hunks: \d codehunks: \d last size: \d last code: $\h\n',hunks,cdh,lst,code)
  91.     ->WriteF('\s\n',text)
  92.     writefile(newfile,buffer,size)
  93.     CleanUp()
  94. ENDPROC
  95.  
  96. PROC decode()
  97.     DEF    t=NIL,
  98.         i=NIL
  99.  
  100.     MOVEA.L    firstcode,A0
  101.     MOVE.L    -4(A0),D0
  102.     LSL.L    #2,D0
  103.     ADDA.L    D0,A0
  104.  
  105.     LEA    -768(A0),A0
  106.     MOVE.L    (A0),t
  107.  
  108.     WriteF('\h\n',t)
  109.  
  110. /*
  111.     LEA    -740(A0),A1    ->49
  112.     LEA    -74(A0),A2    ->54
  113.  
  114.     MOVE.W    (A2),D0
  115.     MOVE.L    #$00004e75,D1
  116.  
  117. lp:    EOR.W    D0,(A1)+
  118.     ADD.L    D1,D0
  119.     CMPA.L    A1,A2
  120.     BNE.B    lp
  121. */
  122.  
  123. ENDPROC
  124.