Quake-III-Arena

Quake III Arena GPL Source Release
Log | Files | Refs

8q.sbk (2460B)


      1 .486
      2 .model flat
      3 extrn __fltused:near
      4 extrn __ftol:near
      5 public _main
      6 _TEXT segment
      7 _main:
      8 push ebx
      9 push esi
     10 push edi
     11 push ebp
     12 mov ebp,esp
     13 sub esp,4
     14 mov dword ptr (-4)[ebp],0
     15 L2:
     16 mov edi,dword ptr (-4)[ebp]
     17 lea edi,[edi*4]
     18 mov dword ptr (_down)[edi],1
     19 mov dword ptr (_up)[edi],1
     20 L3:
     21 inc dword ptr (-4)[ebp]
     22 cmp dword ptr (-4)[ebp],15
     23 jl L2
     24 mov dword ptr (-4)[ebp],0
     25 L6:
     26 mov edi,dword ptr (-4)[ebp]
     27 mov dword ptr (_rows)[edi*4],1
     28 L7:
     29 inc dword ptr (-4)[ebp]
     30 cmp dword ptr (-4)[ebp],8
     31 jl L6
     32 push 0
     33 call _queens
     34 add esp,4
     35 mov eax,0
     36 L1:
     37 mov esp,ebp
     38 pop ebp
     39 pop edi
     40 pop esi
     41 pop ebx
     42 ret
     43 public _queens
     44 _queens:
     45 push ebx
     46 push esi
     47 push edi
     48 push ebp
     49 mov ebp,esp
     50 sub esp,4
     51 mov dword ptr (-4)[ebp],0
     52 L11:
     53 mov edi,dword ptr (-4)[ebp]
     54 cmp dword ptr (_rows)[edi*4],0
     55 je L15
     56 mov esi,dword ptr (20)[ebp]
     57 mov ebx,edi
     58 sub ebx,esi
     59 cmp dword ptr (_up+28)[ebx*4],0
     60 je L15
     61 lea edi,[esi][edi]
     62 cmp dword ptr (_down)[edi*4],0
     63 je L15
     64 mov edi,dword ptr (-4)[ebp]
     65 mov esi,dword ptr (20)[ebp]
     66 lea ebx,[esi][edi]
     67 mov dword ptr (_down)[ebx*4],0
     68 mov ebx,edi
     69 sub ebx,esi
     70 mov dword ptr (_up+28)[ebx*4],0
     71 mov dword ptr (_rows)[edi*4],0
     72 mov edi,dword ptr (20)[ebp]
     73 mov esi,dword ptr (-4)[ebp]
     74 mov dword ptr (_x)[edi*4],esi
     75 cmp dword ptr (20)[ebp],7
     76 jne L19
     77 call _print
     78 add esp,0
     79 jmp L20
     80 L19:
     81 mov edi,dword ptr (20)[ebp]
     82 lea edi,(1)[edi]
     83 push edi
     84 call _queens
     85 add esp,4
     86 L20:
     87 mov edi,dword ptr (-4)[ebp]
     88 mov esi,dword ptr (20)[ebp]
     89 lea ebx,[esi][edi]
     90 mov dword ptr (_down)[ebx*4],1
     91 mov ebx,edi
     92 sub ebx,esi
     93 mov dword ptr (_up+28)[ebx*4],1
     94 mov dword ptr (_rows)[edi*4],1
     95 L15:
     96 L12:
     97 inc dword ptr (-4)[ebp]
     98 cmp dword ptr (-4)[ebp],8
     99 jl L11
    100 mov eax,0
    101 L10:
    102 mov esp,ebp
    103 pop ebp
    104 pop edi
    105 pop esi
    106 pop ebx
    107 ret
    108 public _print
    109 _print:
    110 push ebx
    111 push esi
    112 push edi
    113 push ebp
    114 mov ebp,esp
    115 sub esp,4
    116 mov dword ptr (-4)[ebp],0
    117 L23:
    118 mov edi,dword ptr (-4)[ebp]
    119 mov edi,dword ptr (_x)[edi*4]
    120 lea edi,(49)[edi]
    121 push edi
    122 lea edi,(L27)
    123 push edi
    124 call _printf
    125 add esp,8
    126 L24:
    127 inc dword ptr (-4)[ebp]
    128 cmp dword ptr (-4)[ebp],8
    129 jl L23
    130 lea edi,(L28)
    131 push edi
    132 call _printf
    133 add esp,4
    134 mov eax,0
    135 L22:
    136 mov esp,ebp
    137 pop ebp
    138 pop edi
    139 pop esi
    140 pop ebx
    141 ret
    142 _TEXT ends
    143 extrn _printf:near
    144 _TEXT segment
    145 _TEXT ends
    146 _DATA segment
    147 public _x
    148 align 4
    149 _x label byte
    150 db 32 dup (0)
    151 public _rows
    152 align 4
    153 _rows label byte
    154 db 32 dup (0)
    155 public _down
    156 align 4
    157 _down label byte
    158 db 60 dup (0)
    159 public _up
    160 align 4
    161 _up label byte
    162 db 60 dup (0)
    163 _DATA ends
    164 _TEXT segment
    165 align 1
    166 L28 label byte
    167 db 10
    168 db 0
    169 align 1
    170 L27 label byte
    171 db 37
    172 db 99
    173 db 32
    174 db 0
    175 _TEXT ends
    176 end