home *** CD-ROM | disk | FTP | other *** search
/ Reverse Code Engineering RCE CD +sandman 2000 / ReverseCodeEngineeringRceCdsandman2000.iso / RCE / Quantico / km / ucf_font.asm.txt < prev    next >
Encoding:
Text File  |  2000-05-25  |  28.2 KB  |  786 lines

  1. .model  tiny
  2.  
  3. .386
  4.  
  5.         org 100h
  6.  
  7. .data
  8.  
  9. GroupLogo       db 13,10
  10.                 db '            ▄▄▄▄▄ ',13,10
  11.                 db '            █ ▄ █  ',13,10
  12.                 db '    █▀▀▀▀▀▀▀▀ ▄ ▀▀▀▀▀ ▀ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█  █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ ▀ ▀▀▀▀█ ',13,10
  13.                 db '    █ │░███████  │▓███████▀ │░███▀█▀▀▀▀▀▀▀ ▀ ▀▀▀▀ │░███▀█▀▀▀▀▀▓████▓▄  █ ',13,10
  14.                 db '    █ │▒███████  │▓███████  │▒███████  │▓███████▀ │▒███████  │▓███████ █ ',13,10
  15.                 db '    █ │▓███████  │▓███████  │▓███████  │▓███████  │▓███████  │▓███████ █ ',13,10
  16.                 db '    ▀ │▓███████  │▓███████  │▓███████  │▓███████  │▓███████  │▓███████ █▄▄▄ ',13,10
  17.                 db '    ▀ │▓███████  │▓███████  │▓███████  │▓███████  │▓███████  │▓███████▄ ▄ █ ',13,10
  18.                 db '    █ │▓███████  │▓███████  │▓███████  │▓███████  │▓███████               █ ',13,10
  19.                 db '    █ │▓███████▄▄▄▄▄█▄█▓▀   │▓███████▄▄▄▄▄█▄████  │▓███████▀▀ ▀    ▀      █ ',13,10
  20.                 db '    █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ▄ ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ▀ █▀▀▀▀▀▀▀▀▀ ▀ ▀▀ ',13,10
  21.                 db '    .::[ u n i t e d · c r æ c k i n g · f o r c e ]::. █ ▀ █ Antibody<SAC> ',13,10
  22.                 db '    █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ▄ ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ▀ █▀▀▀▀▀▀▀▀▀ ▀ ▀▀ ',13,10
  23.                 db '                                -----=====-----                             ',13,10
  24.                 db '              [■] FontViewer v1.0 - Key Generator by Quantico [■]           ',13,10
  25.                 db '                                -----=====-----                             ',13,10
  26.                 db '                                 ',13,10,'$'
  27.  
  28.  
  29.  
  30. IntroMsgOne     db 13,10,'Enter a name please    : ','$'
  31.            
  32.  
  33. ErrorMsg        db 13,10,'Need 3-25 digits, try again...',13,10,'$'
  34.  
  35. no_code         db 13,10,'Cannot create code for this name, try again...',13,10,'$'
  36.  
  37. ShowCodeMsg     db 13,10,13,10,'--=[Valid registration code]=-- ',13,10,'           '
  38.  
  39. CodeBuffer      db 20 dup(0),13,10,'$'
  40.  
  41. NameBuffer      db 18h, 19h dup(0)
  42.  
  43. WorkBuffer      db 'VFUFW-',1Ah dup(0)
  44.  
  45. Convert_Digs     db '0123456789ABCDEF'
  46.  
  47. namelength      db 0
  48.  
  49. ; ───────────────────────────────────────────────────────────────────────────
  50.         ;align 4
  51. off_403D80    dd offset loc_403AE4, offset loc_403AEE    ; DATA XREF: sub_403AB0+2Dr
  52.         dd offset loc_403AF8, offset loc_403B02    ; jump table for switch    statement
  53.         dd offset loc_403B0C, offset loc_403B16
  54.         dd offset loc_403B20, offset loc_403B2A
  55.         dd offset loc_403B34, offset loc_403B3E
  56.         dd offset loc_403B48, offset loc_403B52
  57.         dd offset loc_403B5C, offset loc_403B66
  58.         dd offset loc_403B70, offset loc_403B7A
  59.         dd offset loc_403B84, offset loc_403B8E
  60.         dd offset loc_403B98, offset loc_403BA2
  61.         dd offset loc_403BAC, offset loc_403BB6
  62.         dd offset loc_403BC0, offset loc_403BCA
  63.         dd offset loc_403BD4, offset loc_403BDE
  64.         dd offset loc_403BE8, offset loc_403BF2
  65.         dd offset loc_403BFC, offset loc_403C06
  66.         dd offset loc_403C10, offset loc_403C1A
  67.         dd offset loc_403C24, offset loc_403C2E
  68.         dd offset loc_403C38, offset loc_403C42
  69.         dd offset loc_403C4C, offset loc_403C56
  70.         dd offset loc_403C60, offset loc_403C6A
  71.         dd offset loc_403C74, offset loc_403C7E
  72.         dd offset loc_403C88, offset loc_403C92
  73.         dd offset loc_403C9C, offset loc_403CA6
  74.         dd offset loc_403CB0, offset loc_403CBA
  75.         dd offset loc_403CC1, offset loc_403CCB
  76.         dd offset loc_403CD2, offset loc_403CDC
  77.         dd offset loc_403CE3, offset loc_403CEA
  78.         dd offset loc_403CF1, offset loc_403CF8
  79.         dd offset loc_403CFF, offset loc_403D06
  80.         dd offset loc_403D0D, offset loc_403D14
  81.         dd offset loc_403D1B, offset loc_403D22
  82.         dd offset loc_403D29, offset loc_403D30
  83.  
  84. ; ███████████████████████████████████████████████████████████████████████████
  85.  
  86.  
  87. aPbg0213    db 'PBG0213',0          ; DATA XREF: sub_403AB0+280o
  88. aAmc5673    db 'AMC5673',0          ; DATA XREF: sub_403AB0+279o
  89. aBjw0226    db 'BJW0226',0          ; DATA XREF: sub_403AB0+272o
  90. aEeh0611    db 'EEH0611',0          ; DATA XREF: sub_403AB0+26Bo
  91. aKao6294    db 'KAO6294',0          ; DATA XREF: sub_403AB0+264o
  92. aJej5512    db 'JEJ5512',0          ; DATA XREF: sub_403AB0+25Do
  93. aGme4445    db 'GME4445',0          ; DATA XREF: sub_403AB0+256o
  94. aMsc1990    db 'MSC1990',0          ; DATA XREF: sub_403AB0+24Fo
  95. aTdb1883    db 'TDB1883',0          ; DATA XREF: sub_403AB0+248o
  96. aSlh4228    db 'SLH4228',0          ; DATA XREF: sub_403AB0+241o
  97. aJmc3452    db 'JMC3452',0          ; DATA XREF: sub_403AB0+23Ao
  98. aJjj0816    db 'JJJ0816',0          ; DATA XREF: sub_403AB0+233o
  99. aKfd1269    db 'KFD1269',0          ; DATA XREF: sub_403AB0+22Co
  100. aPas4258    db 'PAS4258',0          ; DATA XREF: sub_403AB0+222o
  101. aFsl8930    db 'FSL8930',0          ; DATA XREF: sub_403AB0+21Bo
  102. aBm0215m    db 'BM0215M',0          ; DATA XREF: sub_403AB0+211o
  103. aWm1215w    db 'WM1215W',0          ; DATA XREF: sub_403AB0+20Ao
  104. aNn1640e    db 'NN1640E',0          ; DATA XREF: sub_403AB0+200o
  105. aUpr4255    db 'UPR4255',0          ; DATA XREF: sub_403AB0+1F6o
  106. aLlb6034    db 'LLB6034',0          ; DATA XREF: sub_403AB0+1ECo
  107. aCxk0507    db 'CXK0507',0          ; DATA XREF: sub_403AB0+1E2o
  108. aCrk0601    db 'CRK0601',0          ; DATA XREF: sub_403AB0+1D8o
  109. aCdk0228    db 'CDK0228',0          ; DATA XREF: sub_403AB0+1CEo
  110. aClb0623    db 'CLB0623',0          ; DATA XREF: sub_403AB0+1C4o
  111. aDob0712    db 'DOB0712',0          ; DATA XREF: sub_403AB0+1BAo
  112. aEcw0608    db 'ECW0608',0          ; DATA XREF: sub_403AB0+1B0o
  113. aMab0605    db 'MAB0605',0          ; DATA XREF: sub_403AB0+1A6o
  114. aDac0065    db 'DAC0065',0          ; DATA XREF: sub_403AB0+19Co
  115. aJrb0421    db 'JRB0421',0          ; DATA XREF: sub_403AB0+192o
  116. aKjr0430    db 'KJR0430',0          ; DATA XREF: sub_403AB0+188o
  117. aCch0522    db 'CCH0522',0          ; DATA XREF: sub_403AB0+17Eo
  118. aDjm0416    db 'DJM0416',0          ; DATA XREF: sub_403AB0+174o
  119. aJag5524    db 'JAG5524',0          ; DATA XREF: sub_403AB0+16Ao
  120. aKk4855g    db 'KK4855G',0          ; DATA XREF: sub_403AB0+160o
  121. aKp6697a    db 'KP6697A',0          ; DATA XREF: sub_403AB0+156o
  122. aSc8927w    db 'SC8927W',0          ; DATA XREF: sub_403AB0+14Co
  123. aCs1177j    db 'CS1177J',0          ; DATA XREF: sub_403AB0+142o
  124. aMs0853d    db 'MS0853D',0          ; DATA XREF: sub_403AB0+138o
  125. aPt8749b    db 'PT8749B',0          ; DATA XREF: sub_403AB0+12Eo
  126. aJm1149f    db 'JM1149F',0          ; DATA XREF: sub_403AB0+124o
  127. aAl0418g    db 'AL0418G',0          ; DATA XREF: sub_403AB0+11Ao
  128. aEa1742k    db 'EA1742K',0          ; DATA XREF: sub_403AB0+110o
  129. aSg0622h    db 'SG0622H',0          ; DATA XREF: sub_403AB0+106o
  130. aBm0621h    db 'BM0621H',0          ; DATA XREF: sub_403AB0+FCo
  131. aEh0411a    db 'EH0411A',0          ; DATA XREF: sub_403AB0+F2o
  132. aSh5313l    db 'SH5313L',0          ; DATA XREF: sub_403AB0+E8o
  133. aJs9934t    db 'JS9934T',0          ; DATA XREF: sub_403AB0+DEo
  134. aLt2988v    db 'LT2988V',0          ; DATA XREF: sub_403AB0+D4o
  135. aBj4819b    db 'BJ4819B',0          ; DATA XREF: sub_403AB0+CAo
  136. aBm2418u    db 'BM2418U',0          ; DATA XREF: sub_403AB0+C0o
  137. aDc1877g    db 'DC1877G',0          ; DATA XREF: sub_403AB0+B6o
  138. aJr5584s    db 'JR5584S',0          ; DATA XREF: sub_403AB0+ACo
  139. aBl3385w    db 'BL3385W',0          ; DATA XREF: sub_403AB0+A2o
  140. aNs4398k    db 'NS4398K',0          ; DATA XREF: sub_403AB0+98o
  141. aDs7934p    db 'DS7934P',0          ; DATA XREF: sub_403AB0+8Eo
  142. aLk3829a    db 'LK3829A',0          ; DATA XREF: sub_403AB0+84o
  143. aKv2261e    db 'KV2261E',0          ; DATA XREF: sub_403AB0+7Ao
  144. aWa6638y    db 'WA6638Y',0          ; DATA XREF: sub_403AB0+70o
  145. aDd2175r    db 'DD2175R',0          ; DATA XREF: sub_403AB0+66o
  146. aBk3682m    db 'BK3682M',0          ; DATA XREF: sub_403AB0+5Co
  147. aDw8432x    db 'DW8432X',0          ; DATA XREF: sub_403AB0+52o
  148. aKa453z4    db 'KA453Z4',0          ; DATA XREF: sub_403AB0+48o
  149. aVxj4253    db 'VXJ4253',0          ; DATA XREF: sub_403AB0+3Eo
  150. aU874j93    db 'U874J93',0          ; DATA XREF: sub_403AB0+34o
  151.  
  152.  
  153. .code
  154.  
  155.  
  156.  
  157. .startup
  158.  
  159. main    proc    near
  160.  
  161.  
  162.  
  163.         mov     ah, 09h                       ;
  164.         lea     edx, GroupLogo                ;
  165.         int     21h                           ; show group logo
  166.  
  167.         mov     ah, 09h                       ;
  168.         lea     edx, IntroMsgOne              ;
  169.         int     21h                           ; show intro and ask for input 
  170.  
  171.         mov     bx, 1903h                     ; limits for string input
  172.         lea     edi, NameBuffer               ;
  173.         call    getstr                        ; read user input
  174.         jc      @error                        ;
  175.         xor     eax, eax                      ; clear eax
  176.         call    keygen                        ; create serial number
  177.  
  178.         cmp     al, 'Q'
  179.         jne     onward
  180.         mov     ah, 09h                       ;
  181.         lea     dx, no_code                   ;
  182.         int     21h                           ; print error
  183.         jmp     @exit
  184.  
  185. onward:
  186.         mov     ah, 09h                       ;
  187.         lea     dx, ShowCodeMsg               ;
  188.         int     21h                           ; print serial number
  189.         jmp     @exit                         ; finished, quit
  190. @error:
  191.         mov     ah, 09h
  192.         lea     dx, ErrorMsg
  193.         int     21h        
  194. @exit:
  195.         mov     al, 00h                       ;
  196.         mov     ah, 4Ch                       ;
  197.         int     21h                           ; terminate program
  198. main    endp
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205. keygen  proc    near
  206.  
  207.         int     3
  208.         xor     eax, eax
  209.         xor     edx, edx
  210.         xor     ebx, ebx
  211.  
  212.         mov     esi, offset NameBuffer+2
  213.         movzx   ecx, byte ptr [namelength]
  214.         call    upcase
  215.  
  216.  
  217.  
  218.         mov     edi, offset WorkBuffer+6
  219.         mov     esi, offset NameBuffer+2
  220.         movzx   ecx, byte ptr [namelength]
  221.         rep     movsb
  222.  
  223.         add     byte ptr [namelength], 6
  224.  
  225.  
  226.         xor     eax, eax
  227.         xor     edx, edx
  228.         xor     ebx, ebx
  229.         mov     ecx, 0Dh
  230. seed_code_generation:
  231.         mov     al, byte ptr [WorkBuffer+edx]
  232.         mov     cl, dl
  233.         inc     cl
  234.         add     al, cl
  235.         mov     cl, al
  236.         mov     byte ptr [WorkBuffer+edx], al
  237.         add     bl, cl
  238.         inc     dl
  239.         cmp     dl, byte ptr [namelength]
  240.         jl      seed_code_generation
  241.  
  242.  
  243.         mov     al, bl
  244.         and     eax, 0FFh
  245.         and     eax, 3Fh
  246.         cmp     al, 3Fh
  247.         ja      cant_create_code
  248.  
  249.     jmp    word ptr ds:off_403D80[eax*4]  ; switch jump
  250.  
  251. loc_403AE4:                ; DATA XREF: .text:00403D80o
  252.         mov    edi, offset aU874j93 ; case 0
  253.         jmp    loc_403D5C
  254. ; ───────────────────────────────────────────────────────────────────────────
  255.  
  256. loc_403AEE:                ; CODE XREF: sub_403AB0+2Dj
  257.                     ; DATA XREF: .text:00403D80o
  258.         mov    edi, offset aVxj4253 ; case 0x1
  259.         jmp    loc_403D35
  260. ; ───────────────────────────────────────────────────────────────────────────
  261.  
  262. loc_403AF8:                ; CODE XREF: sub_403AB0+2Dj
  263.                     ; DATA XREF: .text:00403D80o
  264.         mov    edi, offset aKa453z4 ; case 0x2
  265.         jmp    loc_403D5C
  266. ; ───────────────────────────────────────────────────────────────────────────
  267.  
  268. loc_403B02:                ; CODE XREF: sub_403AB0+2Dj
  269.                     ; DATA XREF: .text:00403D80o
  270.         mov    edi, offset aDw8432x ; case 0x3
  271.         jmp    loc_403D35
  272. ; ───────────────────────────────────────────────────────────────────────────
  273.  
  274. loc_403B0C:                ; CODE XREF: sub_403AB0+2Dj
  275.                     ; DATA XREF: .text:00403D80o
  276.         mov    edi, offset aBk3682m ; case 0x4
  277.         jmp    loc_403D5C
  278. ; ───────────────────────────────────────────────────────────────────────────
  279.  
  280. loc_403B16:                ; CODE XREF: sub_403AB0+2Dj
  281.                     ; DATA XREF: .text:00403D80o
  282.         mov    edi, offset aDd2175r ; case 0x5
  283.         jmp    loc_403D35
  284. ; ───────────────────────────────────────────────────────────────────────────
  285.  
  286. loc_403B20:                ; CODE XREF: sub_403AB0+2Dj
  287.                     ; DATA XREF: .text:00403D80o
  288.         mov    edi, offset aWa6638y ; case 0x6
  289.         jmp    loc_403D5C
  290. ; ───────────────────────────────────────────────────────────────────────────
  291.  
  292. loc_403B2A:                ; CODE XREF: sub_403AB0+2Dj
  293.                     ; DATA XREF: .text:00403D80o
  294.         mov    edi, offset aKv2261e ; case 0x7
  295.         jmp    loc_403D35
  296. ; ───────────────────────────────────────────────────────────────────────────
  297.  
  298. loc_403B34:                ; CODE XREF: sub_403AB0+2Dj
  299.                     ; DATA XREF: .text:00403D80o
  300.         mov    edi, offset aLk3829a ; case 0x8
  301.         jmp    loc_403D5C
  302. ; ───────────────────────────────────────────────────────────────────────────
  303.  
  304. loc_403B3E:                ; CODE XREF: sub_403AB0+2Dj
  305.                     ; DATA XREF: .text:00403D80o
  306.         mov    edi, offset aDs7934p ; case 0x9
  307.         jmp    loc_403D35
  308. ; ───────────────────────────────────────────────────────────────────────────
  309.  
  310. loc_403B48:                ; CODE XREF: sub_403AB0+2Dj
  311.                     ; DATA XREF: .text:00403D80o
  312.         mov    edi, offset aNs4398k ; case 0xa
  313.         jmp    loc_403D5C
  314. ; ───────────────────────────────────────────────────────────────────────────
  315.  
  316. loc_403B52:                ; CODE XREF: sub_403AB0+2Dj
  317.                     ; DATA XREF: .text:00403D80o
  318.         mov    edi, offset aBl3385w ; case 0xb
  319.         jmp    loc_403D35
  320. ; ───────────────────────────────────────────────────────────────────────────
  321.  
  322. loc_403B5C:                ; CODE XREF: sub_403AB0+2Dj
  323.                     ; DATA XREF: .text:00403D80o
  324.         mov    edi, offset aJr5584s ; case 0xc
  325.         jmp    loc_403D5C
  326. ; ───────────────────────────────────────────────────────────────────────────
  327.  
  328. loc_403B66:                ; CODE XREF: sub_403AB0+2Dj
  329.                     ; DATA XREF: .text:00403D80o
  330.         mov    edi, offset aDc1877g ; case 0xd
  331.         jmp    loc_403D35
  332. ; ───────────────────────────────────────────────────────────────────────────
  333.  
  334. loc_403B70:                ; CODE XREF: sub_403AB0+2Dj
  335.                     ; DATA XREF: .text:00403D80o
  336.         mov    edi, offset aBm2418u ; case 0xe
  337.         jmp    loc_403D5C
  338. ; ───────────────────────────────────────────────────────────────────────────
  339.  
  340. loc_403B7A:                ; CODE XREF: sub_403AB0+2Dj
  341.                     ; DATA XREF: .text:00403D80o
  342.         mov    edi, offset aBj4819b ; case 0xf
  343.         jmp    loc_403D35
  344. ; ───────────────────────────────────────────────────────────────────────────
  345.  
  346. loc_403B84:                ; CODE XREF: sub_403AB0+2Dj
  347.                     ; DATA XREF: .text:00403D80o
  348.         mov    edi, offset aLt2988v ; case 0x10
  349.         jmp    loc_403D5C
  350. ; ───────────────────────────────────────────────────────────────────────────
  351.  
  352. loc_403B8E:                ; CODE XREF: sub_403AB0+2Dj
  353.                     ; DATA XREF: .text:00403D80o
  354.         mov    edi, offset aJs9934t ; case 0x11
  355.         jmp    loc_403D35
  356. ; ───────────────────────────────────────────────────────────────────────────
  357.  
  358. loc_403B98:                ; CODE XREF: sub_403AB0+2Dj
  359.                     ; DATA XREF: .text:00403D80o
  360.         mov    edi, offset aSh5313l ; case 0x12
  361.         jmp    loc_403D5C
  362. ; ───────────────────────────────────────────────────────────────────────────
  363.  
  364. loc_403BA2:                ; CODE XREF: sub_403AB0+2Dj
  365.                     ; DATA XREF: .text:00403D80o
  366.         mov    edi, offset aEh0411a ; case 0x13
  367.         jmp    loc_403D35
  368. ; ───────────────────────────────────────────────────────────────────────────
  369.  
  370. loc_403BAC:                ; CODE XREF: sub_403AB0+2Dj
  371.                     ; DATA XREF: .text:00403D80o
  372.         mov    edi, offset aBm0621h ; case 0x14
  373.         jmp    loc_403D5C
  374. ; ───────────────────────────────────────────────────────────────────────────
  375.  
  376. loc_403BB6:                ; CODE XREF: sub_403AB0+2Dj
  377.                     ; DATA XREF: .text:00403D80o
  378.         mov    edi, offset aSg0622h ; case 0x15
  379.         jmp    loc_403D35
  380. ; ───────────────────────────────────────────────────────────────────────────
  381.  
  382. loc_403BC0:                ; CODE XREF: sub_403AB0+2Dj
  383.                     ; DATA XREF: .text:00403D80o
  384.         mov    edi, offset aEa1742k ; case 0x16
  385.         jmp    loc_403D5C
  386. ; ───────────────────────────────────────────────────────────────────────────
  387.  
  388. loc_403BCA:                ; CODE XREF: sub_403AB0+2Dj
  389.                     ; DATA XREF: .text:00403D80o
  390.         mov    edi, offset aAl0418g ; case 0x17
  391.         jmp    loc_403D35
  392. ; ───────────────────────────────────────────────────────────────────────────
  393.  
  394. loc_403BD4:                ; CODE XREF: sub_403AB0+2Dj
  395.                     ; DATA XREF: .text:00403D80o
  396.         mov    edi, offset aJm1149f ; case 0x18
  397.         jmp    loc_403D5C
  398. ; ───────────────────────────────────────────────────────────────────────────
  399.  
  400. loc_403BDE:                ; CODE XREF: sub_403AB0+2Dj
  401.                     ; DATA XREF: .text:00403D80o
  402.         mov    edi, offset aPt8749b ; case 0x19
  403.         jmp    loc_403D35
  404. ; ───────────────────────────────────────────────────────────────────────────
  405.  
  406. loc_403BE8:                ; CODE XREF: sub_403AB0+2Dj
  407.                     ; DATA XREF: .text:00403D80o
  408.         mov    edi, offset aMs0853d ; case 0x1a
  409.         jmp    loc_403D5C
  410. ; ───────────────────────────────────────────────────────────────────────────
  411.  
  412. loc_403BF2:                ; CODE XREF: sub_403AB0+2Dj
  413.                     ; DATA XREF: .text:00403D80o
  414.         mov    edi, offset aCs1177j ; case 0x1b
  415.         jmp    loc_403D35
  416. ; ───────────────────────────────────────────────────────────────────────────
  417.  
  418. loc_403BFC:                ; CODE XREF: sub_403AB0+2Dj
  419.                     ; DATA XREF: .text:00403D80o
  420.         mov    edi, offset aSc8927w ; case 0x1c
  421.         jmp    loc_403D5C
  422. ; ───────────────────────────────────────────────────────────────────────────
  423.  
  424. loc_403C06:                ; CODE XREF: sub_403AB0+2Dj
  425.                     ; DATA XREF: .text:00403D80o
  426.         mov    edi, offset aKp6697a ; case 0x1d
  427.         jmp    loc_403D35
  428. ; ───────────────────────────────────────────────────────────────────────────
  429.  
  430. loc_403C10:                ; CODE XREF: sub_403AB0+2Dj
  431.                     ; DATA XREF: .text:00403D80o
  432.         mov    edi, offset aKk4855g ; case 0x1e
  433.         jmp    loc_403D5C
  434. ; ───────────────────────────────────────────────────────────────────────────
  435.  
  436. loc_403C1A:                ; CODE XREF: sub_403AB0+2Dj
  437.                     ; DATA XREF: .text:00403D80o
  438.         mov    edi, offset aJag5524 ; case 0x1f
  439.         jmp    loc_403D35
  440. ; ───────────────────────────────────────────────────────────────────────────
  441.  
  442. loc_403C24:                ; CODE XREF: sub_403AB0+2Dj
  443.                     ; DATA XREF: .text:00403D80o
  444.         mov    edi, offset aDjm0416 ; case 0x20
  445.         jmp    loc_403D5C
  446. ; ───────────────────────────────────────────────────────────────────────────
  447.  
  448. loc_403C2E:                ; CODE XREF: sub_403AB0+2Dj
  449.                     ; DATA XREF: .text:00403D80o
  450.         mov    edi, offset aCch0522 ; case 0x21
  451.         jmp    loc_403D35
  452. ; ───────────────────────────────────────────────────────────────────────────
  453.  
  454. loc_403C38:                ; CODE XREF: sub_403AB0+2Dj
  455.                     ; DATA XREF: .text:00403D80o
  456.         mov    edi, offset aKjr0430 ; case 0x22
  457.         jmp    loc_403D5C
  458. ; ───────────────────────────────────────────────────────────────────────────
  459.  
  460. loc_403C42:                ; CODE XREF: sub_403AB0+2Dj
  461.                     ; DATA XREF: .text:00403D80o
  462.         mov    edi, offset aJrb0421 ; case 0x23
  463.         jmp    loc_403D35
  464. ; ───────────────────────────────────────────────────────────────────────────
  465.  
  466. loc_403C4C:                ; CODE XREF: sub_403AB0+2Dj
  467.                     ; DATA XREF: .text:00403D80o
  468.         mov    edi, offset aDac0065 ; case 0x24
  469.         jmp    loc_403D5C
  470. ; ───────────────────────────────────────────────────────────────────────────
  471.  
  472. loc_403C56:                ; CODE XREF: sub_403AB0+2Dj
  473.                     ; DATA XREF: .text:00403D80o
  474.         mov    edi, offset aMab0605 ; case 0x25
  475.         jmp    loc_403D35
  476. ; ───────────────────────────────────────────────────────────────────────────
  477.  
  478. loc_403C60:                ; CODE XREF: sub_403AB0+2Dj
  479.                     ; DATA XREF: .text:00403D80o
  480.         mov    edi, offset aEcw0608 ; case 0x26
  481.         jmp    loc_403D5C
  482. ; ───────────────────────────────────────────────────────────────────────────
  483.  
  484. loc_403C6A:                ; CODE XREF: sub_403AB0+2Dj
  485.                     ; DATA XREF: .text:00403D80o
  486.         mov    edi, offset aDob0712 ; case 0x27
  487.         jmp    loc_403D35
  488. ; ───────────────────────────────────────────────────────────────────────────
  489.  
  490. loc_403C74:                ; CODE XREF: sub_403AB0+2Dj
  491.                     ; DATA XREF: .text:00403D80o
  492.         mov    edi, offset aClb0623 ; case 0x28
  493.         jmp    loc_403D5C
  494. ; ───────────────────────────────────────────────────────────────────────────
  495.  
  496. loc_403C7E:                ; CODE XREF: sub_403AB0+2Dj
  497.                     ; DATA XREF: .text:00403D80o
  498.         mov    edi, offset aCdk0228 ; case 0x29
  499.         jmp    loc_403D35
  500. ; ───────────────────────────────────────────────────────────────────────────
  501.  
  502. loc_403C88:                ; CODE XREF: sub_403AB0+2Dj
  503.                     ; DATA XREF: .text:00403D80o
  504.         mov    edi, offset aCrk0601 ; case 0x2a
  505.         jmp    loc_403D5C
  506. ; ───────────────────────────────────────────────────────────────────────────
  507.  
  508. loc_403C92:                ; CODE XREF: sub_403AB0+2Dj
  509.                     ; DATA XREF: .text:00403D80o
  510.         mov    edi, offset aCxk0507 ; case 0x2b
  511.         jmp    loc_403D35
  512. ; ───────────────────────────────────────────────────────────────────────────
  513.  
  514. loc_403C9C:                ; CODE XREF: sub_403AB0+2Dj
  515.                     ; DATA XREF: .text:00403D80o
  516.         mov    edi, offset aLlb6034 ; case 0x2c
  517.         jmp    loc_403D5C
  518. ; ───────────────────────────────────────────────────────────────────────────
  519.  
  520. loc_403CA6:                ; CODE XREF: sub_403AB0+2Dj
  521.                     ; DATA XREF: .text:00403D80o
  522.         mov    edi, offset aUpr4255 ; case 0x2d
  523.         jmp    loc_403D35
  524. ; ───────────────────────────────────────────────────────────────────────────
  525.  
  526. loc_403CB0:                ; CODE XREF: sub_403AB0+2Dj
  527.                     ; DATA XREF: .text:00403D80o
  528.         mov    edi, offset aNn1640e ; case 0x2e
  529.         jmp    loc_403D5C
  530. ; ───────────────────────────────────────────────────────────────────────────
  531.  
  532. loc_403CBA:                ; CODE XREF: sub_403AB0+2Dj
  533.                     ; DATA XREF: .text:00403D80o
  534.         mov    edi, offset aWm1215w ; case 0x2f
  535.         jmp    loc_403D35
  536. ; ───────────────────────────────────────────────────────────────────────────
  537.  
  538. loc_403CC1:                ; CODE XREF: sub_403AB0+2Dj
  539.                     ; DATA XREF: .text:00403D80o
  540.         mov    edi, offset aBm0215m ; case 0x30
  541.         jmp    loc_403D5C
  542. ; ───────────────────────────────────────────────────────────────────────────
  543.  
  544. loc_403CCB:                ; CODE XREF: sub_403AB0+2Dj
  545.                     ; DATA XREF: .text:00403D80o
  546.         mov    edi, offset aFsl8930 ; case 0x31
  547.         jmp    short loc_403D35
  548. ; ───────────────────────────────────────────────────────────────────────────
  549.  
  550. loc_403CD2:                ; CODE XREF: sub_403AB0+2Dj
  551.                     ; DATA XREF: .text:00403D80o
  552.         mov    edi, offset aPas4258 ; case 0x32
  553.         jmp    loc_403D5C
  554. ; ───────────────────────────────────────────────────────────────────────────
  555.  
  556. loc_403CDC:                ; CODE XREF: sub_403AB0+2Dj
  557.                     ; DATA XREF: .text:00403D80o
  558.         mov    edi, offset aKfd1269 ; case 0x33
  559.         jmp    short loc_403D35
  560. ; ───────────────────────────────────────────────────────────────────────────
  561.  
  562. loc_403CE3:                ; CODE XREF: sub_403AB0+2Dj
  563.                     ; DATA XREF: .text:00403D80o
  564.         mov    edi, offset aJjj0816 ; case 0x34
  565.         jmp    short loc_403D5C
  566. ; ───────────────────────────────────────────────────────────────────────────
  567.  
  568. loc_403CEA:                ; CODE XREF: sub_403AB0+2Dj
  569.                     ; DATA XREF: .text:00403D80o
  570.         mov    edi, offset aJmc3452 ; case 0x35
  571.         jmp    short loc_403D35
  572. ; ───────────────────────────────────────────────────────────────────────────
  573.  
  574. loc_403CF1:                ; CODE XREF: sub_403AB0+2Dj
  575.                     ; DATA XREF: .text:00403D80o
  576.         mov    edi, offset aSlh4228 ; case 0x36
  577.         jmp    short loc_403D5C
  578. ; ───────────────────────────────────────────────────────────────────────────
  579.  
  580. loc_403CF8:                ; CODE XREF: sub_403AB0+2Dj
  581.                     ; DATA XREF: .text:00403D80o
  582.         mov    edi, offset aTdb1883 ; case 0x37
  583.         jmp    short loc_403D35
  584. ; ───────────────────────────────────────────────────────────────────────────
  585.  
  586. loc_403CFF:                ; CODE XREF: sub_403AB0+2Dj
  587.                     ; DATA XREF: .text:00403D80o
  588.         mov    edi, offset aMsc1990 ; case 0x38
  589.         jmp    short loc_403D5C
  590. ; ───────────────────────────────────────────────────────────────────────────
  591.  
  592. loc_403D06:                ; CODE XREF: sub_403AB0+2Dj
  593.                     ; DATA XREF: .text:00403D80o
  594.         mov    edi, offset aGme4445 ; case 0x39
  595.         jmp    short loc_403D35
  596. ; ───────────────────────────────────────────────────────────────────────────
  597.  
  598. loc_403D0D:                ; CODE XREF: sub_403AB0+2Dj
  599.                     ; DATA XREF: .text:00403D80o
  600.         mov    edi, offset aJej5512 ; case 0x3a
  601.         jmp    short loc_403D5C
  602. ; ───────────────────────────────────────────────────────────────────────────
  603.  
  604. loc_403D14:                ; CODE XREF: sub_403AB0+2Dj
  605.                     ; DATA XREF: .text:00403D80o
  606.         mov    edi, offset aKao6294 ; case 0x3b
  607.         jmp    short loc_403D35
  608. ; ───────────────────────────────────────────────────────────────────────────
  609.  
  610. loc_403D1B:                ; CODE XREF: sub_403AB0+2Dj
  611.                     ; DATA XREF: .text:00403D80o
  612.         mov    edi, offset aEeh0611 ; case 0x3c
  613.         jmp    short loc_403D5C
  614. ; ───────────────────────────────────────────────────────────────────────────
  615.  
  616. loc_403D22:                ; CODE XREF: sub_403AB0+2Dj
  617.                     ; DATA XREF: .text:00403D80o
  618.         mov    edi, offset aBjw0226 ; case 0x3d
  619.         jmp    short loc_403D35
  620. ; ───────────────────────────────────────────────────────────────────────────
  621.  
  622. loc_403D29:                ; CODE XREF: sub_403AB0+2Dj
  623.                     ; DATA XREF: .text:00403D80o
  624.         mov    edi, offset aAmc5673 ; case 0x3e
  625.         jmp    short loc_403D5C
  626. ; ───────────────────────────────────────────────────────────────────────────
  627.  
  628. loc_403D30:                ; CODE XREF: sub_403AB0+2Dj
  629.                     ; DATA XREF: .text:00403D80o
  630.         mov    edi, offset aPbg0213 ; case 0x3f
  631.  
  632. loc_403D35:                ; CODE XREF: sub_403AB0+43j
  633. loc_403D57:                ; CODE XREF: sub_403AB0+27j
  634.         ;mov    edi, offset unk_42B3B8 ; default
  635.  
  636. loc_403D5C:                
  637.  
  638.  
  639.  
  640.  
  641.         mov     esi, edi
  642.         mov     edi, offset [CodeBuffer]
  643.         mov     ecx, 07
  644.         rep     movsb
  645.         jmp     to_ret
  646.  
  647. ;        xor    edx, edx
  648. ;    mov    ecx, 0000000Ah        
  649. ;    lea    edi, Code2Buffer
  650. ;       call    convert_num
  651. cant_create_code:
  652.         mov     al, 'Q'
  653. to_ret:
  654.     ret
  655. keygen    endp
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662. ; get string from user
  663. ; input :
  664. ;       edi = pointer to buffer
  665. ;       bl  = min length
  666. ;       bh  = max length
  667. ; output :
  668. ;    CF error, cx number of bytes read
  669. getstr  proc    near
  670.         push    dx                            ; save dx
  671.         mov     dx, di                        ;
  672.         mov     ah, 0Ah                       ;
  673.         int     021h                          ; get user input
  674.  
  675.         movsx   ecx, byte ptr [edi + 1]       ; get number of digits
  676.  
  677.         mov     byte ptr [edi + ecx + 2], 00h
  678.  
  679.         cmp     cl, bh                        ; check maximum
  680.         jg      @@0
  681.         cmp     cl, bl                        ; check minimum
  682.         jl      @@0
  683.         mov     [namelength], cl              ; store length
  684.     xor    ch, ch
  685.         clc                                   ; clear CF
  686.         jmp     @@1
  687. @@0:
  688.         stc                                   ; set CF (carry flag)        
  689. @@1:
  690.         pop     dx                            ; restore dx
  691.     ret
  692. getstr  endp
  693.  
  694. Convert_Num proc near
  695.         pushf
  696.     pushAD
  697.  
  698.         sub     esp, 4
  699.         mov     ebp,esp
  700.  
  701.         cld
  702.         mov     esi, edi
  703.         push    esi
  704.  
  705. ;--- loop for each digit
  706.  
  707.         sub     bh, bh
  708.         mov     dword ptr [ebp], eax               ;save low word
  709.         mov     dword ptr [ebp+4], edx             ;save high word
  710.         sub     esi, esi                          ;count digits
  711.  
  712. Connum1:
  713.         inc     esi
  714.         mov     eax, dword ptr [ebp+4]             ;high word of value
  715.         sub     edx, edx                          ;clear for divide
  716.         sub    ebx, ebx
  717.         div     ecx                              ;divide, DX gets remainder
  718.         mov     dword ptr [ebp+4],eax             ;save quotient (new high word)
  719.  
  720.         mov     eax, dword ptr [ebp]               ;low word of value
  721.         div     ecx                              ;divide, DX gets remainder
  722.                                                 ;  (the digit)
  723.         mov     dword ptr [ebp], eax               ;save quotient (new low word)
  724.  
  725.         mov     bl, dl
  726.         mov     al, byte ptr [Convert_Digs+ebx]  ;get the digit
  727.         stosb                                   ;store
  728.  
  729.         cmp     dword ptr [ebp], 0                ;check if low word zero
  730.         jne     Connum1                         ;jump if not
  731.         cmp     dword ptr [ebp+4], 0              ;check if high word zero
  732.         jne     Connum1                         ;jump if not
  733.  
  734.         sub     al, al
  735.         stosb                                   ;store the terminator
  736.  
  737. ;--- reverse digits
  738.  
  739.         pop     ecx                              ;restore start of string
  740.         xchg    ecx, esi
  741.         shr     ecx, 1                           ;number of reverses
  742.         jz      Connum3                         ;jump if none
  743.  
  744.         xchg    edi, esi
  745.         sub     esi, 2                           ;point to last digit
  746.  
  747. Connum2 :
  748.         mov     al, byte ptr [edi]               ;load front character
  749.         xchg    al, byte ptr [esi]               ;swap with end character
  750.         stosb                                   ;store new front character
  751.         dec     esi                              ;back up
  752.         loopd   Connum2                         ;loop back for each digit
  753.  
  754. ;--- finished
  755.  
  756. Connum3  :
  757.         add     esp, 4
  758.  
  759.     popad
  760.         popf
  761.         ret
  762.  endp           ;Convert_Num
  763.  
  764. upcase  PROC
  765.     pushf
  766.     pushad
  767. nextletter:                   ; EBX = No. of letters
  768.     MOV     AL,[ESI]    ; EDX = INTEXT
  769.     CMP     AL,61h
  770.     JB      notlowcase
  771.     CMP     AL,7Ah
  772.     JA      notlowcase
  773.     SUB     AL,20h        ; Lowcase - make it upcase
  774.     MOV     [ESI],AL
  775. notlowcase:
  776.     INC     ESI
  777.     DEC     ECX
  778.     TEST    ECX,ECX
  779.     JNZ     nextletter
  780.     popad
  781.     popf
  782.     Ret
  783.  
  784. Upcase endp
  785.  
  786. end    main