.model  tiny
.code
org   100h
start:
        .486p
        mov     dx,offset st_m
        mov     ah,9
        int     21h
        mov     ah,0ah
        mov     dx,offset of_n
        int     21h

        mov     dx,offset st_or
        mov     ah,9
        int     21h
        mov     ah,0ah
        mov     dx,offset of_n
        int     21h

        mov     dx,offset st_nb
        mov     ah,9
        int     21h
        mov     ah,0ah
        mov     dx,offset of_m
        int     21h

        cmp     [byte ptr of_m+1],4
        jne     error_

        call    func

        mov     dx,offset st_nb1
        mov     ah,9
        int     21h

        mov     dx,offset of_m+2
        mov     ah,9
        int     21h

;ÆąØ¬„ą Ŗ®ÆØą®¢ ­Øļ Ø§ ¤®į  ¢ clipboard Win95
        mov     ax,1700h
        int     2Fh
        cmp     ax,1700h
        jz      p30D
        mov     ax,1701h
        int     2Fh
        mov     ax,1702h
        int     2Fh
        mov     dx,0001
        mov     bx,offset of_m+2  ; ¤ą„į ā®£®, ēā® ¢ clipboard
        xor     si,si
        mov     cx,0012  ;Ŗ®ÆØąć„¬ ļ ¤«Ø­ 
        mov     ax,1703h
        int     2Fh
        mov     ax,1708h
        int     2Fh
p30d:
        mov     dx,offset cpy
exit_:  mov     ah,9
        int     21h

        mov     ax,4c00h
        int     21h

error_: mov     dx,offset er_m
        jmp     exit_

; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
func:
                mov     di,offset of_m+2
                movsx   ax, byte ptr [di+3]
                movsx   cx, byte ptr [di+2]
                add     eax, ecx
                movsx   cx, byte ptr [di+1]
                add     eax, ecx
                mov     esi, [di]
                movsx   cx, byte ptr [di]
                add     eax, ecx
                movsx   ebx, ax
                imul    esi, ebx
                lea     ax, [di+4]
                push    eax
                push    esi
                call    loc_449DCB
                not     esi
                imul    esi, ebx
                pop     ecx
                xor     esi, eax
                pop     ecx
                lea     ecx, [di+8]
                push    ecx
                push    esi
                call    loc_449DCB
                mov     byte ptr [di+0Ch],'$'
loc_449E9C:     pop     ecx ecx
                ret
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
loc_449DCB:                             ; C
                                        ; _
                push    bp
                push    ebp
                mov     bp, sp
                push    ecx
                push    ecx
                push    ebx
                push    esi
                mov     esi, [bp+8]
                push    edi
                push dword ptr 7
                push    esi
                call    near ptr unk_4C38E0
                pop     ecx
;                mov     [bp-8], eax
                pop     ecx
                push  dword ptr  4
                test    dx, dx
                pop     edi
                jl      short loc_449DFB
                movsx   eax, dx
                mov     cx, offset tabl1
                inc     eax

loc_449DF4:                             ; C
                push    bx
                mov     bx,cx
                xor     esi, [bx]
                pop     bx
                add     ecx, edi
                dec     eax
                jnz     short loc_449DF4

loc_449DFB:                             ; C
                mov     ecx, [bp+0Ch]
                push    bx
                mov     bx,cx
                mov     [bx], esi
                pop     bx
loc_449E00:                             ; C
                push    bx
                mov     bx,cx
                movzx   eax, byte ptr [bx]
                pop     bx
                push  dword ptr  3Bh
                cdq
                pop     ebx
                idiv    ebx
                cmp     dl, 0Ah
                jnb     short loc_449E13
                add     dl, 30h
                jmp     short loc_449E3E
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

loc_449E13:                             ; C
                cmp     dl, 12h
                jnb     short loc_449E1D
                add     dl, 37h
                jmp     short loc_449E3E
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

loc_449E1D:                             ; C
                cmp     dl, 17h
                jnb     short loc_449E27
                add     dl, 38h
                jmp     short loc_449E3E
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

loc_449E27:                             ; C
                cmp     dl, 22h
                jnb     short loc_449E31
                add     dl, 39h
                jmp     short loc_449E3E
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

loc_449E31:                             ; C
                cmp     dl, 2Dh
                jnb     short loc_449E3B
                add     dl, 3Fh
                jmp     short loc_449E3E
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

loc_449E3B:                             ; C
                add     dl, 40h

loc_449E3E:                             ; C
                                        ; _
                push    bx
                mov     bx,cx
                mov     [bx], dl
                pop     bx
                inc     ecx
                dec     edi
                jnz     short loc_449E00
                mov     eax, esi
                pop     edi
                pop     esi
                pop     ebx
