.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
