.486 .model flat extrn __fltused:near extrn __ftol:near public _addpoint _TEXT segment _addpoint: push ebx push esi push edi push ebp mov ebp,esp mov edi,dword ptr (32)[ebp] add dword ptr (24)[ebp],edi mov edi,dword ptr (36)[ebp] add dword ptr (28)[ebp],edi mov edi,dword ptr (20)[ebp] lea esi,(24)[ebp] mov ecx,8 rep movsb L1: mov esp,ebp pop ebp pop edi pop esi pop ebx ret public _canonrect _canonrect: push ebx push esi push edi push ebp mov ebp,esp sub esp,32 mov edi,dword ptr (32)[ebp] cmp dword ptr (24)[ebp],edi jge L10 mov edi,dword ptr (24)[ebp] mov dword ptr (-20)[ebp],edi jmp L11 L10: mov edi,dword ptr (32)[ebp] mov dword ptr (-20)[ebp],edi L11: mov edi,dword ptr (-20)[ebp] mov dword ptr (-16)[ebp],edi mov edi,dword ptr (36)[ebp] cmp dword ptr (28)[ebp],edi jge L20 mov edi,dword ptr (28)[ebp] mov dword ptr (-24)[ebp],edi jmp L21 L20: mov edi,dword ptr (36)[ebp] mov dword ptr (-24)[ebp],edi L21: mov edi,dword ptr (-24)[ebp] mov dword ptr (-12)[ebp],edi mov edi,dword ptr (32)[ebp] cmp dword ptr (24)[ebp],edi jle L26 mov edi,dword ptr (24)[ebp] mov dword ptr (-28)[ebp],edi jmp L27 L26: mov edi,dword ptr (32)[ebp] mov dword ptr (-28)[ebp],edi L27: mov edi,dword ptr (-28)[ebp] mov dword ptr (-8)[ebp],edi mov edi,dword ptr (36)[ebp] cmp dword ptr (28)[ebp],edi jle L37 mov edi,dword ptr (28)[ebp] mov dword ptr (-32)[ebp],edi jmp L38 L37: mov edi,dword ptr (36)[ebp] mov dword ptr (-32)[ebp],edi L38: mov edi,dword ptr (-32)[ebp] mov dword ptr (-4)[ebp],edi mov edi,dword ptr (20)[ebp] lea esi,(-16)[ebp] mov ecx,16 rep movsb L5: mov esp,ebp pop ebp pop edi pop esi pop ebx ret public _makepoint _makepoint: push ebx push esi push edi push ebp mov ebp,esp sub esp,8 mov edi,dword ptr (24)[ebp] mov dword ptr (-8)[ebp],edi mov edi,dword ptr (28)[ebp] mov dword ptr (-4)[ebp],edi mov edi,dword ptr (20)[ebp] lea esi,(-8)[ebp] mov ecx,8 rep movsb L39: mov esp,ebp pop ebp pop edi pop esi pop ebx ret public _makerect _makerect: push ebx push esi push edi push ebp mov ebp,esp sub esp,16 lea edi,(-16)[ebp] lea esi,(24)[ebp] mov ecx,8 rep movsb lea edi,(-8)[ebp] lea esi,(32)[ebp] mov ecx,8 rep movsb lea esi,(-16)[ebp] sub esp,16 mov edi,esp mov ecx,16 rep movsb mov edi,dword ptr (20)[ebp] push edi call _canonrect add esp,20 L42: mov esp,ebp pop ebp pop edi pop esi pop ebx ret public _ptinrect _ptinrect: push ebx push esi push edi push ebp mov ebp,esp sub esp,4 mov edi,dword ptr (20)[ebp] cmp edi,dword ptr (28)[ebp] jl L53 cmp edi,dword ptr (36)[ebp] jge L53 mov edi,dword ptr (32)[ebp] cmp dword ptr (24)[ebp],edi jl L53 mov edi,dword ptr (40)[ebp] cmp dword ptr (24)[ebp],edi jge L53 mov dword ptr (-4)[ebp],1 jmp L54 L53: mov dword ptr (-4)[ebp],0 L54: mov eax,dword ptr (-4)[ebp] L45: mov esp,ebp pop ebp pop edi pop esi pop ebx ret _TEXT ends _DATA segment public _y align 1 _y label byte db 97 db 98 db 0 public _odd _DATA ends _TEXT segment _odd: push ebx push esi push edi push ebp mov ebp,esp sub esp,4 lea edi,(-4)[ebp] lea esi,(20)[ebp] mov ecx,3 rep movsb lea edi,(-4)[ebp] push edi lea edi,(L56) push edi call _printf add esp,8 mov eax,0 L55: mov esp,ebp pop ebp pop edi pop esi pop ebx ret _TEXT ends _TEXT segment align 4 L58 label byte dd 0 dd 0 align 4 L59 label byte dd 320 dd 320 align 4 L60 label byte dd -1 dd -1 dd 1 dd 1 dd 20 dd 300 dd 500 dd 400 public _main _TEXT ends _TEXT segment _main: push ebx push esi push edi push ebp mov ebp,esp sub esp,108 lea edi,(-68)[ebp] lea esi,(L58) mov ecx,8 rep movsb lea edi,(-76)[ebp] lea esi,(L59) mov ecx,8 rep movsb lea edi,(-36)[ebp] lea esi,(L60) mov ecx,32 rep movsb push -10 push -10 lea edi,(-84)[ebp] push edi call _makepoint add esp,12 lea esi,(-84)[ebp] sub esp,8 mov edi,esp mov ecx,8 rep movsb lea esi,(-76)[ebp] sub esp,8 mov edi,esp mov ecx,8 rep movsb lea edi,(-92)[ebp] push edi call _addpoint add esp,20 push 10 push 10 lea edi,(-100)[ebp] push edi call _makepoint add esp,12 lea esi,(-100)[ebp] sub esp,8 mov edi,esp mov ecx,8 rep movsb lea esi,(-68)[ebp] sub esp,8 mov edi,esp mov ecx,8 rep movsb lea edi,(-108)[ebp] push edi call _addpoint add esp,20 lea esi,(-108)[ebp] sub esp,8 mov edi,esp mov ecx,8 rep movsb lea esi,(-92)[ebp] sub esp,8 mov edi,esp mov ecx,8 rep movsb lea edi,(-52)[ebp] push edi call _makerect add esp,20 mov dword ptr (-4)[ebp],0 jmp L64 L61: mov edi,dword ptr (-4)[ebp] lea edi,[edi*8] mov esi,dword ptr (-32)[ebp][edi] push esi mov edi,dword ptr (-36)[ebp][edi] push edi lea edi,(-60)[ebp] push edi call _makepoint add esp,12 mov edi,dword ptr (-56)[ebp] push edi mov edi,dword ptr (-4)[ebp] mov edi,dword ptr (-36)[ebp][edi*8] push edi lea edi,(L65) push edi call _printf add esp,12 lea esi,(-52)[ebp] sub esp,16 mov edi,esp mov ecx,16 rep movsb lea esi,(-60)[ebp] sub esp,8 mov edi,esp mov ecx,8 rep movsb call _ptinrect add esp,24 cmp eax,0 jne L68 lea edi,(L70) push edi call _printf add esp,4 L68: mov edi,dword ptr (-40)[ebp] push edi mov edi,dword ptr (-44)[ebp] push edi mov edi,dword ptr (-48)[ebp] push edi mov edi,dword ptr (-52)[ebp] push edi lea edi,(L71) push edi call _printf add esp,20 L62: inc dword ptr (-4)[ebp] L64: mov edi,dword ptr (-4)[ebp] cmp edi,4 jb L61 lea esi,(_y) sub esp,4 mov edi,esp mov ecx,3 rep movsb call _odd add esp,3 push 0 call _exit add esp,4 mov eax,0 L57: mov esp,ebp pop ebp pop edi pop esi pop ebx ret _TEXT ends extrn _exit:near _TEXT segment _TEXT ends extrn _printf:near _TEXT segment _TEXT ends _TEXT segment align 1 L71 label byte db 119 db 105 db 116 db 104 db 105 db 110 db 32 db 91 db 37 db 100 db 44 db 37 db 100 db 59 db 32 db 37 db 100 db 44 db 37 db 100 db 93 db 10 db 0 align 1 L70 label byte db 110 db 111 db 116 db 32 db 0 align 1 L65 label byte db 40 db 37 db 100 db 44 db 37 db 100 db 41 db 32 db 105 db 115 db 32 db 0 align 1 L56 label byte db 37 db 115 db 10 db 0 _TEXT ends end