Align It!  1998/99 by Sandra Erb
align-it@shareware-games.net
http://www.shareware-games.net

do with what you like, but dont recompile my source and release it as your own...
this is the dead listing and a few comments for the serial algo from align it...
NOT A TUTORIAL

the good code, takes digits from name, randomish places, begining, middle & end ??
store the ascii values in said places, then retrives them two at a time,
adds them together, div 10, remainder = serial digit
take all remainders(7 of em), in reverse order, 76543xx21 == proper serial, xx= '26'


Break due to BPX #015F:004021D8
:u eip l 400
015F:004021DA  E8F7360200          CALL    004258D6     ; get length
015F:004021DF  83F803              CMP     EAX,03
015F:004021E2  0F8CE1030000        JL      004025C9     ; must be >2
015F:004021E8  8B07                MOV     EAX,[EDI]
015F:004021EA  0FBE18              MOVSX   EBX,BYTE PTR [EAX]   ; #0=ebx=letter1
015F:004021ED  66C746100800        MOV     WORD PTR [ESI+10],0008
015F:004021F3  0FBE4001            MOVSX   EAX,BYTE PTR [EAX+01]
015F:004021F7  89857CFFFFFF        MOV     [EBP-0084],EAX   ; #1=ebp-84=letter2
015F:004021FD  8BC7                MOV     EAX,EDI
015F:004021FF  E8D2360200          CALL    004258D6 ; get length
015F:00402204  D1F8                SAR     EAX,1    ; div 2
015F:00402206  7903                JNS     0040220B ; jump if not signed to skip adc
015F:00402208  83D000              ADC     EAX,00
015F:0040220B  40                  INC     EAX      ; add 1
015F:0040220C  898574FFFFFF        MOV     [EBP-008C],EAX
015F:00402212  8BC7                MOV     EAX,EDI
015F:00402214  8B9574FFFFFF        MOV     EDX,[EBP-008C]
015F:0040221A  0317                ADD     EDX,[EDI]
015F:0040221C  4A                  DEC     EDX
015F:0040221D  0FBE0A              MOVSX   ECX,BYTE PTR [EDX]
015F:00402220  898D78FFFFFF        MOV     [EBP-0088],ECX   ; #2=ebp-88 = letter (length/2+1)
015F:00402226  E8AB360200          CALL    004258D6 ; get length
015F:0040222B  48                  DEC     EAX      ; sub 1
015F:0040222C  89856CFFFFFF        MOV     [EBP-0094],EAX
015F:00402232  8BC7                MOV     EAX,EDI
015F:00402234  8B956CFFFFFF        MOV     EDX,[EBP-0094]
015F:0040223A  0317                ADD     EDX,[EDI]
015F:0040223C  4A                  DEC     EDX      ; sub another 1
015F:0040223D  0FBE0A              MOVSX   ECX,BYTE PTR [EDX]
015F:00402240  898D70FFFFFF        MOV     [EBP-0090],ECX   ; #3=ebp-90 = letter (length-2)
015F:00402246  E88B360200          CALL    004258D6 ; get length
015F:0040224B  898564FFFFFF        MOV     [EBP-009C],EAX
015F:00402251  8B9564FFFFFF        MOV     EDX,[EBP-009C]
015F:00402257  0317                ADD     EDX,[EDI]
015F:00402259  4A                  DEC     EDX
015F:0040225A  0FBE0A              MOVSX   ECX,BYTE PTR [EDX]
015F:0040225D  898D68FFFFFF        MOV     [EBP-0098],ECX   ; #4=ebp-98 = letter (length-1)
015F:00402263  66C746102C00        MOV     WORD PTR [ESI+10],002C
015F:00402269  8B8568FFFFFF        MOV     EAX,[EBP-0098]
015F:0040226F  03857CFFFFFF        ADD     EAX,[EBP-0084]
015F:00402275  898548FFFFFF        MOV     [EBP-00B8],EAX   
015F:0040227B  8B8548FFFFFF        MOV     EAX,[EBP-00B8]
015F:00402281  99                  CDQ
015F:00402282  33C2                XOR     EAX,EDX
015F:00402284  2BC2                SUB     EAX,EDX
015F:00402286  B90A000000          MOV     ECX,0000000A
015F:0040228B  99                  CDQ
015F:0040228C  F7F9                IDIV    ECX          ; eax=#1+#4
015F:0040228E  8BC2                MOV     EAX,EDX
015F:00402290  33D2                XOR     EDX,EDX
015F:00402292  8955A8              MOV     [EBP-58],EDX
015F:00402295  8D55A8              LEA     EDX,[EBP-58]
015F:00402298  FF461C              INC     DWORD PTR [ESI+1C]
015F:0040229B  E840170400          CALL    004439E0
015F:004022A0  8D45A8              LEA     EAX,[EBP-58]
015F:004022A3  50                  PUSH    EAX
015F:004022A4  8B8D7CFFFFFF        MOV     ECX,[EBP-0084]
015F:004022AA  03CB                ADD     ECX,EBX
015F:004022AC  898D4CFFFFFF        MOV     [EBP-00B4],ECX
015F:004022B2  8B854CFFFFFF        MOV     EAX,[EBP-00B4]
015F:004022B8  99                  CDQ
015F:004022B9  33C2                XOR     EAX,EDX
015F:004022BB  2BC2                SUB     EAX,EDX
015F:004022BD  B90A000000          MOV     ECX,0000000A
015F:004022C2  99                  CDQ
015F:004022C3  F7F9                IDIV    ECX          ; eax=#0+#1
015F:004022C5  8BC2                MOV     EAX,EDX
015F:004022C7  33D2                XOR     EDX,EDX
015F:004022C9  8955B0              MOV     [EBP-50],EDX
015F:004022CC  8D55B0              LEA     EDX,[EBP-50]
015F:004022CF  FF461C              INC     DWORD PTR [ESI+1C]
015F:004022D2  E809170400          CALL    004439E0
015F:004022D7  8D45B0              LEA     EAX,[EBP-50]
015F:004022DA  33C9                XOR     ECX,ECX
015F:004022DC  50                  PUSH    EAX
015F:004022DD  894DB8              MOV     [EBP-48],ECX
015F:004022E0  FF461C              INC     DWORD PTR [ESI+1C]
015F:004022E3  B81A000000          MOV     EAX,0000001A
015F:004022E8  8D55B8              LEA     EDX,[EBP-48]
015F:004022EB  E8F0160400          CALL    004439E0
015F:004022F0  8D4DB8              LEA     ECX,[EBP-48]
015F:004022F3  8D041B              LEA     EAX,[EBX+EBX]
015F:004022F6  51                  PUSH    ECX
015F:004022F7  898550FFFFFF        MOV     [EBP-00B0],EAX
015F:004022FD  8B8550FFFFFF        MOV     EAX,[EBP-00B0]
015F:00402303  B90A000000          MOV     ECX,0000000A
015F:00402308  99                  CDQ
015F:00402309  33C2                XOR     EAX,EDX
015F:0040230B  2BC2                SUB     EAX,EDX
015F:0040230D  99                  CDQ
015F:0040230E  F7F9                IDIV    ECX          ; eax=#0+#0
015F:00402310  8BC2                MOV     EAX,EDX
015F:00402312  33D2                XOR     EDX,EDX
015F:00402314  8955C0              MOV     [EBP-40],EDX
015F:00402317  8D55C0              LEA     EDX,[EBP-40]
015F:0040231A  FF461C              INC     DWORD PTR [ESI+1C]
015F:0040231D  E8BE160400          CALL    004439E0
015F:00402322  8D45C0              LEA     EAX,[EBP-40]
015F:00402325  50                  PUSH    EAX
015F:00402326  8B8D7CFFFFFF        MOV     ECX,[EBP-0084]   ;#1
015F:0040232C  038D78FFFFFF        ADD     ECX,[EBP-0088]   ;#2
015F:00402332  038D70FFFFFF        ADD     ECX,[EBP-0090]   ;#3
015F:00402338  898D54FFFFFF        MOV     [EBP-00AC],ECX
015F:0040233E  8B8554FFFFFF        MOV     EAX,[EBP-00AC]
015F:00402344  99                  CDQ
015F:00402345  33C2                XOR     EAX,EDX
015F:00402347  2BC2                SUB     EAX,EDX
015F:00402349  B90A000000          MOV     ECX,0000000A
015F:0040234E  99                  CDQ
015F:0040234F  F7F9                IDIV    ECX              ; eax=#1+#2+#3
015F:00402351  8BC2                MOV     EAX,EDX
015F:00402353  33D2                XOR     EDX,EDX
015F:00402355  8955C8              MOV     [EBP-38],EDX
015F:00402358  8D55C8              LEA     EDX,[EBP-38]
015F:0040235B  FF461C              INC     DWORD PTR [ESI+1C]
015F:0040235E  E87D160400          CALL    004439E0
015F:00402363  8D45C8              LEA     EAX,[EBP-38]
015F:00402366  50                  PUSH    EAX
015F:00402367  8B8D78FFFFFF        MOV     ECX,[EBP-0088]
015F:0040236D  038D68FFFFFF        ADD     ECX,[EBP-0098]
015F:00402373  898D58FFFFFF        MOV     [EBP-00A8],ECX
015F:00402379  8B8558FFFFFF        MOV     EAX,[EBP-00A8]
015F:0040237F  99                  CDQ
015F:00402380  33C2                XOR     EAX,EDX
015F:00402382  2BC2                SUB     EAX,EDX
015F:00402384  B90A000000          MOV     ECX,0000000A
015F:00402389  99                  CDQ
015F:0040238A  F7F9                IDIV    ECX              ; eax=#2+#4
015F:0040238C  8BC2                MOV     EAX,EDX
015F:0040238E  33D2                XOR     EDX,EDX
015F:00402390  8955D0              MOV     [EBP-30],EDX
015F:00402393  8D55D0              LEA     EDX,[EBP-30]
015F:00402396  FF461C              INC     DWORD PTR [ESI+1C]
015F:00402399  E842160400          CALL    004439E0
015F:0040239E  8D45D0              LEA     EAX,[EBP-30]
015F:004023A1  50                  PUSH    EAX
015F:004023A2  8B8D70FFFFFF        MOV     ECX,[EBP-0090]
015F:004023A8  038D68FFFFFF        ADD     ECX,[EBP-0098]
015F:004023AE  898D5CFFFFFF        MOV     [EBP-00A4],ECX
015F:004023B4  8B855CFFFFFF        MOV     EAX,[EBP-00A4]
015F:004023BA  99                  CDQ
015F:004023BB  33C2                XOR     EAX,EDX
015F:004023BD  2BC2                SUB     EAX,EDX
015F:004023BF  B90A000000          MOV     ECX,0000000A
015F:004023C4  99                  CDQ
015F:004023C5  F7F9                IDIV    ECX              ; eax=#3+#4
015F:004023C7  8BC2                MOV     EAX,EDX
015F:004023C9  33D2                XOR     EDX,EDX
015F:004023CB  8955D8              MOV     [EBP-28],EDX
015F:004023CE  8D55D8              LEA     EDX,[EBP-28]
015F:004023D1  FF461C              INC     DWORD PTR [ESI+1C]
015F:004023D4  E807160400          CALL    004439E0
015F:004023D9  8D45D8              LEA     EAX,[EBP-28]
015F:004023DC  B90A000000          MOV     ECX,0000000A
015F:004023E1  50                  PUSH    EAX
015F:004023E2  8B857CFFFFFF        MOV     EAX,[EBP-0084]
015F:004023E8  03C3                ADD     EAX,EBX
015F:004023EA  99                  CDQ
015F:004023EB  F7F9                IDIV    ECX              ; eax=#0+#1


