home *** CD-ROM | disk | FTP | other *** search
/ Hacker 2 / HACKER2.mdf / virus / 40hex_3.004 < prev    next >
Text File  |  1995-01-03  |  51KB  |  1,710 lines

  1.  40Hex Issue 3                                                      0004
  2.  
  3.                       The Strange Case of Validate
  4.  
  5.      - Fall to your knees, begging your way out of this disease.
  6.  
  7.      Well we all know what a dick John Mcafee is.  Well with his product
  8.      SCAN comes a program VALIDATE.  I noticed when I took a close look
  9.      at the internal workings of this program (while working on a little
  10.      revenge project) that there is text in the program.  The strings
  11.      read
  12.  
  13.      "Enter password now"
  14.      "Access denied"
  15.  
  16.      Well this got me going, what is this??? Well this brings up our
  17.      first 40Hex challenge.  I am including a dissassembly of validate.
  18.      Here it is:
  19.  
  20. -------------------------------------------------------------------------------
  21.  
  22. data_1e         equ     100h
  23. data_2e         equ     102h
  24. data_3e         equ     2Ch
  25. data_4e         equ     14h
  26. data_5e         equ     16h
  27. data_6e         equ     18h
  28. data_7e         equ     1Ah
  29. data_8e         equ     47h
  30. data_9e         equ     49h
  31. data_10e        equ     4Ah
  32. data_11e        equ     59h
  33.   
  34. seg_a           segment byte public
  35.                 assume  cs:seg_a, ds:seg_a
  36.   
  37.   
  38.                 org     100h
  39.   
  40. validate        proc    far
  41.   
  42. start:
  43.                 jmp     loc_96
  44.                 db      0Dh, '   ', 0Dh, 0Ah, 'VALIDATE 0'
  45.                 db      '.3 '
  46. copyright       db      'Copyright 1988-89 by McAfee Asso'
  47.                 db      'ciates.'
  48.                 db      '  (408) 988-3832', 0Dh, 0Ah, 0Dh
  49.                 db      0Ah, 'Written by Dennis Yelle', 0Dh
  50.                 db      0Ah, 0Dh, 0Ah
  51.                 db      1Ah
  52. data_19         db      30h                                     dexed access)
  53.                 db      '123456789ABCDEF'
  54.                 db      10h, 0Fh, 0Dh, 8, 6, 3
  55.                 db      1, 0, 0C8h, 10h, 0Ch, 5
  56.                 db      0, 0C8h, 10h, 0Fh, 2, 0
  57.                 db      0C8h, 10h, 0Fh, 0Eh, 7, 6
  58.                 db      0, 0C8h, 10h, 0Fh, 0Dh, 0
  59.                 db      0C8h
  60. loc_1:
  61.                 mov     al,1
  62.                 mov     ah,4Ch
  63.                 int     21h
  64.                 db      0CDh, 20h
  65. loc_2:
  66.                 jmp     short loc_2
  67.   
  68. validate        endp
  69.   
  70. sub_1           proc    near
  71.                 mov     dx,si
  72. loc_3:
  73.                 lodsb
  74.                 cmp     al,1
  75.                 ja      loc_3
  76.                 pushf
  77.                 mov     cx,si
  78.                 sub     cx,dx
  79.                 dec     cx
  80.                 mov     ah,40h
  81.                 mov     bx,1
  82.                 int     21h
  83.                 popf
  84.                 jz      loc_1
  85.                 retn
  86. sub_1           endp
  87.   
  88. sub_2           proc    near
  89.                 mov     bp,sp
  90.                 xchg    si,[bp]
  91.                 call    sub_1
  92.                 xchg    si,[bp]
  93.                 retn
  94. sub_2           endp
  95.   
  96.                 db      0B4h, 40h, 0BBh, 2, 0, 0B9h
  97.                 db      48h, 0, 0BAh, 9, 1, 0CDh
  98.                 db      21h, 0A1h, 2, 0, 8Ch, 0CBh
  99.                 db      29h, 0D8h, 3Dh, 0, 10h, 77h
  100.                 db      52h, 0E8h, 0D8h, 0FFh
  101.                 db      0Dh, 0Ah, ' Sorry, there is not e'
  102.                 db      'nough memory available.', 0Dh, 0Ah
  103.                 db      ' I need 66000 bytes of RAM.', 0Dh
  104.                 db      0Ah
  105.                 db      1, 0BEh, 80h, 0, 0ACh, 0Ah
  106.                 db      0C0h
  107.                 db      74h, 9
  108. loc_4:
  109.                 lodsb
  110.                 cmp     al,20h
  111.                 je      loc_4
  112.                 cmp     al,0Dh
  113.                 jne     loc_6
  114. loc_5:
  115.                 jmp     loc_10
  116. loc_6:
  117.                 dec     si
  118.                 mov     data_33,si
  119.                 push    si
  120.                 mov     si,197h
  121.                 call    sub_9
  122.                 mov     di,666h
  123.                 call    sub_10
  124.                 mov     si,186h
  125.                 call    sub_9
  126.                 mov     di,866h
  127.                 call    sub_10
  128.                 call    sub_2
  129.                 and     [bx+si],ah
  130.                 and     [bx+si],ah
  131.                 and     [bx+si],ah
  132.                 and     [bx+si],ah
  133.                 and     [bx+si],ah
  134.                 inc     si
  135.                 db      'ile Name:  '
  136.                 db      0, 5Eh
  137. loc_7:
  138.                 lodsb
  139.                 cmp     al,20h
  140.                 jg      loc_7
  141.                 push    ax
  142.                 xor     al,al
  143.                 mov     [si-1],al
  144.                 mov     bx,1
  145.                 mov     cx,si
  146.                 dec     cx
  147.                 mov     dx,data_33
  148.                 sub     cx,dx
  149.                 mov     ah,40h
  150.                 int     21h
  151.                 push    si
  152.                 call    sub_8
  153.                 mov     dx,data_33
  154.                 mov     ax,3D00h
  155.                 int     21h
  156.                 jc      loc_11
  157.                 mov     data_32,ax
  158. ;*              call    sub_3
  159.                 db      0E8h, 0B8h, 0
  160.                 mov     ah,3Eh
  161.                 mov     bx,data_32
  162.                 int     21h
  163.                 pop     si
  164.                 pop     ax
  165.                 cmp     al,0Dh
  166.                 je      loc_9
  167. loc_8:
  168.                 lodsb
  169.                 cmp     al,20h
  170.                 je      loc_8
  171.                 cmp     al,0Dh
  172.                 je      loc_9
  173.                 call    sub_8
  174.                 jmp     loc_6
  175. loc_9:
  176.                 mov     ax,4C00h
  177.                 int     21h
  178. loc_10:
  179.                 mov     dx,2E6h
  180.                 mov     cx,84h
  181.                 jmp     loc_17
  182. loc_11:
  183.                 mov     dx,5FBh
  184.                 mov     cx,29h
  185.                 jmp     loc_17
  186.                 db      'This program prints the validati'
  187.                 db      'on information for a file.', 0Dh
  188.                 db      0Ah, 'Examples:', 0Dh, 0Ah, '    '
  189.                 db      '      VALIDATE SCAN.EXE', 0Dh, 0Ah
  190.                 db      '          VALIDATE SCANRES.EXE', 0Dh
  191.                 db      0Ah
  192.   
  193. sub_3           proc    near
  194.                 xor     ax,ax
  195.                 mov     data_34,ax
  196.                 mov     data_35,ax
  197. loc_12:
  198.                 mov     bx,data_32
  199.                 mov     dx,0A66h
  200.                 mov     cx,8000h
  201.                 mov     ah,3Fh
  202.                 int     21h
  203.                 jnc     loc_13
  204.                 jmp     loc_16
  205. loc_13:
  206.                 or      ax,ax
  207.                 jz      loc_14
  208.                 mov     dx,ax
  209.                 push    dx
  210.                 mov     si,0A66h
  211.                 mov     di,666h
  212.                 mov     cx,data_34
  213.                 call    sub_11
  214.                 mov     data_34,cx
  215.                 pop     dx
  216.                 mov     si,0A66h
  217.                 mov     di,866h
  218.                 mov     cx,data_35
  219.                 call    sub_11
  220.                 mov     data_35,cx
  221.                 jmp     short loc_12
  222. loc_14:
  223.                 call    sub_2
  224.                 and     [bx+si],ah
  225.                 and     [bx+si],ah
  226.                 and     [bx+si],ah
  227.                 and     [bx+si],ah
  228.                 and     [bx+si],ah
  229.                 and     [bx+si],ah
  230.                 and     [bx+si],ah
  231.                 and     [bp+di+69h],dl
  232.                 jp      $+67h
  233.                 cmp     ah,[bx+si]
  234.                 and     [bx+si],al
  235.                 mov     ax,4202h
  236.                 mov     bx,data_32
  237.                 xor     cx,cx
  238.                 xor     dx,dx
  239.                 int     21h
  240.                 jnc     $+0Fh
  241.                 call    sub_2
  242.                 jnz     $+70h
  243.                 db      6Bh, 6Eh, 6Fh, 77h, 6Eh, 0
  244.                 db      0EBh, 3, 0E8h, 59h, 1, 0E8h
  245.                 db      0D1h, 0FDh
  246.                 db      0Dh, 0Ah, '               Date:  '
  247.                 db      0, 0B8h, 0, 57h, 8Bh, 1Eh
  248.                 db      4Eh, 6, 0CDh, 21h, 73h, 8
  249.                 db      0BEh, 0DDh, 3, 0E8h, 8Fh, 0FDh
  250.                 db      0EBh, 26h, 52h, 8Bh, 0C2h, 0B1h
  251.                 db      5, 0D3h, 0E8h, 25h, 0Fh, 0
  252.                 db      0E8h, 70h, 1, 0E8h, 98h, 0
  253.                 db      58h, 50h, 25h, 1Fh, 0, 0E8h
  254.                 db      65h, 1, 0E8h, 8Dh, 0, 58h
  255.                 db      0B1h, 9, 0D3h, 0E8h, 5, 0BCh
  256.                 db      7, 0E8h, 57h, 1, 0E8h, 7Ch
  257.                 db      0FDh
  258.                 db      0Dh, 0Ah, 'File Authentication:', 0Dh
  259.                 db      0Ah, '     Check Method 1 - '
  260.                 db      0, 8Bh, 0Eh, 52h, 6, 0E8h
  261.                 db      27h, 0, 0E8h, 43h, 0FDh
  262.                 db      0Dh, 0Ah, '     Check Method 2 - '
  263.                 db      0, 8Bh, 0Eh, 54h, 6, 0E8h
  264.                 db      4, 0, 0E8h, 27h, 0, 0C3h
  265.                 db      51h, 89h, 0C8h, 88h, 0E0h, 0E8h
  266.                 db      1, 0
  267.                 db      58h
  268.   
  269.   
  270. sub_4:
  271.                 mov     bx,ax
  272.                 mov     cl,4
  273.                 shr     bx,cl
  274.                 call    sub_5
  275.                 mov     bx,ax
  276.   
  277.   
  278. sub_5:
  279.                 and     bx,0Fh
  280.                 mov     dl,data_19[bx]
  281.   
  282.   
  283. sub_6:
  284. loc_15:
  285.                 push    ax
  286.                 mov     ah,2
  287.                 int     21h
  288.                 pop     ax
  289.                 retn
  290.   
  291.   
  292. sub_7:
  293.                 mov     dl,2Dh
  294.                 jmp     short loc_15
  295.   
  296.   
  297. sub_8:
  298.                 mov     dl,0Dh
  299.                 call    sub_6
  300.                 mov     dl,0Ah
  301.                 jmp     short loc_15
  302. loc_16:
  303.                 mov     dx,624h
  304.                 mov     cx,29h
  305. loc_17:
  306.                 mov     bx,2
  307.                 push    ax
  308.                 mov     ah,40h
  309.                 int     21h
  310.                 jc      loc_18
  311.                 pop     ax
  312. loc_18:
  313.                 mov     ah,4Ch
  314.                 int     21h
  315. sub_3           endp
  316.   
  317.   
  318.   
  319. sub_9           proc    near
  320.                 xor     bx,bx
  321.                 xor     cx,cx
  322.                 inc     si
  323.                 lodsb
  324. loc_19:
  325.                 mov     cl,al
  326.                 mov     ax,1
  327.                 shl     ax,cl
  328.                 or      bx,ax
  329.                 lodsb
  330.                 cmp     al,0C8h
  331.                 jb      loc_19
  332.                 mov     cl,8
  333.                 mov     di,656h
  334.                 mov     ax,bx
  335. loc_20:
  336.                 stosw
  337.                 shr     ax,1
  338.                 jnc     loc_21
  339.                 xor     ax,bx
  340. loc_21:
  341.                 dec     cl
  342.                 jnz     loc_20
  343.                 retn
  344. sub_9           endp
  345.   
  346.   
  347. sub_10          proc    near
  348.                 mov     si,656h
  349.                 xor     dx,dx
  350. loc_22:
  351.                 mov     cx,dx
  352.                 mov     bx,si
  353.                 xor     ax,ax
  354. loc_23:
  355.                 shl     cl,1
  356.                 jnc     loc_24
  357.                 xor     ax,[bx]
  358. loc_24:
  359.                 add     bx,2
  360.                 or      cl,cl
  361.                 jnz     loc_23
  362.                 stosw
  363.                 inc     dl
  364.                 jnz     loc_22
  365.                 retn
  366. sub_10          endp
  367.   
  368. sub_11          proc    near
  369. loc_25:
  370.                 lodsb
  371.                 mov     bl,cl
  372.                 xor     bl,al
  373.                 xor     bh,bh
  374.                 mov     cl,ch
  375.                 mov     ch,0
  376.                 add     bx,bx
  377.                 xor     cx,[bx+di]
  378.                 dec     dx
  379.                 jnz     loc_25
  380.                 retn
  381. sub_11          endp
  382.   
  383. data_27         dw      4240h
  384. data_28         dw      0Fh
  385. data_29         dw      3E8h
  386. data_30         dw      0Ah
  387.   
  388.   
  389. sub_12          proc    near
  390.                 cmp     dx,data_28
  391.                 jb      loc_32
  392.                 ja      loc_26
  393.                 cmp     ax,data_27
  394.                 jb      loc_32
  395. loc_26:
  396.                 mov     bx,data_27
  397.                 mov     cx,data_28
  398.                 xor     si,si
  399. loc_27:
  400.                 inc     si
  401.                 shl     bx,1
  402.                 rcl     cx,1
  403.                 jno     loc_27
  404.                 xor     di,di
  405. loc_28:
  406.                 shl     di,1
  407.                 cmp     dx,cx
  408.                 jb      loc_30
  409.                 ja      loc_29
  410.                 cmp     ax,bx
  411.                 jb      loc_30
  412. loc_29:
  413.                 sub     ax,bx
  414.                 sbb     dx,cx
  415.                 inc     di
  416. loc_30:
  417.                 shr     cx,1
  418.                 rcr     bx,1
  419.                 dec     si
  420.                 jge     loc_28
  421.                 push    dx
  422.                 push    ax
  423.                 mov     ax,di
  424.                 xor     dx,dx
  425.                 call    sub_14
  426.                 mov     al,2Ch
  427.                 call    sub_19
  428.                 pop     ax
  429.                 pop     dx
  430.                 div     data_29
  431.                 push    dx
  432.                 call    sub_15
  433.                 jmp     short loc_33
  434.   
  435.   
  436. sub_13:
  437.                 xor     dx,dx
  438.                 cmp     ax,2710h
  439.                 jae     loc_32
  440.                 cmp     ax,3E8h
  441.                 jb      loc_32
  442.                 div     data_29
  443.                 or      ax,ax
  444.                 push    dx
  445.                 jz      loc_31
  446.                 call    sub_16
  447. loc_31:
  448.                 pop     ax
  449.                 jmp     short loc_34
  450.   
  451.   
  452. sub_14:
  453. loc_32:
  454.                 div     data_29
  455.                 push    dx
  456.                 or      ax,ax
  457.                 jz      loc_31
  458.                 call    sub_16
  459. loc_33:
  460.                 mov     al,2Ch
  461.                 call    sub_19
  462.                 pop     ax
  463.   
  464.   
  465. sub_15:
  466.                 xor     dx,dx
  467.                 div     data_30
  468.                 jmp     loc_35
  469.                 db      88h, 0E0h, 32h, 0E4h
  470.   
  471.   
  472. sub_16:
  473. loc_34:
  474.                 cmp     ax,0Ah
  475.                 jb      loc_37
  476.                 xor     dx,dx
  477.                 div     data_30
  478.                 cmp     al,0Ah
  479.                 jb      loc_36
  480. loc_35:
  481.                 push    dx
  482.                 xor     dx,dx
  483.                 div     data_30
  484.                 call    sub_17
  485.                 pop     ax
  486.                 jmp     loc_37
  487.   
  488.   
  489. sub_17:
  490. loc_36:
  491.                 push    dx
  492.                 call    sub_18
  493.                 pop     ax
  494.   
  495.   
  496. sub_18:
  497. loc_37:
  498.                 add     al,30h
  499.   
  500.   
  501. sub_19:
  502.                 mov     ah,2
  503.                 mov     dl,al
  504.                 int     21h
  505.                 retn
  506. sub_12          endp
  507.   
  508.                 db      0Dh, 0Ah, ' Sorry, I cannot open '
  509.                 db      'the input file.', 0Dh, 0Ah, 0Dh, 0Ah
  510.                 db      ' Sorry, I cannot read the input '
  511.                 db      'file.', 0Dh, 0Ah
  512.                 db      90h
  513. data_32         dw      0
  514. data_33         dw      0
  515. data_34         dw      0
  516. data_35         dw      0
  517.                 db      0ACh, 29h, 0ADh, 29h, 0AEh, 29h
  518.                 db      0AFh, 29h, 0B0h, 29h, 0E9h, 70h
  519.                 db      2, 0E9h, 49h, 2
  520.                 db      14 dup (0)
  521.                 db      0E9h, 0C7h, 0, 0Dh, 0, 0
  522.                 db      0
  523.                 db      44h, 29h
  524.                 db      42 dup (0)
  525.                 db      0CCh, 7, 6, 7
  526.                 db      13 dup (0)
  527.                 db      3, 2, 0CFh, 0C8h, 0Dh, 0C9h
  528.                 db      0Dh
  529.                 db      79 dup (0)
  530.                 db      0Dh, 0Ah, 'Please enter the passw'
  531.                 db      'ord now: '
  532.                 db      0
  533.                 db      0Dh, 0Ah, 'This program requires '
  534.                 db      'DOS 3.00 or greater'
  535.                 db      7, 0Dh, 0Ah, 0, 5Ch, 2Ah
  536.                 db      2Eh, 2Ah, 0
  537.                 db      0Dh, 0Ah, '%%211#---4677^^^%'
  538.                 db      7, 0Dh, 0Ah, 0, 42h, 23h
  539.                 db      0
  540.                 db      305 dup (0)
  541.                 db      50h, 53h, 0A1h, 1, 1, 5
  542.                 db      3, 1, 0D1h, 0E8h, 0D1h, 0E8h
  543.                 db      0D1h, 0E8h, 0D1h, 0E8h, 8Bh, 0D8h
  544.                 db      8Ch, 0C8h, 3, 0C3h, 50h, 0B8h
  545.                 db      6Bh, 2, 50h, 0CBh, 5Bh, 58h
  546.                 db      2Eh, 0C6h, 6, 1Ah, 0, 0FFh
  547.                 db      2Eh, 8Ch, 6, 1Bh, 1, 2Eh
  548.                 db      0A3h, 1Dh, 1, 2Eh, 89h, 26h
  549.                 db      1Fh, 1, 2Eh, 8Ch, 16h, 21h
  550.                 db      1, 8Ch, 0C8h, 8Eh, 0D0h, 0BCh
  551.                 db      4Fh, 2, 2Eh, 0A1h, 1Dh, 1
  552.                 db      50h, 53h, 51h, 52h, 56h, 57h
  553.                 db      55h, 1Eh, 6, 8Ch, 0C8h, 8Eh
  554.                 db      0D8h, 8Eh, 0C0h, 0A0h, 1Bh, 0
  555.                 db      3Ch, 50h, 75h, 6, 0E8h, 6Ah
  556.                 db      0, 0EBh, 15h, 90h, 3Ch, 44h
  557.                 db      75h, 6, 0E8h, 78h, 0, 0EBh
  558.                 db      0Bh, 90h
  559. loc_38:
  560.                 cmp     al,4Ch
  561.                 jne     loc_39
  562.                 call    sub_21
  563.                 jmp     short loc_40
  564. loc_39:
  565.                 stc
  566. loc_40:
  567.                 pop     es
  568.                 pop     ds
  569.                 pop     bp
  570.                 pop     di
  571.                 pop     si
  572.                 pop     dx
  573.                 pop     cx
  574.                 pop     bx
  575.                 cmp     byte ptr cs:data_7e,0
  576.                 je      loc_41
  577.                 mov     ax,cs:data_4e
  578.                 mov     ds:data_1e,ax
  579.                 mov     ax,cs:data_5e
  580.                 mov     ds:data_2e,ax
  581.                 mov     ax,100h
  582.                 mov     cs:data_4e,ax
  583.                 mov     cs:data_5e,ds
  584.                 jmp     short loc_42
  585. loc_41:
  586.                 mov     ax,cs
  587.                 sub     ax,cs:data_6e
  588.                 add     cs:data_5e,ax
  589. loc_42:
  590.                 pop     ax
  591.                 mov     ss,word ptr cs:[121h]
  592.                 mov     sp,word ptr cs:[11Fh]
  593.                 jmp     dword ptr cs:data_4e
  594.                 db      0BAh, 4, 1, 0E8h, 0BCh, 0
  595.                 db      0B8h, 0FFh, 4Ch, 0CDh, 21h, 0BAh
  596.                 db      0AEh, 0, 0E8h, 0B1h, 0, 0C6h
  597.                 db      6, 58h, 0, 29h, 0BAh, 58h
  598.                 db      0, 0E8h, 74h, 0, 0E8h, 0BDh
  599.                 db      0, 0E8h, 87h, 0, 0C3h
  600.   
  601.   
  602. sub_20          proc    near
  603.                 mov     ah,2Ah
  604.                 int     21h
  605.                 cmp     cx,ds:data_8e
  606.                 jb      loc_44
  607.                 cmp     dh,ds:data_9e
  608.                 jb      loc_44
  609.                 cmp     dl,ds:data_10e
  610.                 jb      loc_44
  611.                 jmp     short loc_44
  612.                 db      90h, 0B4h, 30h, 0CDh, 21h, 3Ch
  613.                 db      3, 73h, 4, 0F8h, 0EBh, 25h
  614.                 db      90h, 1Eh, 6, 32h, 0C0h, 0B9h
  615.                 db      0, 80h, 2Eh, 8Eh, 6, 1Bh
  616.                 db      1, 26h, 8Eh, 6, 2Ch, 0
  617.                 db      33h, 0FFh
  618. loc_43:
  619.                 repne   scasb
  620.                 scasb
  621.                 jnz     loc_43
  622.                 add     di,2
  623.                 push    es
  624.                 pop     ds
  625.                 mov     dx,di
  626.                 mov     ah,41h
  627.                 clc
  628.                 pop     es
  629.                 pop     ds
  630. loc_44:
  631.                 cmc
  632.                 retn
  633. sub_20          endp
  634.   
  635.   
  636. sub_21          proc    near
  637.                 mov     ah,1Ah
  638.                 mov     dx,83h
  639.                 int     21h
  640.                 mov     ah,4Eh
  641.                 mov     cx,8
  642.                 mov     dx,0FFh
  643.                 int     21h
  644.                 mov     si,0A1h
  645.                 mov     di,4Bh
  646.                 cld
  647. loc_45:
  648.                 lodsb
  649.                 scasb
  650.                 stc
  651.                 jnz     loc_ret_46
  652.                 or      al,al
  653.                 jnz     loc_45
  654.   
  655. loc_ret_46:
  656.                 retn
  657. sub_21          endp
  658.   
  659.   
  660.   
  661. sub_22          proc    near
  662.                 push    ax
  663.                 push    bx
  664.                 push    cx
  665.                 mov     ah,0Ah
  666.                 int     21h
  667.                 mov     bx,dx
  668.                 inc     bx
  669.                 mov     cl,[bx]
  670.                 xor     ch,ch
  671.                 jcxz    loc_48
  672.   
  673. locloop_47:
  674.                 inc     bx
  675.                 not     byte ptr [bx]
  676.                 loop    locloop_47
  677.   
  678. loc_48:
  679.                 pop     cx
  680.                 pop     bx
  681.                 pop     ax
  682.                 retn
  683. sub_22          endp
  684.   
  685.   
  686.   
  687. sub_23          proc    near
  688.                 push    cx
  689.                 push    si
  690.                 push    di
  691.                 mov     cl,ds:data_11e
  692.                 xor     ch,ch
  693.                 mov     si,59h
  694.                 mov     di,1Dh
  695.                 cld
  696.                 repe    cmpsb
  697.                 jz      loc_49
  698.                 stc
  699. loc_49:
  700.                 pop     di
  701.                 pop     si
  702.                 pop     cx
  703.                 retn
  704. sub_23          endp
  705.   
  706.   
  707.   
  708. sub_24          proc    near
  709.                 push    bx
  710.                 push    dx
  711.                 mov     bx,dx
  712. loc_50:
  713.                 mov     dl,[bx]
  714.                 or      dl,dl
  715.                 jz      loc_51
  716.                 call    sub_25
  717.                 inc     bx
  718.                 jmp     short loc_50
  719. loc_51:
  720.                 pop     dx
  721.                 pop     bx
  722.                 retn
  723. sub_24          endp
  724.   
  725.   
  726.   
  727. sub_25          proc    near
  728.                 push    ax
  729.                 mov     ah,2
  730.                 int     21h
  731.                 pop     ax
  732.                 retn
  733. sub_25          endp
  734.   
  735.   
  736.   
  737. sub_26          proc    near
  738.                 push    dx
  739.                 mov     dl,0Dh
  740.                 call    sub_25
  741.                 mov     dl,0Ah
  742.                 call    sub_25
  743.                 pop     dx
  744.                 retn
  745. sub_26          endp
  746.   
  747.                 db      0, 0, 0, 0, 0ACh, 29h
  748.                 db      0ADh, 29h, 0AEh, 29h, 0AFh, 29h
  749.                 db      0B0h, 29h, 0E9h, 70h, 2, 0E9h
  750.                 db      49h, 2
  751.                 db      14 dup (0)
  752.                 db      0E9h, 60h, 5, 0Dh, 0, 0
  753.                 db      0
  754.                 db      44h, 29h
  755.                 db      42 dup (0)
  756.                 db      0EAh, 7, 0Ch, 1Fh, 0
  757.                 db      12 dup (0)
  758.                 db      3, 2, 0CCh, 0CEh, 0Dh, 0C9h
  759.                 db      0Dh
  760.                 db      79 dup (0)
  761.                 db      0Dh, 0Ah, 'Please enter the passw'
  762.                 db      'ord now: '
  763.                 db      0
  764.                 db      0Dh, 0Ah, 'This program requires '
  765.                 db      'DOS 3.00 or greater'
  766.                 db      7, 0Dh, 0Ah, 0, 5Ch, 2Ah
  767.                 db      2Eh, 2Ah, 0
  768.                 db      0Dh, 0Ah, '%%211#---4677^^^%'
  769.                 db      7, 0Dh, 0Ah, 0, 42h, 23h
  770.                 db      0
  771.                 db      305 dup (0)
  772.                 db      50h, 53h, 0A1h, 1, 1, 5
  773.                 db      3, 1, 0D1h, 0E8h, 0D1h, 0E8h
  774.                 db      0D1h, 0E8h, 0D1h, 0E8h, 8Bh, 0D8h
  775.                 db      8Ch, 0C8h, 3, 0C3h, 50h, 0B8h
  776.                 db      6Bh, 2, 50h, 0CBh, 5Bh, 58h
  777.                 db      2Eh, 0C6h, 6, 1Ah, 0, 0FFh
  778.                 db      2Eh, 8Ch, 6, 1Bh, 1, 2Eh
  779.                 db      0A3h, 1Dh, 1, 2Eh, 89h, 26h
  780.                 db      1Fh, 1, 2Eh, 8Ch, 16h, 21h
  781.                 db      1, 8Ch, 0C8h, 8Eh, 0D0h, 0BCh
  782.                 db      4Fh, 2, 2Eh, 0A1h, 1Dh, 1
  783.                 db      50h, 53h, 51h, 52h, 56h, 57h
  784.                 db      55h, 1Eh, 6, 8Ch, 0C8h, 8Eh
  785.                 db      0D8h, 8Eh, 0C0h, 0A0h, 1Bh, 0
  786.                 db      3Ch, 50h, 75h, 6, 0E8h, 6Ah
  787.                 db      0, 0EBh, 15h, 90h, 3Ch, 44h
  788.                 db      75h, 6, 0E8h, 78h, 0, 0EBh
  789.                 db      0Bh, 90h
  790. loc_52:
  791.                 cmp     al,4Ch
  792.                 jne     loc_53
  793.                 call    sub_28
  794.                 jmp     short loc_54
  795. loc_53:
  796.                 stc
  797. loc_54:
  798.                 pop     es
  799.                 pop     ds
  800.                 pop     bp
  801.                 pop     di
  802.                 pop     si
  803.                 pop     dx
  804.                 pop     cx
  805.                 pop     bx
  806.                 cmp     byte ptr cs:data_7e,0
  807.                 je      loc_55
  808.                 mov     ax,cs:data_4e
  809.                 mov     ds:data_1e,ax
  810.                 mov     ax,cs:data_5e
  811.                 mov     ds:data_2e,ax
  812.                 mov     ax,100h
  813.                 mov     cs:data_4e,ax
  814.                 mov     cs:data_5e,ds
  815.                 jmp     short loc_56
  816. loc_55:
  817.                 mov     ax,cs
  818.                 sub     ax,cs:data_6e
  819.                 add     cs:data_5e,ax
  820. loc_56:
  821.                 pop     ax
  822.                 mov     ss,word ptr cs:[121h]
  823.                 mov     sp,word ptr cs:[11Fh]
  824.                 jmp     dword ptr cs:data_4e
  825.                 db      0BAh, 4, 1, 0E8h, 0BCh, 0
  826.                 db      0B8h, 0FFh, 4Ch, 0CDh, 21h, 0BAh
  827.                 db      0AEh, 0, 0E8h, 0B1h, 0, 0C6h
  828.                 db      6, 58h, 0, 29h, 0BAh, 58h
  829.                 db      0, 0E8h, 74h, 0, 0E8h, 0BDh
  830.                 db      0, 0E8h, 87h, 0, 0C3h
  831.   
  832.   
  833. sub_27          proc    near
  834.                 mov     ah,2Ah
  835.                 int     21h
  836.                 cmp     cx,ds:data_8e
  837.                 jb      loc_58
  838.                 cmp     dh,ds:data_9e
  839.                 jb      loc_58
  840.                 cmp     dl,ds:data_10e
  841.                 jb      loc_58
  842.                 jmp     short loc_58
  843.                 db      90h, 0B4h, 30h, 0CDh, 21h, 3Ch
  844.                 db      3, 73h, 4, 0F8h, 0EBh, 25h
  845.                 db      90h, 1Eh, 6, 32h, 0C0h, 0B9h
  846.                 db      0, 80h, 2Eh, 8Eh, 6, 1Bh
  847.                 db      1, 26h, 8Eh, 6, 2Ch, 0
  848.                 db      33h, 0FFh
  849. loc_57:
  850.                 repne   scasb
  851.                 scasb
  852.                 jnz     loc_57
  853.                 add     di,2
  854.                 push    es
  855.                 pop     ds
  856.                 mov     dx,di
  857.                 mov     ah,41h
  858.                 clc
  859.                 pop     es
  860.                 pop     ds
  861. loc_58:
  862.                 cmc
  863.                 retn
  864. sub_27          endp
  865.   
  866.   
  867.   
  868. sub_28          proc    near
  869.                 mov     ah,1Ah
  870.                 mov     dx,83h
  871.                 int     21h
  872.                 mov     ah,4Eh
  873.                 mov     cx,8
  874.                 mov     dx,0FFh
  875.                 int     21h
  876.                 mov     si,0A1h
  877.                 mov     di,4Bh
  878.                 cld
  879. loc_59:
  880.                 lodsb
  881.                 scasb
  882.                 stc
  883.                 jnz     loc_ret_60
  884.                 or      al,al
  885.                 jnz     loc_59
  886.   
  887. loc_ret_60:
  888.                 retn
  889. sub_28          endp
  890.   
  891.   
  892.   
  893. sub_29          proc    near
  894.                 push    ax
  895.                 push    bx
  896.                 push    cx
  897.                 mov     ah,0Ah
  898.                 int     21h
  899.                 mov     bx,dx
  900.                 inc     bx
  901.                 mov     cl,[bx]
  902.                 xor     ch,ch
  903.                 jcxz    loc_62
  904.   
  905. locloop_61:
  906.                 inc     bx
  907.                 not     byte ptr [bx]
  908.                 loop    locloop_61
  909.   
  910. loc_62:
  911.                 pop     cx
  912.                 pop     bx
  913.                 pop     ax
  914.                 retn
  915. sub_29          endp
  916.   
  917.   
  918.   
  919. sub_30          proc    near
  920.                 push    cx
  921.                 push    si
  922.                 push    di
  923.                 mov     cl,ds:data_11e
  924.                 xor     ch,ch
  925.                 mov     si,59h
  926.                 mov     di,1Dh
  927.                 cld
  928.                 repe    cmpsb
  929.                 jz      loc_63
  930.                 stc
  931. loc_63:
  932.                 pop     di
  933.                 pop     si
  934.                 pop     cx
  935.                 retn
  936. sub_30          endp
  937.   
  938.   
  939.   
  940. sub_31          proc    near
  941.                 push    bx
  942.                 push    dx
  943.                 mov     bx,dx
  944. loc_64:
  945.                 mov     dl,[bx]
  946.                 or      dl,dl
  947.                 jz      loc_65
  948.                 call    sub_32
  949.                 inc     bx
  950.                 jmp     short loc_64
  951. loc_65:
  952.                 pop     dx
  953.                 pop     bx
  954.                 retn
  955. sub_31          endp
  956.   
  957.   
  958.   
  959. sub_32          proc    near
  960.                 push    ax
  961.                 mov     ah,2
  962.                 int     21h
  963.                 pop     ax
  964.                 retn
  965. sub_32          endp
  966.   
  967.   
  968. sub_33          proc    near
  969.                 push    dx
  970.                 mov     dl,0Dh
  971.                 call    sub_32
  972.                 mov     dl,0Ah
  973.                 call    sub_32
  974.                 pop     dx
  975.                 retn
  976. sub_33          endp
  977.   
  978.                 db      0, 0, 0, 0, 0ACh, 29h
  979.                 db      0ADh, 29h, 0AEh, 29h, 0AFh, 29h
  980.                 db      0B0h, 29h, 0E9h, 70h, 2, 0E9h
  981.                 db      49h, 2
  982.                 db      14 dup (0)
  983.                 db      0E9h, 60h, 9, 0Dh, 0, 0
  984.                 db      0
  985.                 db      44h, 29h
  986.                 db      42 dup (0)
  987.                 db      0C2h, 7, 9, 0Bh, 0
  988.                 db      12 dup (0)
  989.                 db      3, 2, 0CEh, 0CEh, 0Dh, 0C9h
  990.                 db      0Dh
  991.                 db      79 dup (0)
  992.                 db      0Dh, 0Ah, 'Please enter the passw'
  993.                 db      'ord now: '
  994.                 db      0
  995.                 db      0Dh, 0Ah, 'This program requires '
  996.                 db      'DOS 3.00 or greater'
  997.                 db      7, 0Dh, 0Ah, 0, 5Ch, 2Ah
  998.                 db      2Eh, 2Ah, 0
  999.                 db      0Dh, 0Ah, '%%211#---4677^^^%'
  1000.                 db      7, 0Dh, 0Ah, 0, 42h, 23h
  1001.                 db      0
  1002.                 db      305 dup (0)
  1003.                 db      50h, 53h, 0A1h, 1, 1, 5
  1004.                 db      3, 1, 0D1h, 0E8h, 0D1h, 0E8h
  1005.                 db      0D1h, 0E8h, 0D1h, 0E8h, 8Bh, 0D8h
  1006.                 db      8Ch, 0C8h, 3, 0C3h, 50h, 0B8h
  1007.                 db      6Bh, 2, 50h, 0CBh, 5Bh, 58h
  1008.                 db      2Eh, 0C6h, 6, 1Ah, 0, 0FFh
  1009.                 db      2Eh, 8Ch, 6, 1Bh, 1, 2Eh
  1010.                 db      0A3h, 1Dh, 1, 2Eh, 89h, 26h
  1011.                 db      1Fh, 1, 2Eh, 8Ch, 16h, 21h
  1012.                 db      1, 8Ch, 0C8h, 8Eh, 0D0h, 0BCh
  1013.                 db      4Fh, 2, 2Eh, 0A1h, 1Dh, 1
  1014.                 db      50h, 53h, 51h, 52h, 56h, 57h
  1015.                 db      55h, 1Eh, 6, 8Ch, 0C8h, 8Eh
  1016.                 db      0D8h, 8Eh, 0C0h, 0A0h, 1Bh, 0
  1017.                 db      3Ch, 50h, 75h, 6, 0E8h, 6Ah
  1018.                 db      0, 0EBh, 15h, 90h, 3Ch, 44h
  1019.                 db      75h, 6, 0E8h, 78h, 0, 0EBh
  1020.                 db      0Bh, 90h
  1021. loc_66:
  1022.                 cmp     al,4Ch
  1023.                 jne     loc_67
  1024.                 call    sub_35
  1025.                 jmp     short loc_68
  1026. loc_67:
  1027.                 stc
  1028. loc_68:
  1029.                 pop     es
  1030.                 pop     ds
  1031.                 pop     bp
  1032.                 pop     di
  1033.                 pop     si
  1034.                 pop     dx
  1035.                 pop     cx
  1036.                 pop     bx
  1037.                 cmp     byte ptr cs:data_7e,0
  1038.                 je      loc_69
  1039.                 mov     ax,cs:data_4e
  1040.                 mov     ds:data_1e,ax
  1041.                 mov     ax,cs:data_5e
  1042.                 mov     ds:data_2e,ax
  1043.                 mov     ax,100h
  1044.                 mov     cs:data_4e,ax
  1045.                 mov     cs:data_5e,ds
  1046.                 jmp     short loc_70
  1047. loc_69:
  1048.                 mov     ax,cs
  1049.                 sub     ax,cs:data_6e
  1050.                 add     cs:data_5e,ax
  1051. loc_70:
  1052.                 pop     ax
  1053.                 mov     ss,word ptr cs:[121h]
  1054.                 mov     sp,word ptr cs:[11Fh]
  1055.                 jmp     dword ptr cs:data_4e
  1056.                 db      0BAh, 4, 1, 0E8h, 0BCh, 0
  1057.                 db      0B8h, 0FFh, 4Ch, 0CDh, 21h, 0BAh
  1058.                 db      0AEh, 0, 0E8h, 0B1h, 0, 0C6h
  1059.                 db      6, 58h, 0, 29h, 0BAh, 58h
  1060.                 db      0, 0E8h, 74h, 0, 0E8h, 0BDh
  1061.                 db      0, 0E8h, 87h, 0, 0C3h
  1062.   
  1063. sub_34          proc    near
  1064.                 mov     ah,2Ah
  1065.                 int     21h
  1066.                 cmp     cx,ds:data_8e
  1067.                 jb      loc_72
  1068.                 cmp     dh,ds:data_9e
  1069.                 jb      loc_72
  1070.                 cmp     dl,ds:data_10e
  1071.                 jb      loc_72
  1072.                 jmp     short loc_72
  1073.                 db      90h, 0B4h, 30h, 0CDh, 21h, 3Ch
  1074.                 db      3, 73h, 4, 0F8h, 0EBh, 25h
  1075.                 db      90h, 1Eh, 6, 32h, 0C0h, 0B9h
  1076.                 db      0, 80h, 2Eh, 8Eh, 6, 1Bh
  1077.                 db      1, 26h, 8Eh, 6, 2Ch, 0
  1078.                 db      33h, 0FFh
  1079. loc_71:
  1080.                 repne   scasb
  1081.                 scasb
  1082.                 jnz     loc_71
  1083.                 add     di,2
  1084.                 push    es
  1085.                 pop     ds
  1086.                 mov     dx,di
  1087.                 mov     ah,41h
  1088.                 clc
  1089.                 pop     es
  1090.                 pop     ds
  1091. loc_72:
  1092.                 cmc
  1093.                 retn
  1094. sub_34          endp
  1095.   
  1096. sub_35          proc    near
  1097.                 mov     ah,1Ah
  1098.                 mov     dx,83h
  1099.                 int     21h
  1100.                 mov     ah,4Eh
  1101.                 mov     cx,8
  1102.                 mov     dx,0FFh
  1103.                 int     21h
  1104.                 mov     si,0A1h
  1105.                 mov     di,4Bh
  1106.                 cld
  1107. loc_73:
  1108.                 lodsb
  1109.                 scasb
  1110.                 stc
  1111.                 jnz     loc_ret_74
  1112.                 or      al,al
  1113.                 jnz     loc_73
  1114.   
  1115. loc_ret_74:
  1116.                 retn
  1117. sub_35          endp
  1118.   
  1119.   
  1120. sub_36          proc    near
  1121.                 push    ax
  1122.                 push    bx
  1123.                 push    cx
  1124.                 mov     ah,0Ah
  1125.                 int     21h
  1126.                 mov     bx,dx
  1127.                 inc     bx
  1128.                 mov     cl,[bx]
  1129.                 xor     ch,ch
  1130.                 jcxz    loc_76
  1131.   
  1132. locloop_75:
  1133.                 inc     bx
  1134.                 not     byte ptr [bx]
  1135.                 loop    locloop_75
  1136.   
  1137. loc_76:
  1138.                 pop     cx
  1139.                 pop     bx
  1140.                 pop     ax
  1141.                 retn
  1142. sub_36          endp
  1143.   
  1144.   
  1145. sub_37          proc    near
  1146.                 push    cx
  1147.                 push    si
  1148.                 push    di
  1149.                 mov     cl,ds:data_11e
  1150.                 xor     ch,ch
  1151.                 mov     si,59h
  1152.                 mov     di,1Dh
  1153.                 cld
  1154.                 repe    cmpsb
  1155.                 jz      loc_77
  1156.                 stc
  1157. loc_77:
  1158.                 pop     di
  1159.                 pop     si
  1160.                 pop     cx
  1161.                 retn
  1162. sub_37          endp
  1163.   
  1164.   
  1165. sub_38          proc    near
  1166.                 push    bx
  1167.                 push    dx
  1168.                 mov     bx,dx
  1169. loc_78:
  1170.                 mov     dl,[bx]
  1171.                 or      dl,dl
  1172.                 jz      loc_79
  1173.                 call    sub_39
  1174.                 inc     bx
  1175.                 jmp     short loc_78
  1176. loc_79:
  1177.                 pop     dx
  1178.                 pop     bx
  1179.                 retn
  1180. sub_38          endp
  1181.   
  1182.   
  1183. sub_39          proc    near
  1184.                 push    ax
  1185.                 mov     ah,2
  1186.                 int     21h
  1187.                 pop     ax
  1188.                 retn
  1189. sub_39          endp
  1190.   
  1191.   
  1192. sub_40          proc    near
  1193.                 push    dx
  1194.                 mov     dl,0Dh
  1195.                 call    sub_39
  1196.                 mov     dl,0Ah
  1197.                 call    sub_39
  1198.                 pop     dx
  1199.                 retn
  1200. sub_40          endp
  1201.   
  1202.                 db      0, 0, 0, 0, 0ACh, 29h
  1203.                 db      0ADh, 29h, 0AEh, 29h, 0AFh, 29h
  1204.                 db      0B0h, 29h, 0E9h, 6Ch, 2, 0E9h
  1205.                 db      45h, 2, 0
  1206.                 db      13 dup (0)
  1207.                 db      0E9h, 60h, 0Dh, 0Dh, 0, 0
  1208.                 db      0
  1209.                 db      44h, 29h
  1210.                 db      42 dup (0)
  1211.                 db      0D2h, 7, 1, 1
  1212.                 db      13 dup (0)
  1213.                 db      3, 2, 0CFh, 0CEh, 0Dh, 0CDh
  1214.                 db      0Dh
  1215.                 db      79 dup (0)
  1216.                 db      0Dh, 0Ah, 'Please enter the passw'
  1217.                 db      'ord now: '
  1218.                 db      0
  1219.                 db      0Dh, 0Ah, 'This program requires '
  1220.                 db      'DOS 3.00 or greater'
  1221.                 db      7, 0Dh, 0Ah, 0, 5Ch, 2Ah
  1222.                 db      2Eh, 2Ah, 0
  1223.                 db      0Dh, 0Ah, 'Access denied'
  1224.                 db      7, 0Dh, 0Ah, 0, 42h, 23h
  1225.                 db      0
  1226.                 db      305 dup (0)
  1227.                 db      50h, 53h, 0A1h, 1, 1, 5
  1228.                 db      3, 1, 0D1h, 0E8h, 0D1h, 0E8h
  1229.                 db      0D1h, 0E8h, 0D1h, 0E8h, 8Bh, 0D8h
  1230.                 db      8Ch, 0C8h, 3, 0C3h, 50h, 0B8h
  1231.                 db      67h, 2, 50h, 0CBh, 5Bh, 58h
  1232.                 db      2Eh, 0C6h, 6, 1Ah, 0, 0FFh
  1233.                 db      2Eh, 8Ch, 6, 17h, 1, 2Eh
  1234.                 db      0A3h, 19h, 1, 2Eh, 89h, 26h
  1235.                 db      1Bh, 1, 2Eh, 8Ch, 16h, 1Dh
  1236.                 db      1, 8Ch, 0C8h, 8Eh, 0D0h, 0BCh
  1237.                 db      4Bh, 2, 2Eh, 0A1h, 19h, 1
  1238.                 db      50h, 53h, 51h, 52h, 56h, 57h
  1239.                 db      55h, 1Eh, 6, 8Ch, 0C8h, 8Eh
  1240.                 db      0D8h, 8Eh, 0C0h, 0A0h, 1Bh, 0
  1241.                 db      3Ch, 50h, 75h, 6, 0E8h, 6Ch
  1242.                 db      0, 0EBh, 15h, 90h, 3Ch, 44h
  1243.                 db      75h, 6, 0E8h, 7Ah, 0, 0EBh
  1244.                 db      0Bh, 90h
  1245. loc_80:
  1246.                 cmp     al,4Ch
  1247.                 jne     loc_81
  1248.                 call    sub_42
  1249.                 jmp     short loc_82
  1250. loc_81:
  1251.                 stc
  1252. loc_82:
  1253.                 jc      loc_85
  1254.                 pop     es
  1255.                 pop     ds
  1256.                 pop     bp
  1257.                 pop     di
  1258.                 pop     si
  1259.                 pop     dx
  1260.                 pop     cx
  1261.                 pop     bx
  1262.                 cmp     byte ptr cs:data_7e,0
  1263.                 je      loc_83
  1264.                 mov     ax,cs:data_4e
  1265.                 mov     ds:data_1e,ax
  1266.                 mov     ax,cs:data_5e
  1267.                 mov     ds:data_2e,ax
  1268.                 mov     ax,100h
  1269.                 mov     cs:data_4e,ax
  1270.                 mov     cs:data_5e,ds
  1271.                 jmp     short loc_84
  1272. loc_83:
  1273.                 mov     ax,cs
  1274.                 sub     ax,cs:data_6e
  1275.                 add     cs:data_5e,ax
  1276. loc_84:
  1277.                 pop     ax
  1278.                 mov     ss,word ptr cs:[11Dh]
  1279.                 mov     sp,word ptr cs:[11Bh]
  1280.                 jmp     dword ptr cs:data_4e
  1281. loc_85:
  1282.                 mov     dx,104h
  1283.                 call    sub_45
  1284.                 mov     ax,4CFFh
  1285.                 int     21h
  1286.                 db      0BAh, 0AEh, 0, 0E8h, 0B6h, 0
  1287.                 db      0C6h, 6, 58h, 0, 29h, 0BAh
  1288.                 db      58h, 0, 0E8h, 79h, 0, 0E8h
  1289.                 db      0C2h, 0, 0E8h, 8Ch, 0, 0C3h
  1290.   
  1291. sub_41          proc    near
  1292.                 mov     ah,2Ah
  1293.                 int     21h
  1294.                 cmp     cx,ds:data_8e
  1295.                 jb      loc_88
  1296.                 cmp     dh,ds:data_9e
  1297.                 jb      loc_88
  1298.                 cmp     dl,ds:data_10e
  1299.                 jb      loc_88
  1300.                 mov     ah,30h
  1301.                 int     21h
  1302.                 cmp     al,3
  1303.                 jae     loc_86
  1304.                 mov     dx,0D0h
  1305.                 call    sub_45
  1306.                 clc
  1307.                 jmp     short loc_88
  1308.                 db      90h
  1309. loc_86:
  1310.                 push    ds
  1311.                 push    es
  1312.                 xor     al,al
  1313.                 mov     cx,8000h
  1314.                 mov     es,word ptr cs:copyright+1
  1315.                 mov     es,es:data_3e
  1316.                 xor     di,di
  1317. loc_87:
  1318.                 repne   scasb
  1319.                 scasb
  1320.                 jnz     loc_87
  1321.                 add     di,2
  1322.                 push    es
  1323.                 pop     ds
  1324.                 mov     dx,di
  1325.                 mov     ah,41h
  1326.                 int     21h
  1327.                 clc
  1328.                 pop     es
  1329.                 pop     ds
  1330. loc_88:
  1331.                 cmc
  1332.                 retn
  1333. sub_41          endp
  1334.   
  1335. sub_42          proc    near
  1336.                 mov     ah,1Ah
  1337.                 mov     dx,83h
  1338.                 int     21h
  1339.                 mov     ah,4Eh
  1340.                 mov     cx,8
  1341.                 mov     dx,0FFh
  1342.                 int     21h
  1343.                 mov     si,0A1h
  1344.                 mov     di,4Bh
  1345.                 cld
  1346. loc_89:
  1347.                 lodsb
  1348.                 scasb
  1349.                 stc
  1350.                 jnz     loc_ret_90
  1351.                 or      al,al
  1352.                 jnz     loc_89
  1353.   
  1354. loc_ret_90:
  1355.                 retn
  1356. sub_42          endp
  1357.   
  1358. sub_43          proc    near
  1359.                 push    ax
  1360.                 push    bx
  1361.                 push    cx
  1362.                 mov     ah,0Ah
  1363.                 int     21h
  1364.                 mov     bx,dx
  1365.                 inc     bx
  1366.                 mov     cl,[bx]
  1367.                 xor     ch,ch
  1368.                 jcxz    loc_92
  1369.   
  1370. locloop_91:
  1371.                 inc     bx
  1372.                 not     byte ptr [bx]
  1373.                 loop    locloop_91
  1374.   
  1375. loc_92:
  1376.                 pop     cx
  1377.                 pop     bx
  1378.                 pop     ax
  1379.                 retn
  1380. sub_43          endp
  1381.   
  1382. sub_44          proc    near
  1383.                 push    cx
  1384.                 push    si
  1385.                 push    di
  1386.                 mov     cl,ds:data_11e
  1387.                 xor     ch,ch
  1388.                 mov     si,59h
  1389.                 mov     di,1Dh
  1390.                 cld
  1391.                 repe    cmpsb
  1392.                 jz      loc_93
  1393.                 stc
  1394. loc_93:
  1395.                 pop     di
  1396.                 pop     si
  1397.                 pop     cx
  1398.                 retn
  1399. sub_44          endp
  1400.   
  1401.   
  1402.   
  1403. sub_45          proc    near
  1404.                 push    bx
  1405.                 push    dx
  1406.                 mov     bx,dx
  1407. loc_94:
  1408.                 mov     dl,[bx]
  1409.                 or      dl,dl
  1410.                 jz      loc_95
  1411.                 call    sub_46
  1412.                 inc     bx
  1413.                 jmp     short loc_94
  1414. loc_95:
  1415.                 pop     dx
  1416.                 pop     bx
  1417.                 retn
  1418. sub_45          endp
  1419.   
  1420.   
  1421.   
  1422. sub_46          proc    near
  1423.                 push    ax
  1424.                 mov     ah,2
  1425.                 int     21h
  1426.                 pop     ax
  1427.                 retn
  1428. sub_46          endp
  1429.   
  1430.   
  1431.   
  1432. sub_47          proc    near
  1433.                 push    dx
  1434.                 mov     dl,0Dh
  1435.                 call    sub_46
  1436.                 mov     dl,0Ah
  1437.                 call    sub_46
  1438.                 pop     dx
  1439.                 retn
  1440. sub_47          endp
  1441.   
  1442.                 db      0, 0ACh, 29h, 0ADh, 29h, 0AEh
  1443.                 db      29h, 0AFh, 29h, 0B0h, 29h, 0E9h
  1444.                 db      6Ch, 2
  1445. loc_96:
  1446.                 jmp     loc_97
  1447.                 db      0
  1448.                 db      13 dup (0)
  1449.                 db      0E9h, 60h, 11h, 0Dh, 0, 0
  1450.                 db      0
  1451.                 db      44h, 29h
  1452.                 db      42 dup (0)
  1453.                 db      0D0h, 7, 6, 6
  1454.                 db      13 dup (0)
  1455.                 db      3, 2, 0CFh, 0C9h, 0Dh, 0CFh
  1456.                 db      0Dh
  1457.                 db      79 dup (0)
  1458.                 db      0Dh, 0Ah, 'Please enter the passw'
  1459.                 db      'ord now: '
  1460.                 db      0
  1461.                 db      0Dh, 0Ah, 'This program requires '
  1462.                 db      'DOS 3.00 or greater'
  1463.                 db      7, 0Dh, 0Ah, 0, 5Ch, 2Ah
  1464.                 db      2Eh, 2Ah, 0
  1465.                 db      0Dh, 0Ah, 'Access denied'
  1466.                 db      7, 0Dh, 0Ah, 0, 42h, 23h
  1467.                 db      0
  1468.                 db      305 dup (0)
  1469. loc_97:
  1470.                 push    ax
  1471.                 push    bx
  1472.                 mov     ax,word ptr ds:[101h]
  1473.                 add     ax,103h
  1474.                 shr     ax,1
  1475.                 shr     ax,1
  1476.                 shr     ax,1
  1477.                 shr     ax,1
  1478.                 mov     bx,ax
  1479.                 mov     ax,cs
  1480.                 add     ax,bx
  1481.                 push    ax
  1482.                 mov     ax,267h
  1483.                 push    ax
  1484.                 retf
  1485.                 db      5Bh, 58h, 2Eh, 0C6h, 6, 1Ah
  1486.                 db      0, 0FFh, 2Eh, 8Ch, 6, 17h
  1487.                 db      1, 2Eh, 0A3h, 19h, 1, 2Eh
  1488.                 db      89h, 26h, 1Bh, 1, 2Eh, 8Ch
  1489.                 db      16h, 1Dh, 1, 8Ch, 0C8h, 8Eh
  1490.                 db      0D0h, 0BCh, 4Bh, 2, 2Eh, 0A1h
  1491.                 db      19h, 1, 50h, 53h, 51h, 52h
  1492.                 db      56h, 57h, 55h, 1Eh, 6, 8Ch
  1493.                 db      0C8h, 8Eh, 0D8h, 8Eh, 0C0h, 0A0h
  1494.                 db      1Bh, 0, 3Ch, 50h, 75h, 6
  1495.                 db      0E8h, 6Ch, 0, 0EBh, 15h, 90h
  1496.                 db      3Ch, 44h, 75h, 6, 0E8h, 7Ah
  1497.                 db      0, 0EBh, 0Bh, 90h
  1498. loc_98:
  1499.                 cmp     al,4Ch
  1500.                 jne     loc_99
  1501.                 call    sub_49
  1502.                 jmp     short loc_100
  1503. loc_99:
  1504.                 stc
  1505. loc_100:
  1506.                 jc      loc_103
  1507.                 pop     es
  1508.                 pop     ds
  1509.                 pop     bp
  1510.                 pop     di
  1511.                 pop     si
  1512.                 pop     dx
  1513.                 pop     cx
  1514.                 pop     bx
  1515.                 cmp     byte ptr cs:data_7e,0
  1516.                 je      loc_101
  1517.                 mov     ax,cs:data_4e
  1518.                 mov     ds:data_1e,ax
  1519.                 mov     ax,cs:data_5e
  1520.                 mov     ds:data_2e,ax
  1521.                 mov     ax,100h
  1522.                 mov     cs:data_4e,ax
  1523.                 mov     cs:data_5e,ds
  1524.                 jmp     short loc_102
  1525. loc_101:
  1526.                 mov     ax,cs
  1527.                 sub     ax,cs:data_6e
  1528.                 add     cs:data_5e,ax
  1529. loc_102:
  1530.                 pop     ax
  1531.                 mov     ss,word ptr cs:[11Dh]
  1532.                 mov     sp,word ptr cs:[11Bh]
  1533.                 jmp     dword ptr cs:data_4e
  1534. loc_103:
  1535.                 mov     dx,104h
  1536.                 call    sub_52
  1537.                 mov     ax,4CFFh
  1538.                 int     21h
  1539.                 db      0BAh, 0AEh, 0, 0E8h, 0B6h, 0
  1540.                 db      0C6h, 6, 58h, 0, 29h, 0BAh
  1541.                 db      58h, 0, 0E8h, 79h, 0, 0E8h
  1542.                 db      0C2h, 0, 0E8h, 8Ch, 0, 0C3h
  1543.   
  1544. sub_48          proc    near
  1545.                 mov     ah,2Ah
  1546.                 int     21h
  1547.                 cmp     cx,ds:data_8e
  1548.                 jb      loc_106
  1549.                 cmp     dh,ds:data_9e
  1550.                 jb      loc_106
  1551.                 cmp     dl,ds:data_10e
  1552.                 jb      loc_106
  1553.                 mov     ah,30h
  1554.                 int     21h
  1555.                 cmp     al,3
  1556.                 jae     loc_104
  1557.                 mov     dx,0D0h
  1558.                 call    sub_52
  1559.                 clc
  1560.                 jmp     short loc_106
  1561.                 db      90h
  1562. loc_104:
  1563.                 push    ds
  1564.                 push    es
  1565.                 xor     al,al
  1566.                 mov     cx,8000h
  1567.                 mov     es,word ptr cs:copyright+1
  1568.                 mov     es,es:data_3e
  1569.                 xor     di,di
  1570. loc_105:
  1571.                 repne   scasb
  1572.                 scasb
  1573.                 jnz     loc_105
  1574.                 add     di,2
  1575.                 push    es
  1576.                 pop     ds
  1577.                 mov     dx,di
  1578.                 mov     ah,41h
  1579.                 int     21h
  1580.                 clc
  1581.                 pop     es
  1582.                 pop     ds
  1583. loc_106:
  1584.                 cmc
  1585.                 retn
  1586. sub_48          endp
  1587.   
  1588.   
  1589. sub_49          proc    near
  1590.                 mov     ah,1Ah
  1591.                 mov     dx,83h
  1592.                 int     21h
  1593.                 mov     ah,4Eh
  1594.                 mov     cx,8
  1595.                 mov     dx,0FFh
  1596.                 int     21h
  1597.                 mov     si,0A1h
  1598.                 mov     di,4Bh
  1599.                 cld
  1600. loc_107:
  1601.                 lodsb
  1602.                 scasb
  1603.                 stc
  1604.                 jnz     loc_ret_108
  1605.                 or      al,al
  1606.                 jnz     loc_107
  1607.   
  1608. loc_ret_108:
  1609.                 retn
  1610. sub_49          endp
  1611.   
  1612.  
  1613. sub_50          proc    near
  1614.                 push    ax
  1615.                 push    bx
  1616.                 push    cx
  1617.                 mov     ah,0Ah
  1618.                 int     21h
  1619.                 mov     bx,dx
  1620.                 inc     bx
  1621.                 mov     cl,[bx]
  1622.                 xor     ch,ch
  1623.                 jcxz    loc_110
  1624.   
  1625. locloop_109:
  1626.                 inc     bx
  1627.                 not     byte ptr [bx]
  1628.                 loop    locloop_109
  1629.   
  1630. loc_110:
  1631.                 pop     cx
  1632.                 pop     bx
  1633.                 pop     ax
  1634.                 retn
  1635. sub_50          endp
  1636.   
  1637.   
  1638. sub_51          proc    near
  1639.                 push    cx
  1640.                 push    si
  1641.                 push    di
  1642.                 mov     cl,ds:data_11e
  1643.                 xor     ch,ch
  1644.                 mov     si,59h
  1645.                 mov     di,1Dh
  1646.                 cld
  1647.                 repe    cmpsb
  1648.                 jz      loc_111
  1649.                 stc
  1650. loc_111:
  1651.                 pop     di
  1652.                 pop     si
  1653.                 pop     cx
  1654.                 retn
  1655. sub_51          endp
  1656.   
  1657.   
  1658.   
  1659. sub_52          proc    near
  1660.                 push    bx
  1661.                 push    dx
  1662.                 mov     bx,dx
  1663. loc_112:
  1664.                 mov     dl,[bx]
  1665.                 or      dl,dl
  1666.                 jz      loc_113
  1667.                 call    sub_53
  1668.                 inc     bx
  1669.                 jmp     short loc_112
  1670. loc_113:
  1671.                 pop     dx
  1672.                 pop     bx
  1673.                 retn
  1674. sub_52          endp
  1675.   
  1676.   
  1677.   
  1678. sub_53          proc    near
  1679.                 push    ax
  1680.                 mov     ah,2
  1681.                 int     21h
  1682.                 pop     ax
  1683.                 retn
  1684. sub_53          endp
  1685.   
  1686.   
  1687. sub_54          proc    near
  1688.                 push    dx
  1689.                 mov     dl,0Dh
  1690.                 call    sub_53
  1691.                 mov     dl,0Ah
  1692.                 call    sub_53
  1693.                 pop     dx
  1694.                 retn
  1695. sub_54          endp
  1696.   
  1697.                 db      0F0h, 0FDh, 0C5h, 0AAh, 0FFh, 0F0h
  1698.                 db      8Dh, 6Dh, 0B2h
  1699.                 db      73h
  1700.   
  1701. seg_a           ends
  1702.   
  1703.   
  1704.   
  1705.                 end     start
  1706.  
  1707. -------------------------------------------------------------------------------
  1708. 
  1709. Downloaded From P-80 International Information Systems 304-744-2253
  1710.