.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 ',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