; eax=#1+#4,; eax=#0+#1,; eax=#0+#0,; eax=#1+#2+#3,; eax=#2+#4,; eax=#3+#4,; eax=#0+#1

; #0=ebx=letter1
; #1=ebp-84=letter2
; #2=ebp-88 = letter (length/2+1)
; #3=ebp-90 = letter (length-2)
; #4=ebp-98 = letter (length-1) (last char)

'dumbcode'
#0=d
#1=u
#2=c
#3=d
#4=e
'lamer'
#0=l
#1=a
#2=m
#3=e
#4=r

'R!SC'
52215343

#0=52   ;R
#1=21   ;!
#2=53   ;S
#3=53   ;S
#4=43   ;C

;21+43/10

'r!sc' 744382672

015F:004023ED  899560FFFFFF        MOV     [EBP-00A0],EDX
015F:004023F3  33C9                XOR     ECX,ECX
015F:004023F5  8B8560FFFFFF        MOV     EAX,[EBP-00A0]
015F:004023FB  894DDC              MOV     [EBP-24],ECX
015F:004023FE  99                  CDQ
015F:004023FF  33C2                XOR     EAX,EDX
015F:00402401  2BC2                SUB     EAX,EDX
015F:00402403  8D55DC              LEA     EDX,[EBP-24]
015F:00402406  FF461C              INC     DWORD PTR [ESI+1C]
015F:00402409  E8D2150400          CALL    004439E0
015F:0040240E  8D45DC              LEA     EAX,[EBP-24]
015F:00402411  33C9                XOR     ECX,ECX
015F:00402413  894DD4              MOV     [EBP-2C],ECX
015F:00402416  8D4DD4              LEA     ECX,[EBP-2C]
015F:00402419  FF461C              INC     DWORD PTR [ESI+1C]
015F:0040241C  5A                  POP     EDX
015F:0040241D  E8B1320200          CALL    004256D3
015F:00402422  8D45D4              LEA     EAX,[EBP-2C]
015F:00402425  33D2                XOR     EDX,EDX
015F:00402427  8955CC              MOV     [EBP-34],EDX
015F:0040242A  8D4DCC              LEA     ECX,[EBP-34]
015F:0040242D  FF461C              INC     DWORD PTR [ESI+1C]
015F:00402430  5A                  POP     EDX
015F:00402431  E89D320200          CALL    004256D3
015F:00402436  8D45CC              LEA     EAX,[EBP-34]
015F:00402439  33C9                XOR     ECX,ECX
015F:0040243B  894DC4              MOV     [EBP-3C],ECX
015F:0040243E  8D4DC4              LEA     ECX,[EBP-3C]
015F:00402441  FF461C              INC     DWORD PTR [ESI+1C]
015F:00402444  5A                  POP     EDX
015F:00402445  E889320200          CALL    004256D3
015F:0040244A  8D45C4              LEA     EAX,[EBP-3C]
015F:0040244D  33D2                XOR     EDX,EDX
015F:0040244F  8955BC              MOV     [EBP-44],EDX
015F:00402452  8D4DBC              LEA     ECX,[EBP-44]
015F:00402455  FF461C              INC     DWORD PTR [ESI+1C]
015F:00402458  5A                  POP     EDX
015F:00402459  E875320200          CALL    004256D3
015F:0040245E  8D45BC              LEA     EAX,[EBP-44]
015F:00402461  33C9                XOR     ECX,ECX
015F:00402463  894DB4              MOV     [EBP-4C],ECX
015F:00402466  8D4DB4              LEA     ECX,[EBP-4C]
015F:00402469  FF461C              INC     DWORD PTR [ESI+1C]
015F:0040246C  5A                  POP     EDX
015F:0040246D  E861320200          CALL    004256D3
015F:00402472  8D45B4              LEA     EAX,[EBP-4C]
015F:00402475  33D2                XOR     EDX,EDX
015F:00402477  8955AC              MOV     [EBP-54],EDX
015F:0040247A  8D4DAC              LEA     ECX,[EBP-54]
015F:0040247D  FF461C              INC     DWORD PTR [ESI+1C]
015F:00402480  5A                  POP     EDX
015F:00402481  E84D320200          CALL    004256D3
015F:00402486  8D45AC              LEA     EAX,[EBP-54]
015F:00402489  33C9                XOR     ECX,ECX
015F:0040248B  894DA4              MOV     [EBP-5C],ECX
015F:0040248E  8D4DA4              LEA     ECX,[EBP-5C]
015F:00402491  FF461C              INC     DWORD PTR [ESI+1C]
015F:00402494  5A                  POP     EDX
015F:00402495  E839320200          CALL    004256D3
015F:0040249A  8D55A4              LEA     EDX,[EBP-5C]
015F:0040249D  8D45F8              LEA     EAX,[EBP-08]
015F:004024A0  E8B7320200          CALL    0042575C
015F:004024A5  50                  PUSH    EAX
015F:004024A6  FF4E1C              DEC     DWORD PTR [ESI+1C]
015F:004024A9  8D45A4              LEA     EAX,[EBP-5C]
015F:004024AC  BA02000000          MOV     EDX,00000002
015F:004024B1  E8C6310200          CALL    0042567C
015F:004024B6  FF4E1C              DEC     DWORD PTR [ESI+1C]
015F:004024B9  8D45A8              LEA     EAX,[EBP-58]
015F:004024BC  BA02000000          MOV     EDX,00000002
015F:004024C1  E8B6310200          CALL    0042567C
015F:004024C6  FF4E1C              DEC     DWORD PTR [ESI+1C]
015F:004024C9  8D45AC              LEA     EAX,[EBP-54]
015F:004024CC  BA02000000          MOV     EDX,00000002
015F:004024D1  E8A6310200          CALL    0042567C
015F:004024D6  FF4E1C              DEC     DWORD PTR [ESI+1C]
015F:004024D9  8D45B0              LEA     EAX,[EBP-50]
015F:004024DC  BA02000000          MOV     EDX,00000002
015F:004024E1  E896310200          CALL    0042567C
015F:004024E6  FF4E1C              DEC     DWORD PTR [ESI+1C]
015F:004024E9  8D45B4              LEA     EAX,[EBP-4C]
015F:004024EC  BA02000000          MOV     EDX,00000002
015F:004024F1  E886310200          CALL    0042567C
015F:004024F6  FF4E1C              DEC     DWORD PTR [ESI+1C]
015F:004024F9  8D45B8              LEA     EAX,[EBP-48]
015F:004024FC  BA02000000          MOV     EDX,00000002
015F:00402501  E876310200          CALL    0042567C
015F:00402506  FF4E1C              DEC     DWORD PTR [ESI+1C]
015F:00402509  8D45BC              LEA     EAX,[EBP-44]
015F:0040250C  BA02000000          MOV     EDX,00000002
015F:00402511  E866310200          CALL    0042567C
015F:00402516  FF4E1C              DEC     DWORD PTR [ESI+1C]
015F:00402519  8D45C0              LEA     EAX,[EBP-40]
015F:0040251C  BA02000000          MOV     EDX,00000002
015F:00402521  E856310200          CALL    0042567C
015F:00402526  FF4E1C              DEC     DWORD PTR [ESI+1C]
015F:00402529  8D45C4              LEA     EAX,[EBP-3C]
015F:0040252C  BA02000000          MOV     EDX,00000002
015F:00402531  E846310200          CALL    0042567C
015F:00402536  FF4E1C              DEC     DWORD PTR [ESI+1C]
015F:00402539  8D45C8              LEA     EAX,[EBP-38]
015F:0040253C  BA02000000          MOV     EDX,00000002
015F:00402541  E836310200          CALL    0042567C
015F:00402546  FF4E1C              DEC     DWORD PTR [ESI+1C]
015F:00402549  8D45CC              LEA     EAX,[EBP-34]
015F:0040254C  BA02000000          MOV     EDX,00000002
015F:00402551  E826310200          CALL    0042567C
015F:00402556  FF4E1C              DEC     DWORD PTR [ESI+1C]
015F:00402559  8D45D0              LEA     EAX,[EBP-30]
015F:0040255C  BA02000000          MOV     EDX,00000002
015F:00402561  E816310200          CALL    0042567C
015F:00402566  FF4E1C              DEC     DWORD PTR [ESI+1C]
015F:00402569  8D45D4              LEA     EAX,[EBP-2C]
015F:0040256C  BA02000000          MOV     EDX,00000002
015F:00402571  E806310200          CALL    0042567C
015F:00402576  FF4E1C              DEC     DWORD PTR [ESI+1C]
015F:00402579  8D45D8              LEA     EAX,[EBP-28]
015F:0040257C  BA02000000          MOV     EDX,00000002
015F:00402581  E8F6300200          CALL    0042567C
015F:00402586  FF4E1C              DEC     DWORD PTR [ESI+1C]
015F:00402589  8D45DC              LEA     EAX,[EBP-24]
015F:0040258C  BA02000000          MOV     EDX,00000002
015F:00402591  E8E6300200          CALL    0042567C
015F:00402596  59                  POP     ECX
015F:00402597  84C9                TEST    CL,CL
015F:00402599  742E                JZ      004025C9
015F:0040259B  B001                MOV     AL,01
015F:0040259D  BA02000000          MOV     EDX,00000002
015F:004025A2  50                  PUSH    EAX
015F:004025A3  8D45F8              LEA     EAX,[EBP-08]
015F:004025A6  FF4E1C              DEC     DWORD PTR [ESI+1C]
015F:004025A9  E8CE300200          CALL    0042567C
015F:004025AE  FF4E1C              DEC     DWORD PTR [ESI+1C]
015F:004025B1  8BC7                MOV     EAX,EDI
015F:004025B3  BA02000000          MOV     EDX,00000002
015F:004025B8  E8BF300200          CALL    0042567C
015F:004025BD  58                  POP     EAX
015F:004025BE  8B16                MOV     EDX,[ESI]
015F:004025C0  64891500000000      MOV     FS:[00000000],EDX
015F:004025C7  EB2C                JMP     004025F5
015F:004025C9  33C0                XOR     EAX,EAX
015F:004025CB  BA02000000          MOV     EDX,00000002
015F:004025D0  50                  PUSH    EAX
015F:004025D1  8D45F8              LEA     EAX,[EBP-08]
015F:004025D4  FF4E1C              DEC     DWORD PTR [ESI+1C]
015F:004025D7  E8A0300200          CALL    0042567C
:?e2-79
00000069  0000000105  "i"
:?7969
00007969  0000031081  "yi"
:69819
Invalid command
:d eax
:d edi
:d esi
:d edx
:d ebx
:d edi
:u eip l 400bl
:bl
00) * BPX KERNEL!HMEMCPY
01) * BPMD #0167:0112DAFC RW DR3
02)   BPX #015F:004021D8
Break due to BPX #015F:004021D8
:6981999
Invalid command
:d edi
:d ebx
:d edx
Break due to BPX #015F:004021D8
:s 0 l ffffffff 'riscbitch'
Pattern found at 0167:0112DC84 (0112DC84)
:9982239
Invalid command
:93228299       ; 93228 26 99  (code 4 riscbitch)
Invalid command
Break due to BPX #015F:004021D8
Break due to BPX #015F:004021D8
:0546435
Invalid command
:53464xx05
Invalid command
Break due to BPX #015F:004021D8
Break due to BPX #015F:004021D8
:imagodbaby!!
Symbol not defined (magodbaby)
:2400164        ; the idiv remainders
Invalid command
:46100 26 42    ; reversed, with '26' added
Invalid command
:takes letters x&y, add together, div x, remainder=code digit..
Syntax error
:reverse the code, 5 digits..26..last 2 digits
