aboutsummaryrefslogtreecommitdiffstats
path: root/lcc/x86/win32/tst/struct.sbk
diff options
context:
space:
mode:
Diffstat (limited to 'lcc/x86/win32/tst/struct.sbk')
-rwxr-xr-xlcc/x86/win32/tst/struct.sbk453
1 files changed, 453 insertions, 0 deletions
diff --git a/lcc/x86/win32/tst/struct.sbk b/lcc/x86/win32/tst/struct.sbk
new file mode 100755
index 0000000..09775a9
--- /dev/null
+++ b/lcc/x86/win32/tst/struct.sbk
@@ -0,0 +1,453 @@
+.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 4
+_y label byte
+db 97
+db 98
+db 0
+db 1 dup (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,4
+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,4
+rep movsb
+call _odd
+add esp,4
+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