home *** CD-ROM | disk | FTP | other *** search
- .model tiny
-
- .386
-
- org 100h
-
- .data
-
- GroupLogo db 13,10
- db ' ▄▄▄▄▄ ',13,10
- db ' █ ▄ █ ',13,10
- db ' █▀▀▀▀▀▀▀▀ ▄ ▀▀▀▀▀ ▀ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█ █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ ▀ ▀▀▀▀█ ',13,10
- db ' █ │░███████ │▓███████▀ │░███▀█▀▀▀▀▀▀▀ ▀ ▀▀▀▀ │░███▀█▀▀▀▀▀▓████▓▄ █ ',13,10
- db ' █ │▒███████ │▓███████ │▒███████ │▓███████▀ │▒███████ │▓███████ █ ',13,10
- db ' █ │▓███████ │▓███████ │▓███████ │▓███████ │▓███████ │▓███████ █ ',13,10
- db ' ▀ │▓███████ │▓███████ │▓███████ │▓███████ │▓███████ │▓███████ █▄▄▄ ',13,10
- db ' ▀ │▓███████ │▓███████ │▓███████ │▓███████ │▓███████ │▓███████▄ ▄ █ ',13,10
- db ' █ │▓███████ │▓███████ │▓███████ │▓███████ │▓███████ █ ',13,10
- db ' █ │▓███████▄▄▄▄▄█▄█▓▀ │▓███████▄▄▄▄▄█▄████ │▓███████▀▀ ▀ ▀ █ ',13,10
- db ' █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ▄ ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ▀ █▀▀▀▀▀▀▀▀▀ ▀ ▀▀ ',13,10
- db ' .::[ u n i t e d · c r æ c k i n g · f o r c e ]::. █ ▀ █ Antibody<SAC> ',13,10
- db ' █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ▄ ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ▀ █▀▀▀▀▀▀▀▀▀ ▀ ▀▀ ',13,10
- db ' -----=====----- ',13,10
- db ' [■] FontViewer v1.0 - Key Generator by Quantico [■] ',13,10
- db ' -----=====----- ',13,10
- db ' ',13,10,'$'
-
-
-
- IntroMsgOne db 13,10,'Enter a name please : ','$'
-
-
- ErrorMsg db 13,10,'Need 3-25 digits, try again...',13,10,'$'
-
- no_code db 13,10,'Cannot create code for this name, try again...',13,10,'$'
-
- ShowCodeMsg db 13,10,13,10,'--=[Valid registration code]=-- ',13,10,' '
-
- CodeBuffer db 20 dup(0),13,10,'$'
-
- NameBuffer db 18h, 19h dup(0)
-
- WorkBuffer db 'VFUFW-',1Ah dup(0)
-
- Convert_Digs db '0123456789ABCDEF'
-
- namelength db 0
-
- ; ───────────────────────────────────────────────────────────────────────────
- ;align 4
- off_403D80 dd offset loc_403AE4, offset loc_403AEE ; DATA XREF: sub_403AB0+2Dr
- dd offset loc_403AF8, offset loc_403B02 ; jump table for switch statement
- dd offset loc_403B0C, offset loc_403B16
- dd offset loc_403B20, offset loc_403B2A
- dd offset loc_403B34, offset loc_403B3E
- dd offset loc_403B48, offset loc_403B52
- dd offset loc_403B5C, offset loc_403B66
- dd offset loc_403B70, offset loc_403B7A
- dd offset loc_403B84, offset loc_403B8E
- dd offset loc_403B98, offset loc_403BA2
- dd offset loc_403BAC, offset loc_403BB6
- dd offset loc_403BC0, offset loc_403BCA
- dd offset loc_403BD4, offset loc_403BDE
- dd offset loc_403BE8, offset loc_403BF2
- dd offset loc_403BFC, offset loc_403C06
- dd offset loc_403C10, offset loc_403C1A
- dd offset loc_403C24, offset loc_403C2E
- dd offset loc_403C38, offset loc_403C42
- dd offset loc_403C4C, offset loc_403C56
- dd offset loc_403C60, offset loc_403C6A
- dd offset loc_403C74, offset loc_403C7E
- dd offset loc_403C88, offset loc_403C92
- dd offset loc_403C9C, offset loc_403CA6
- dd offset loc_403CB0, offset loc_403CBA
- dd offset loc_403CC1, offset loc_403CCB
- dd offset loc_403CD2, offset loc_403CDC
- dd offset loc_403CE3, offset loc_403CEA
- dd offset loc_403CF1, offset loc_403CF8
- dd offset loc_403CFF, offset loc_403D06
- dd offset loc_403D0D, offset loc_403D14
- dd offset loc_403D1B, offset loc_403D22
- dd offset loc_403D29, offset loc_403D30
-
- ; ███████████████████████████████████████████████████████████████████████████
-
-
- aPbg0213 db 'PBG0213',0 ; DATA XREF: sub_403AB0+280o
- aAmc5673 db 'AMC5673',0 ; DATA XREF: sub_403AB0+279o
- aBjw0226 db 'BJW0226',0 ; DATA XREF: sub_403AB0+272o
- aEeh0611 db 'EEH0611',0 ; DATA XREF: sub_403AB0+26Bo
- aKao6294 db 'KAO6294',0 ; DATA XREF: sub_403AB0+264o
- aJej5512 db 'JEJ5512',0 ; DATA XREF: sub_403AB0+25Do
- aGme4445 db 'GME4445',0 ; DATA XREF: sub_403AB0+256o
- aMsc1990 db 'MSC1990',0 ; DATA XREF: sub_403AB0+24Fo
- aTdb1883 db 'TDB1883',0 ; DATA XREF: sub_403AB0+248o
- aSlh4228 db 'SLH4228',0 ; DATA XREF: sub_403AB0+241o
- aJmc3452 db 'JMC3452',0 ; DATA XREF: sub_403AB0+23Ao
- aJjj0816 db 'JJJ0816',0 ; DATA XREF: sub_403AB0+233o
- aKfd1269 db 'KFD1269',0 ; DATA XREF: sub_403AB0+22Co
- aPas4258 db 'PAS4258',0 ; DATA XREF: sub_403AB0+222o
- aFsl8930 db 'FSL8930',0 ; DATA XREF: sub_403AB0+21Bo
- aBm0215m db 'BM0215M',0 ; DATA XREF: sub_403AB0+211o
- aWm1215w db 'WM1215W',0 ; DATA XREF: sub_403AB0+20Ao
- aNn1640e db 'NN1640E',0 ; DATA XREF: sub_403AB0+200o
- aUpr4255 db 'UPR4255',0 ; DATA XREF: sub_403AB0+1F6o
- aLlb6034 db 'LLB6034',0 ; DATA XREF: sub_403AB0+1ECo
- aCxk0507 db 'CXK0507',0 ; DATA XREF: sub_403AB0+1E2o
- aCrk0601 db 'CRK0601',0 ; DATA XREF: sub_403AB0+1D8o
- aCdk0228 db 'CDK0228',0 ; DATA XREF: sub_403AB0+1CEo
- aClb0623 db 'CLB0623',0 ; DATA XREF: sub_403AB0+1C4o
- aDob0712 db 'DOB0712',0 ; DATA XREF: sub_403AB0+1BAo
- aEcw0608 db 'ECW0608',0 ; DATA XREF: sub_403AB0+1B0o
- aMab0605 db 'MAB0605',0 ; DATA XREF: sub_403AB0+1A6o
- aDac0065 db 'DAC0065',0 ; DATA XREF: sub_403AB0+19Co
- aJrb0421 db 'JRB0421',0 ; DATA XREF: sub_403AB0+192o
- aKjr0430 db 'KJR0430',0 ; DATA XREF: sub_403AB0+188o
- aCch0522 db 'CCH0522',0 ; DATA XREF: sub_403AB0+17Eo
- aDjm0416 db 'DJM0416',0 ; DATA XREF: sub_403AB0+174o
- aJag5524 db 'JAG5524',0 ; DATA XREF: sub_403AB0+16Ao
- aKk4855g db 'KK4855G',0 ; DATA XREF: sub_403AB0+160o
- aKp6697a db 'KP6697A',0 ; DATA XREF: sub_403AB0+156o
- aSc8927w db 'SC8927W',0 ; DATA XREF: sub_403AB0+14Co
- aCs1177j db 'CS1177J',0 ; DATA XREF: sub_403AB0+142o
- aMs0853d db 'MS0853D',0 ; DATA XREF: sub_403AB0+138o
- aPt8749b db 'PT8749B',0 ; DATA XREF: sub_403AB0+12Eo
- aJm1149f db 'JM1149F',0 ; DATA XREF: sub_403AB0+124o
- aAl0418g db 'AL0418G',0 ; DATA XREF: sub_403AB0+11Ao
- aEa1742k db 'EA1742K',0 ; DATA XREF: sub_403AB0+110o
- aSg0622h db 'SG0622H',0 ; DATA XREF: sub_403AB0+106o
- aBm0621h db 'BM0621H',0 ; DATA XREF: sub_403AB0+FCo
- aEh0411a db 'EH0411A',0 ; DATA XREF: sub_403AB0+F2o
- aSh5313l db 'SH5313L',0 ; DATA XREF: sub_403AB0+E8o
- aJs9934t db 'JS9934T',0 ; DATA XREF: sub_403AB0+DEo
- aLt2988v db 'LT2988V',0 ; DATA XREF: sub_403AB0+D4o
- aBj4819b db 'BJ4819B',0 ; DATA XREF: sub_403AB0+CAo
- aBm2418u db 'BM2418U',0 ; DATA XREF: sub_403AB0+C0o
- aDc1877g db 'DC1877G',0 ; DATA XREF: sub_403AB0+B6o
- aJr5584s db 'JR5584S',0 ; DATA XREF: sub_403AB0+ACo
- aBl3385w db 'BL3385W',0 ; DATA XREF: sub_403AB0+A2o
- aNs4398k db 'NS4398K',0 ; DATA XREF: sub_403AB0+98o
- aDs7934p db 'DS7934P',0 ; DATA XREF: sub_403AB0+8Eo
- aLk3829a db 'LK3829A',0 ; DATA XREF: sub_403AB0+84o
- aKv2261e db 'KV2261E',0 ; DATA XREF: sub_403AB0+7Ao
- aWa6638y db 'WA6638Y',0 ; DATA XREF: sub_403AB0+70o
- aDd2175r db 'DD2175R',0 ; DATA XREF: sub_403AB0+66o
- aBk3682m db 'BK3682M',0 ; DATA XREF: sub_403AB0+5Co
- aDw8432x db 'DW8432X',0 ; DATA XREF: sub_403AB0+52o
- aKa453z4 db 'KA453Z4',0 ; DATA XREF: sub_403AB0+48o
- aVxj4253 db 'VXJ4253',0 ; DATA XREF: sub_403AB0+3Eo
- aU874j93 db 'U874J93',0 ; DATA XREF: sub_403AB0+34o
-
-
- .code
-
-
-
- .startup
-
- main proc near
-
-
-
- mov ah, 09h ;
- lea edx, GroupLogo ;
- int 21h ; show group logo
-
- mov ah, 09h ;
- lea edx, IntroMsgOne ;
- int 21h ; show intro and ask for input
-
- mov bx, 1903h ; limits for string input
- lea edi, NameBuffer ;
- call getstr ; read user input
- jc @error ;
- xor eax, eax ; clear eax
- call keygen ; create serial number
-
- cmp al, 'Q'
- jne onward
- mov ah, 09h ;
- lea dx, no_code ;
- int 21h ; print error
- jmp @exit
-
- onward:
- mov ah, 09h ;
- lea dx, ShowCodeMsg ;
- int 21h ; print serial number
- jmp @exit ; finished, quit
- @error:
- mov ah, 09h
- lea dx, ErrorMsg
- int 21h
- @exit:
- mov al, 00h ;
- mov ah, 4Ch ;
- int 21h ; terminate program
- main endp
-
-
-
-
-
-
- keygen proc near
-
- int 3
- xor eax, eax
- xor edx, edx
- xor ebx, ebx
-
- mov esi, offset NameBuffer+2
- movzx ecx, byte ptr [namelength]
- call upcase
-
-
-
- mov edi, offset WorkBuffer+6
- mov esi, offset NameBuffer+2
- movzx ecx, byte ptr [namelength]
- rep movsb
-
- add byte ptr [namelength], 6
-
-
- xor eax, eax
- xor edx, edx
- xor ebx, ebx
- mov ecx, 0Dh
- seed_code_generation:
- mov al, byte ptr [WorkBuffer+edx]
- mov cl, dl
- inc cl
- add al, cl
- mov cl, al
- mov byte ptr [WorkBuffer+edx], al
- add bl, cl
- inc dl
- cmp dl, byte ptr [namelength]
- jl seed_code_generation
-
-
- mov al, bl
- and eax, 0FFh
- and eax, 3Fh
- cmp al, 3Fh
- ja cant_create_code
-
- jmp word ptr ds:off_403D80[eax*4] ; switch jump
-
- loc_403AE4: ; DATA XREF: .text:00403D80o
- mov edi, offset aU874j93 ; case 0
- jmp loc_403D5C
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403AEE: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aVxj4253 ; case 0x1
- jmp loc_403D35
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403AF8: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aKa453z4 ; case 0x2
- jmp loc_403D5C
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403B02: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aDw8432x ; case 0x3
- jmp loc_403D35
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403B0C: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aBk3682m ; case 0x4
- jmp loc_403D5C
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403B16: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aDd2175r ; case 0x5
- jmp loc_403D35
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403B20: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aWa6638y ; case 0x6
- jmp loc_403D5C
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403B2A: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aKv2261e ; case 0x7
- jmp loc_403D35
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403B34: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aLk3829a ; case 0x8
- jmp loc_403D5C
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403B3E: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aDs7934p ; case 0x9
- jmp loc_403D35
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403B48: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aNs4398k ; case 0xa
- jmp loc_403D5C
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403B52: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aBl3385w ; case 0xb
- jmp loc_403D35
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403B5C: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aJr5584s ; case 0xc
- jmp loc_403D5C
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403B66: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aDc1877g ; case 0xd
- jmp loc_403D35
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403B70: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aBm2418u ; case 0xe
- jmp loc_403D5C
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403B7A: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aBj4819b ; case 0xf
- jmp loc_403D35
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403B84: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aLt2988v ; case 0x10
- jmp loc_403D5C
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403B8E: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aJs9934t ; case 0x11
- jmp loc_403D35
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403B98: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aSh5313l ; case 0x12
- jmp loc_403D5C
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403BA2: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aEh0411a ; case 0x13
- jmp loc_403D35
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403BAC: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aBm0621h ; case 0x14
- jmp loc_403D5C
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403BB6: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aSg0622h ; case 0x15
- jmp loc_403D35
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403BC0: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aEa1742k ; case 0x16
- jmp loc_403D5C
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403BCA: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aAl0418g ; case 0x17
- jmp loc_403D35
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403BD4: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aJm1149f ; case 0x18
- jmp loc_403D5C
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403BDE: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aPt8749b ; case 0x19
- jmp loc_403D35
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403BE8: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aMs0853d ; case 0x1a
- jmp loc_403D5C
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403BF2: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aCs1177j ; case 0x1b
- jmp loc_403D35
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403BFC: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aSc8927w ; case 0x1c
- jmp loc_403D5C
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403C06: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aKp6697a ; case 0x1d
- jmp loc_403D35
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403C10: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aKk4855g ; case 0x1e
- jmp loc_403D5C
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403C1A: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aJag5524 ; case 0x1f
- jmp loc_403D35
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403C24: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aDjm0416 ; case 0x20
- jmp loc_403D5C
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403C2E: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aCch0522 ; case 0x21
- jmp loc_403D35
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403C38: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aKjr0430 ; case 0x22
- jmp loc_403D5C
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403C42: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aJrb0421 ; case 0x23
- jmp loc_403D35
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403C4C: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aDac0065 ; case 0x24
- jmp loc_403D5C
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403C56: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aMab0605 ; case 0x25
- jmp loc_403D35
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403C60: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aEcw0608 ; case 0x26
- jmp loc_403D5C
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403C6A: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aDob0712 ; case 0x27
- jmp loc_403D35
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403C74: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aClb0623 ; case 0x28
- jmp loc_403D5C
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403C7E: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aCdk0228 ; case 0x29
- jmp loc_403D35
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403C88: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aCrk0601 ; case 0x2a
- jmp loc_403D5C
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403C92: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aCxk0507 ; case 0x2b
- jmp loc_403D35
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403C9C: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aLlb6034 ; case 0x2c
- jmp loc_403D5C
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403CA6: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aUpr4255 ; case 0x2d
- jmp loc_403D35
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403CB0: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aNn1640e ; case 0x2e
- jmp loc_403D5C
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403CBA: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aWm1215w ; case 0x2f
- jmp loc_403D35
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403CC1: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aBm0215m ; case 0x30
- jmp loc_403D5C
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403CCB: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aFsl8930 ; case 0x31
- jmp short loc_403D35
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403CD2: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aPas4258 ; case 0x32
- jmp loc_403D5C
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403CDC: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aKfd1269 ; case 0x33
- jmp short loc_403D35
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403CE3: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aJjj0816 ; case 0x34
- jmp short loc_403D5C
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403CEA: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aJmc3452 ; case 0x35
- jmp short loc_403D35
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403CF1: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aSlh4228 ; case 0x36
- jmp short loc_403D5C
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403CF8: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aTdb1883 ; case 0x37
- jmp short loc_403D35
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403CFF: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aMsc1990 ; case 0x38
- jmp short loc_403D5C
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403D06: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aGme4445 ; case 0x39
- jmp short loc_403D35
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403D0D: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aJej5512 ; case 0x3a
- jmp short loc_403D5C
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403D14: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aKao6294 ; case 0x3b
- jmp short loc_403D35
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403D1B: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aEeh0611 ; case 0x3c
- jmp short loc_403D5C
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403D22: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aBjw0226 ; case 0x3d
- jmp short loc_403D35
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403D29: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aAmc5673 ; case 0x3e
- jmp short loc_403D5C
- ; ───────────────────────────────────────────────────────────────────────────
-
- loc_403D30: ; CODE XREF: sub_403AB0+2Dj
- ; DATA XREF: .text:00403D80o
- mov edi, offset aPbg0213 ; case 0x3f
-
- loc_403D35: ; CODE XREF: sub_403AB0+43j
- loc_403D57: ; CODE XREF: sub_403AB0+27j
- ;mov edi, offset unk_42B3B8 ; default
-
- loc_403D5C:
-
-
-
-
- mov esi, edi
- mov edi, offset [CodeBuffer]
- mov ecx, 07
- rep movsb
- jmp to_ret
-
- ; xor edx, edx
- ; mov ecx, 0000000Ah
- ; lea edi, Code2Buffer
- ; call convert_num
- cant_create_code:
- mov al, 'Q'
- to_ret:
- ret
- keygen endp
-
-
-
-
-
-
- ; get string from user
- ; input :
- ; edi = pointer to buffer
- ; bl = min length
- ; bh = max length
- ; output :
- ; CF error, cx number of bytes read
- getstr proc near
- push dx ; save dx
- mov dx, di ;
- mov ah, 0Ah ;
- int 021h ; get user input
-
- movsx ecx, byte ptr [edi + 1] ; get number of digits
-
- mov byte ptr [edi + ecx + 2], 00h
-
- cmp cl, bh ; check maximum
- jg @@0
- cmp cl, bl ; check minimum
- jl @@0
- mov [namelength], cl ; store length
- xor ch, ch
- clc ; clear CF
- jmp @@1
- @@0:
- stc ; set CF (carry flag)
- @@1:
- pop dx ; restore dx
- ret
- getstr endp
-
- Convert_Num proc near
- pushf
- pushAD
-
- sub esp, 4
- mov ebp,esp
-
- cld
- mov esi, edi
- push esi
-
- ;--- loop for each digit
-
- sub bh, bh
- mov dword ptr [ebp], eax ;save low word
- mov dword ptr [ebp+4], edx ;save high word
- sub esi, esi ;count digits
-
- Connum1:
- inc esi
- mov eax, dword ptr [ebp+4] ;high word of value
- sub edx, edx ;clear for divide
- sub ebx, ebx
- div ecx ;divide, DX gets remainder
- mov dword ptr [ebp+4],eax ;save quotient (new high word)
-
- mov eax, dword ptr [ebp] ;low word of value
- div ecx ;divide, DX gets remainder
- ; (the digit)
- mov dword ptr [ebp], eax ;save quotient (new low word)
-
- mov bl, dl
- mov al, byte ptr [Convert_Digs+ebx] ;get the digit
- stosb ;store
-
- cmp dword ptr [ebp], 0 ;check if low word zero
- jne Connum1 ;jump if not
- cmp dword ptr [ebp+4], 0 ;check if high word zero
- jne Connum1 ;jump if not
-
- sub al, al
- stosb ;store the terminator
-
- ;--- reverse digits
-
- pop ecx ;restore start of string
- xchg ecx, esi
- shr ecx, 1 ;number of reverses
- jz Connum3 ;jump if none
-
- xchg edi, esi
- sub esi, 2 ;point to last digit
-
- Connum2 :
- mov al, byte ptr [edi] ;load front character
- xchg al, byte ptr [esi] ;swap with end character
- stosb ;store new front character
- dec esi ;back up
- loopd Connum2 ;loop back for each digit
-
- ;--- finished
-
- Connum3 :
- add esp, 4
-
- popad
- popf
- ret
- endp ;Convert_Num
-
- upcase PROC
- pushf
- pushad
- nextletter: ; EBX = No. of letters
- MOV AL,[ESI] ; EDX = INTEXT
- CMP AL,61h
- JB notlowcase
- CMP AL,7Ah
- JA notlowcase
- SUB AL,20h ; Lowcase - make it upcase
- MOV [ESI],AL
- notlowcase:
- INC ESI
- DEC ECX
- TEST ECX,ECX
- JNZ nextletter
- popad
- popf
- Ret
-
- Upcase endp
-
- end main