Mini Mutation Engine v1.0 12-01-94 ArChung Lai, Chung-Li, Taiwan

Super Mini Mutation Engine: [Total length 275 bytes]

[Preface:]
        At the beginning of the year, classmate kk suddenly gave me a
        mutation engine to play with. I felt it was a good idea, but it's
        too fat. After I got my credit, still nobody has a smaller
        engine, so I wrote one of my own.  Suddenly, I feel it is so
        tiny.  Actually, I can make it smaller by about 100 bytes or so, I
        merely made it more fun...

[parameter:]
        extrn   mime:near, emime:near

   ES:0  => store decryption routine + encrypted stuff segment (from ES:0)
   DS:SI => point to stuff that u want encrypted (generally point to the
            beginning of the program)
   CX = the length of stuff that you want encrypted (to get total
        length via OFFSET EMIME )
   BX = offset of decrypt routine

        the length of the decryption routine made by this engine will be
        within 150 bytes, so you merely allocate the size of memory:
        the length of stuff that you want encrypted + the length of this
        engine + 150 bytes or so.  (notice on TSR type)

[return:]

   DS:DX => decryption stuff + encrypted stuff
            DS:DX points to decryption stuff + encrypted stuff after return,
            this is convenient for the Int 21h writing function.
   CX = the length of decryption stuff + encrypted stuff
        It's also convenient for the Int 21h writing function.
   Registers are preserved aside from the above registers and AX.

[note:]

        You don't need to disassemble it with Sourcer, I will release
        the source code and append the associated development document for
        DIY. This is 'cause I have never released stuff that appended
        source code, it was modified and released once more by some
        kids, they even modified the version.

reference: 8086/8088 Microprocsssor, architecture, programming and
           interface tech (Chapter 3)