home *** CD-ROM | disk | FTP | other *** search
- ;Written by Lucifer48 for "Hard" :)
- ;compile with :tasm32 -ml -m5 -q hard-lu48
- ; tlink32 -Tpe -aa -x -c hard-lu48 ,,, import32
- ;-----------------------------------------------------------------------------
- .386p ;386 instruction set enable
- .model flat, stdCALL
-
- extrn ExitProcess : PROC
- extrn MessageBoxA : PROC
-
- .data
-
- combin db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
- db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
- db 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 ;1: all possibilities have been tested
- ;before (only 1 solution).
- texte2 db "Nothing has been found",0
-
- titre db "Oui!!!!!!!",0
- texte db "O O O O O O O O O O O O O ",10,13
- db "O O O O O O O O O O O O O ",10,13
- db "O O O O O O O O O O O O O ",0
-
- .code
- ;-----------------------------------------------------------------------------
- TESTCOMB PROC
-
- mov edi, 39F51B20h
- push 118DF6E7h
- mov esi, 202937CDh
- mov ebp, 6FB25085h
-
- mov eax, dword ptr [ebx+00h]
- test al, al
- je SUITE1
- add edi, 00004925h
- sub dword ptr [esp], 00040CE2h
- mov eax, esi
- mov ecx, 00000003h
- cdq
- idiv ecx
- mov esi, eax
- add ebp, 0000FD18h
-
- SUITE1:
- mov eax, dword ptr [ebx+01h]
- test al, al
- je SUITE2
- sub edi, 000A4DACh
- add dword ptr [esp], 000C909Ch
- lea eax, dword ptr [esi+4*esi]
- mov esi, eax
- sub ebp, 000594FEh
-
- SUITE2:
- mov eax, dword ptr [ebx+02h]
- test al, al
- je SUITE3
- add edi, 0009DE58h
- sub dword ptr [esp], 000342ADh
- mov eax, esi
- mov ecx, 00000007h
- cdq
- idiv ecx
- mov esi, eax
- add ebp, 000154DFh
-
- SUITE3:
- mov eax, dword ptr [ebx+03h]
- test al, al
- je SUITE4
- sub edi, 0006A9F6h
- sub dword ptr [esp], 000C9164h
- sar esi, 1
- jns signe1
- adc esi, 00000000h
- signe1:
- sub ebp, 000169E5h
-
- SUITE4:
- mov eax, dword ptr [ebx+04h]
- test al, al
- je SUITE5
- sub edi, 00039798h
- sub dword ptr [esp], 00011E75h
- mov eax, esi
- add eax, eax
- mov esi, eax
- add ebp, 00056942h
-
- SUITE5:
- mov eax, dword ptr [ebx+05h]
- test al, al
- je SUITE6
- sub edi, 000A4DACh
- add dword ptr [esp], 000C909Ch
- lea eax, dword ptr [esi+4*esi]
- mov esi, eax
- sub ebp, 00080109h
-
- SUITE6:
- mov eax, dword ptr [ebx+06h]
- test al, al
- je SUITE7
- mov eax, edi
- mov ecx, 00000009h
- cdq
- idiv ecx
- mov edi, eax
- mov eax, dword ptr [esp]
- lea eax, dword ptr [eax+4*eax]
- mov dword ptr [esp], eax
- add esi, 00005C0Dh
- sub ebp, 000548E6h
-
- SUITE7:
- mov eax, dword ptr [ebx+07h]
- test al, al
- je SUITE8
- mov eax, edi
- shl eax, 02
- mov edi, eax
- add dword ptr [esp], 000C909Ch
- add esi, 00039BEDh
- mov eax, ebp
- mov ecx, 00000005
- cdq
- idiv ecx
- mov ebp, eax
-
- SUITE8:
- mov eax, dword ptr [ebx+08h]
- test al, al
- je SUITE9
- sub edi, 000A4DACh
- add dword ptr [esp], 000C909Ch
- lea eax, dword ptr [esi+2*esi]
- mov esi, eax
- sub ebp, 000594FEh
-
- SUITE9:
- mov eax, dword ptr [ebx+09h]
- test al, al
- je SUITE10
- sub edi, 000A5D4Ch
- add dword ptr [esp], 000C909Ch
- lea eax, dword ptr [esi+4*esi]
- mov esi, eax
- sub ebp, 000592A6h
-
- SUITE10:
- mov eax, dword ptr [ebx+0Ah]
- test al, al
- je SUITE11
- sub edi, 00098A5Ch
- add dword ptr [esp], 000C8FD4h
- mov eax, esi
- mov ecx, 00000005h
- cdq
- idiv ecx
- mov esi, eax
- sub ebp, 0005E382h
-
- SUITE11:
- mov eax, dword ptr [ebx+0Bh]
- test al, al
- je SUITE12
- add edi, 000A4DACh
- sub dword ptr [esp], 000C909Ch
- lea eax, dword ptr [esi+4*esi]
- mov esi, eax
- sub ebp, 000594FEh
-
- SUITE12:
- mov eax, dword ptr [ebx+0Ch]
- test al, al
- je SUITE13
- sub edi, 000A4DACh
- add dword ptr [esp], 00014214h
- lea eax, dword ptr [esi+4*esi]
- mov esi, eax
- sub ebp, 00059436h
-
- SUITE13:
- mov eax, dword ptr [ebx+0Dh]
- test al, al
- je SUITE14
- sub edi, 000BAD3Ch
- add dword ptr [esp], 00005B9Ch
- add esi, 00000005h
- sub ebp, 000594FEh
-
- SUITE14:
- mov eax, dword ptr [ebx+0Eh]
- test al, al
- je SUITE15
- sub edi, 000A3A24h
- add dword ptr [esp], 00014606h
- sub esi, 00000A05h
- add ebp, 00008BEEh
-
- SUITE15:
- mov eax, dword ptr [ebx+0Fh]
- test al, al
- je SUITE16
- sub edi, 00010710h
- add dword ptr [esp], 000C909Ch
- add esi, 00008B65h
- sub ebp, 0000D626h
-
- SUITE16:
- mov eax, dword ptr [ebx+10h]
- test al, al
- je SUITE17
- sub edi, 000107C4h
- add dword ptr [esp], 00000D7Ch
- sub esi, 0000093Dh
- add ebp, 00009639h
-
- SUITE17:
- mov eax, dword ptr [ebx+11h]
- test al, al
- je SUITE18
- add edi, 00010896h
- sub dword ptr [esp], 000151B4h
- mov eax, esi
- mov ecx, 00000005h
- cdq
- idiv ecx
- mov esi, eax
- add ebp, 00009242h
-
- SUITE18:
- mov eax, dword ptr [ebx+12h]
- test al, al
- je SUITE19
- mov eax, edi
- add eax, eax
- lea eax, dword ptr [eax+2*eax]
- mov edi, eax
- sub dword ptr [esp], 00000D7Ch
- add esi, 00001D0Bh
- add ebp, 00000142h
-
- SUITE19:
- mov eax, dword ptr [ebx+13h]
- test al, al
- je SUITE20
- mov eax, edi
- mov ecx, 00000006h
- cdq
- idiv ecx
- mov edi, eax
- mov eax, dword ptr [esp]
- lea eax, dword ptr [eax+2*eax]
- mov dword ptr [esp], eax
- mov eax, esi
- add eax, eax
- mov esi, eax
- mov eax, ebp
- mov ecx, 00000003h
- cdq
- idiv ecx
- mov ebp, eax
-
- SUITE20:
- mov eax, dword ptr [ebx+14h]
- test al, al
- je SUITE21
- add edi, 000106ACh
- mov eax, dword ptr [esp]
- mov ecx, 00000005h
- cdq
- idiv ecx
- mov dword ptr [esp], eax
- add esi, 000011DFh
- add ebp, 0000020Ah
-
- SUITE21:
- mov eax, dword ptr [ebx+15h]
- test al, al
- je SUITE22
- sub edi, ebp
- add dword ptr [esp], esi
- add esi, 00001879h
- sub ebp, 00000152h
-
- SUITE22:
- mov eax, dword ptr [ebx+16h]
- test al, al
- je SUITE23
- add edi, 00012E34h
- add dword ptr [esp], 000C909Ch
- sub esi, 0000016Fh
- sub ebp, edi
-
- SUITE23:
- mov eax, dword ptr [ebx+17h]
- test al, al
- je SUITE24
- mov eax, esi
- sub eax, ebp
- sub edi, eax
- add dword ptr [esp], 00001920h
- mov eax, esi
- mov ecx, 00000009h
- cdq
- idiv ecx
- mov esi, eax
- sub ebp, edi
-
- SUITE24:
- mov eax, dword ptr [ebx+18h]
- test al, al
- je SUITE25
- sub edi, 000010F6h
- sub dword ptr [esp], 00007DEAh
- add esi, 00000C33h
- mov eax, ebp
- mov ecx, 00000005h
- cdq
- idiv ecx
- mov ebp, eax
-
- SUITE25:
- mov eax, dword ptr [ebx+19h]
- test al, al
- je SUITE26
- add edi, dword ptr [esp]
- sub edi, ebp
- sub dword ptr [esp], 000178F6h
- sub esi, 00005C50h
- add ebp, esi
-
- SUITE26:
- mov eax, dword ptr [ebx+1Ah]
- test al, al
- je SUITE27
- sub edi, ebp
- add edi, 0000147Dh
- mov eax, dword ptr [esp]
- add eax, esi
- sub eax, 00001614h
- mov dword ptr [esp], eax
- mov eax, edi
- mov ecx, 00000003h
- cdq
- idiv ecx
- add esi, eax
- sub ebp, 0000A87Eh
- add ebp, dword ptr [esp]
-
- SUITE27:
- mov eax, dword ptr [ebx+1Bh]
- test al, al
- je SUITE28
- sub edi, dword ptr [esp]
- add dword ptr [esp], esi
- sub esi, edi
- add esi, dword ptr [esp]
- sub ebp, 000002FCh
-
- SUITE28:
- mov eax, dword ptr [ebx+1Ch]
- test al, al
- je SUITE29
- lea eax, dword ptr [ebp+2*ebp]
- sub edi, eax
- add edi, 00006289h
- mov eax, esi
- mov ecx, 00000007h
- cdq
- idiv ecx
- mov edx, dword ptr [esp]
- sub edx, eax
- add edx, 000001C4h
- mov dword ptr [esp], edx
- add esi, 0009AEC5h
- add ebp, dword ptr [esp]
- sub ebp, 0000001Ch
-
- SUITE29:
- mov eax, dword ptr [ebx+1Dh]
- test al, al
- je SUITE30
- sub edi, 0000B10Dh
- add edi, dword ptr [esp]
- add dword ptr [esp], 000C909Ch
- test esi, esi
- jns signe2
- add esi, 00000003h
- signe2:
- sar esi, 02h
- mov eax, edi
- mov ecx, 00000336h
- cdq
- idiv ecx
- add ebp, eax
-
- SUITE30:
- mov eax, dword ptr [ebx+1Eh]
- test al, al
- je SUITE31
- sub edi, 000A4DACh
- add dword ptr [esp], 000C909Ch
- lea eax, dword ptr [esi+4*esi]
- mov esi, eax
- sub ebp, 000594FEh
-
- SUITE31:
- mov eax, dword ptr [ebx+1Fh]
- test al, al
- je SUITE32
- sub edi, 0000B4BBh
- add dword ptr [esp], 000122C0h
- mov eax, ebp
- mov ecx, 00000145h
- cdq
- idiv ecx
- add esi, dword ptr [esp]
- sub esi, eax
- sub ebp, 0001413Bh
-
- SUITE32:
- mov eax, dword ptr [ebx+20h]
- test al, al
- je SUITE33
- sub edi, 000009A2h
- add edi, ebp
- mov eax, dword ptr [esp]
- sub eax, 0000092Ch
- add eax, edi
- mov dword ptr [esp], eax
- sub ebp, 00000994h
-
- SUITE33:
- mov eax, dword ptr [ebx+21h]
- test al, al
- je SUITE34
- sub edi, 000A4DACh
- mov eax, ebp
- cdq
- idiv dword ptr [esp]
- add esi, 00001095h
- add eax, esi
- add eax, 0000147Eh
- mov esi, eax
- mov eax, edi
- cdq
- idiv ebp
- sub ebp, eax
- add ebp, 000001C4h
-
- SUITE34:
- mov eax, dword ptr [ebx+22h]
- test al, al
- je SUITE35
- mov eax, dword ptr [esp]
- cdq
- idiv edi
- mov ecx, eax
- add ecx, dword ptr [esp]
- mov eax, ebp
- cdq
- idiv esi
- add ecx, eax
- mov dword ptr [esp], ecx
- add esi, dword ptr [esp]
- mov eax, edi
- cdq
- idiv edi
- mov ecx, eax
- imul ecx, ebp
- mov eax, esi
- cdq
- idiv ebp
- add ecx, eax
- mov ebp, ecx
-
- SUITE35:
- mov eax, dword ptr [ebx+23h]
- test al, al
- je SUITE36
- mov eax, ebp
- mov ecx, 00000003h
- cdq
- idiv ecx
- push eax
- mov eax, dword ptr [esp+04h]
- lea eax, dword ptr [eax+2*eax]
- pop edx
- mov ecx, edx
- cdq
- idiv ecx
- add edi, eax
- add edi, 0000CE26h
- mov eax, ebp
- cdq
- idiv edi
- add ebp, 000018D1h
- add eax, ebp
- mov ebp, eax
-
- SUITE36:
- mov eax, dword ptr [ebx+24h]
- test al, al
- je SUITE37
- mov eax, dword ptr [esp]
- cdq
- idiv edi
- add eax, 00000038h
- sub edi, eax
- mov eax, dword ptr [esp]
- cdq
- idiv esi
- imul edx, esi
- mov esi, edx
- mov eax, ebp
- cdq
- idiv edi
- imul eax, edx, 00000278h
- add ebp, eax
-
- SUITE37:
- mov eax, dword ptr [ebx+25h]
- test al, al
- je SUITE38
- sub edi, 000A4DACh
- add dword ptr [esp], 000C909Ch
- mov eax, dword ptr [esp]
- cdq
- idiv edi
- mov eax, edx
- mov ecx, 0000000Dh
- cdq
- idiv ecx
- mov ecx, eax
- mov eax, edi
- push ecx
- mov ecx, 00001593h
- cdq
- idiv ecx
- pop ecx
- imul ecx, edx
- add esi, ecx
-
- SUITE38:
- mov eax, dword ptr [ebx+26h]
- test al, al
- je SUITE39
- neg edi
- mov eax, dword ptr [esp]
- cdq
- xor eax, edx
- sub eax, edx
- mov dword ptr [esp], eax
- neg esi
-
- SUITE39:
- sub edi, dword ptr [esp]
- add esi, edi
- add ebp, esi
- cmp ebp, 76651C4Dh
-
- jnz non
-
- mov edi, OFFSET texte
- xor edx,edx
- coche4:
- xor ecx,ecx
- coche3:
- mov al, byte ptr [ecx+ebx]
- test al,al
- jnz coche1
- mov byte ptr [edi+ecx],'O'
- jmp coche2
- coche1:
- mov byte ptr [edi+ecx],'X'
- coche2:
- inc edi ;jump the space (20h) char
- inc ecx
- cmp ecx,13d
- jnz coche3
- add edi,15d
- add ebx,13d
- inc edx
- cmp edx,3
- jnz coche4
- mov ebx, OFFSET combin
- call MessageBoxA, 0, offset texte, offset titre, 0
- non:
- add esp,4
- ret
-
- TESTCOMB ENDP
- ;-----------------------------------------------------------------------------
-
- Main:
- mov ebx, OFFSET combin
- boucle:
- call TESTCOMB
- mov ecx,0 ;<------------
-
- compteur:
- cmp byte ptr [ebx+ecx],1
- jz retenue
- mov byte ptr [ebx+ecx],1
- jmp boucle
- retenue:
- mov byte ptr [ebx+ecx],0
- inc ecx
- cmp ecx,40d
- jnz compteur
-
- call MessageBoxA, 0, offset texte2, 0, 0
- call ExitProcess, 0 ;End (exit) program
-
- End Main ;End of code, Main is the entrypoint
- ;-----------------------------------------------------------------------------
-
-