.486 .model flat extrn __fltused:near extrn __ftol:near _DATA segment public _words align 4 _words label byte dd 1 dd 2 dd 3 db 105 db 102 db 0 db 3 dup (0) db 2 dup (0) dd 4 dd 5 db 4 dup (0) db 102 db 111 db 114 db 3 dup (0) db 2 dup (0) dd 6 dd 7 dd 8 db 101 db 108 db 115 db 101 db 0 db 1 dup (0) db 2 dup (0) dd 9 dd 10 dd 11 db 119 db 104 db 105 db 108 db 101 db 1 dup (0) db 2 dup (0) dd 0 db 8 dup (0) db 8 dup (0) public _wordlist align 4 _wordlist label byte dd _words public _x align 4 _x label byte dd 1 dd 2 dd 3 dd 4 dd 0 dd 5 dd 6 db 12 dup (0) dd 7 db 16 dup (0) public _y align 4 _y label byte dd _x dd _x+20 dd _x+40 dd 00H public _main _DATA ends _TEXT segment _main: push ebx push esi push edi push ebp mov ebp,esp sub esp,8 mov dword ptr (-8)[ebp],0 jmp L8 L5: mov dword ptr (-4)[ebp],0 jmp L12 L9: mov edi,dword ptr (-4)[ebp] mov esi,dword ptr (-8)[ebp] mov esi,dword ptr (_y)[esi*4] mov edi,dword ptr [esi][edi*4] push edi lea edi,(L13) push edi call _printf add esp,8 L10: inc dword ptr (-4)[ebp] L12: mov edi,dword ptr (-4)[ebp] mov esi,dword ptr (-8)[ebp] mov esi,dword ptr (_y)[esi*4] cmp dword ptr [esi][edi*4],0 jne L9 lea edi,(L14) push edi call _printf add esp,4 L6: inc dword ptr (-8)[ebp] L8: mov edi,dword ptr (-8)[ebp] mov edi,dword ptr (_y)[edi*4] cmp edi,0 jne L5 call _f add esp,0 mov edi,dword ptr (_wordlist) push edi call _g add esp,4 mov eax,0 L4: mov esp,ebp pop ebp pop edi pop esi pop ebx ret _TEXT ends _DATA segment align 4 L16 label byte dd L17 dd L18 dd L19 dd L20 dd 00H public _f _DATA ends _TEXT segment _f: push ebx push esi push edi push ebp mov ebp,esp sub esp,4 lea edi,(L16) mov dword ptr (-4)[ebp],edi jmp L24 L21: mov edi,dword ptr (-4)[ebp] mov edi,dword ptr [edi] push edi lea edi,(L25) push edi call _printf add esp,8 L22: mov edi,dword ptr (-4)[ebp] lea edi,(4)[edi] mov dword ptr (-4)[ebp],edi L24: mov edi,dword ptr (-4)[ebp] mov edi,dword ptr [edi] cmp edi,0 jne L21 mov eax,0 L15: mov esp,ebp pop ebp pop edi pop esi pop ebx ret public _g _g: push ebx push esi push edi push ebp mov ebp,esp sub esp,4 jmp L30 L27: mov dword ptr (-4)[ebp],0 jmp L34 L31: mov edi,dword ptr (-4)[ebp] mov esi,dword ptr (20)[ebp] mov edi,dword ptr [esi][edi*4] push edi lea edi,(L35) push edi call _printf add esp,8 L32: inc dword ptr (-4)[ebp] L34: mov edi,dword ptr (-4)[ebp] cmp edi,3 jb L31 mov edi,dword ptr (20)[ebp] lea edi,(12)[edi] push edi lea edi,(L25) push edi call _printf add esp,8 L28: mov edi,dword ptr (20)[ebp] lea edi,(20)[edi] mov dword ptr (20)[ebp],edi L30: mov edi,dword ptr (20)[ebp] cmp dword ptr [edi],0 jne L27 call _h add esp,0 mov eax,0 L26: mov esp,ebp pop ebp pop edi pop esi pop ebx ret public _h _h: push ebx push esi push edi push ebp mov ebp,esp sub esp,4 mov dword ptr (-4)[ebp],0 jmp L40 L37: imul edi,dword ptr (-4)[ebp],20 lea esi,(_words+12)[edi] push esi mov esi,dword ptr (_words+8)[edi] push esi mov esi,dword ptr (_words+4)[edi] push esi mov edi,dword ptr (_words)[edi] push edi lea edi,(L41) push edi call _printf add esp,20 L38: inc dword ptr (-4)[ebp] L40: mov edi,dword ptr (-4)[ebp] cmp edi,5 jb L37 mov eax,0 L36: mov esp,ebp pop ebp pop edi pop esi pop ebx ret _TEXT ends extrn _printf:near _TEXT segment _TEXT ends _TEXT segment align 1 L41 label byte db 37 db 100 db 32 db 37 db 100 db 32 db 37 db 100 db 32 db 37 db 115 db 10 db 0 align 1 L35 label byte db 37 db 100 db 32 db 0 align 1 L25 label byte db 37 db 115 db 10 db 0 align 1 L20 label byte db 119 db 104 db 105 db 108 db 101 db 0 align 1 L19 label byte db 101 db 108 db 115 db 101 db 0 align 1 L18 label byte db 102 db 111 db 114 db 0 align 1 L17 label byte db 105 db 102 db 0 align 1 L14 label byte db 10 db 0 align 1 L13 label byte db 32 db 37 db 100 db 0 _TEXT ends end