;                leave
                mov     sp,bp
                pop     ebp
                pop     bp
                retn
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
unk_4C38E0:     push   bx
                mov    bx,sp
                mov    ecx,[bx+00004h]
                push   esi
                mov    esi,[bx+00008h]
                mov    eax,ecx
                cdq
                idiv   esi
                push   edi
                mov    edi,eax
                mov    eax,ecx
                cdq
                idiv   esi
                test   ecx,ecx
                jge    p1
                test   edx,edx
                jle    p1
                inc    edi
                sub    edx,esi
p1:             mov    eax,edi
                pop    edi
                pop    esi
                pop    bx
                retn
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
tabl1:      dd 0A62B75ECh,067AD19B3h,028FF06E4h,0CA7D1B97h,05110A24Eh,090B1BD2Bh,03C07F585h,000000001h
            dd 000000072h,0255C7325h,000000073h

st_m:
db    "          Ü²Ü                                                        Ü",0dh,0ah
db    "       ÜŪŪŪ²²Ü Ü             ÜÜŪŪ²²Ü                Üž             ÜŪŪŪÜ",0dh,0ah
db    "     ÜŪŪŪŪŪŪ²²ŻŽŪÜÜÜÜŪŪÜ  ÜÜ²ßŪŪŪŪŪ²²ŻžÜ          ÜŪ²Ü          ÜÜßŪŪŪŪŪŻ",0dh,0ah
db    "    ŪßÜŪŪŪŪ²²ß Ū²Ż  ŪŪŪŻÜŪß  ŽŪŪŪ²²ß   ŽŪŪÜŻ  Ü  ÜŪŪŪŻ ²ÜÜ   ²ÜÜŪ²  ŽŪŪŪß",0dh,0ah
db    "  ÜŪŻ ßŪ²²²ß  ßßß  ŽŪŪ² Ū   ÜŪŪ²ßß    ÜŪŪŪ²ßßŪ²ßßÜŪŪŪ  ŽŪŪŪÜ ŽŪŪŪŻ Ü²ßß",0dh,0ah
db    " ßŪŪ    ßß  ÜŪŪŪ²ßßŪŪ²² Ż       ÜÜ  ÜŪŪ²²ŪŻ Ü     ŪŪŪ   ŪŪŪŪŻ ŪŪŪ²ßžÜÜ",0dh,0ah
db    "  Ū²²ßßß   ŪŪŪŪŪŻ  ŪŪ²²ŻŽ  ÜÜÜŪŪ²²ŻŽŪŪŪŪŪŪ  ŽŪŪ²² ŪŪŪŻ  ŽŪŪ²ŪŽŪŪŪŻ  ŽŪŪÜÜ",0dh,0ah
db    "  Ž²²Ż     ßŪŪŪ²   ŽŪ²²ß Ū ŽŪŪŪŪŪ²² ŪŪŪŪŪŻ   ŪŪŪ² ßŪŪ² ÜŪŪ²²ŻßßßŪŪ Ü²ßßßŪŪ²Ü",0dh,0ah
db    "  ŪŪ²²  DC!  ßŪŪ²ÜÜžß   ßßŪÜŪŪŪ²²ß ßßŪŪŪŪŪ  ŽŪŪŪŪ   ßß²ŪŪ²²ß     ²Ż",0dh,0ah
db    "  ßßß²ß         ßß         ßßßßß         ß²ßßßßß        ß        ßž",0dh,0ah
db    "           ŚÄÄÄÄÄÄÄÄÄÄÄÄÄĶĶĶĶ[ Factor Presents ]ĶĶĶĶÄÄÄÄÄÄÄÄÄÄÄÄæ",0dh,0ah
db    "           ³                                                    ³",0dh,0ah
db    "           ³                     Opera v3.10                    ³",0dh,0ah
db    "           ³                                                    ³",0dh,0ah
db    "           ³                  KeyGen by: CrazyMaX               ³",0dh,0ah
db    "           ³                                                    ³",0dh,0ah
db    " ÄÄÄÄÄÄÄÄÄÄĮÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ[ WIN95 ]ÄĮÄÄÄÄÄÄÄÄÄÄÄ",0dh,0ah
;db      0dh,0ah,"KeyMaker for Opera v3.10 by -=CrazyMaX=- // RPG // Factor98 // CodeWise",0dh,0ah
;                db      "--------------------------------------------------------------------------",0dh,0ah
;
                db                  "Enter your name      : $"
st_or           db          0dh,0ah,"Your Organization    : $"
st_nb           db          0dh,0ah,"Enter any 4 digits   : $"
st_nb1          db          0dh,    "Your Registration No.: $"
cpy             db          0dh,0ah,"Registration No. is copied to Windows Clipboard !",0dh,0ah,'$'
er_m            db          0dh,0ah,"Invalid input! KeyMaker aborted.",0dh,0ah,'$'
of_n:           db      35,0, 36  dup(0)
of_m:           db      5,0, 14  dup(0)
end_:           db      0
      end start
