Quake-III-Arena

Quake III Arena GPL Source Release
Log | Files | Refs

sort.sbk (4248B)


      1 .486
      2 .model flat
      3 extrn __fltused:near
      4 extrn __ftol:near
      5 _DATA segment
      6 public _in
      7 align 4
      8 _in label byte
      9 dd 10
     10 dd 32
     11 dd -1
     12 dd 567
     13 dd 3
     14 dd 18
     15 dd 1
     16 dd -51
     17 dd 789
     18 dd 0
     19 public _main
     20 _DATA ends
     21 _TEXT segment
     22 _main:
     23 push ebx
     24 push esi
     25 push edi
     26 push ebp
     27 mov ebp,esp
     28 sub esp,4
     29 push 10
     30 lea edi,(_in)
     31 push edi
     32 call _sort
     33 add esp,8
     34 mov dword ptr (-4)[ebp],0
     35 jmp L5
     36 L2:
     37 mov edi,dword ptr (-4)[ebp]
     38 mov edi,dword ptr (_in)[edi*4]
     39 push edi
     40 call _putd
     41 add esp,4
     42 push 10
     43 call _putchar
     44 add esp,4
     45 L3:
     46 inc dword ptr (-4)[ebp]
     47 L5:
     48 mov edi,dword ptr (-4)[ebp]
     49 cmp edi,10
     50 jb L2
     51 mov eax,0
     52 L1:
     53 mov esp,ebp
     54 pop ebp
     55 pop edi
     56 pop esi
     57 pop ebx
     58 ret
     59 public _putd
     60 _putd:
     61 push ebx
     62 push esi
     63 push edi
     64 push ebp
     65 mov ebp,esp
     66 cmp dword ptr (20)[ebp],0
     67 jge L7
     68 push 45
     69 call _putchar
     70 add esp,4
     71 neg dword ptr (20)[ebp]
     72 L7:
     73 mov eax,dword ptr (20)[ebp]
     74 mov edi,10
     75 cdq
     76 idiv edi
     77 cmp eax,0
     78 je L9
     79 mov eax,dword ptr (20)[ebp]
     80 mov edi,10
     81 cdq
     82 idiv edi
     83 push eax
     84 call _putd
     85 add esp,4
     86 L9:
     87 mov eax,dword ptr (20)[ebp]
     88 mov edi,10
     89 cdq
     90 idiv edi
     91 lea edi,(48)[edx]
     92 push edi
     93 call _putchar
     94 add esp,4
     95 mov eax,0
     96 L6:
     97 mov esp,ebp
     98 pop ebp
     99 pop edi
    100 pop esi
    101 pop ebx
    102 ret
    103 public _sort
    104 _sort:
    105 push ebx
    106 push esi
    107 push edi
    108 push ebp
    109 mov ebp,esp
    110 mov edi,dword ptr (24)[ebp]
    111 sub edi,1
    112 mov dword ptr (24)[ebp],edi
    113 push edi
    114 push 0
    115 mov edi,dword ptr (20)[ebp]
    116 mov dword ptr (_xx),edi
    117 push edi
    118 call _quick
    119 add esp,12
    120 mov eax,0
    121 L11:
    122 mov esp,ebp
    123 pop ebp
    124 pop edi
    125 pop esi
    126 pop ebx
    127 ret
    128 public _quick
    129 _quick:
    130 push ebx
    131 push esi
    132 push edi
    133 push ebp
    134 mov ebp,esp
    135 sub esp,4
    136 mov edi,dword ptr (28)[ebp]
    137 cmp dword ptr (24)[ebp],edi
    138 jl L13
    139 jmp L12
    140 L13:
    141 mov edi,dword ptr (28)[ebp]
    142 push edi
    143 mov edi,dword ptr (24)[ebp]
    144 push edi
    145 mov edi,dword ptr (20)[ebp]
    146 push edi
    147 call _partition
    148 add esp,12
    149 mov dword ptr (-4)[ebp],eax
    150 mov edi,dword ptr (-4)[ebp]
    151 sub edi,1
    152 push edi
    153 mov edi,dword ptr (24)[ebp]
    154 push edi
    155 mov edi,dword ptr (20)[ebp]
    156 push edi
    157 call _quick
    158 add esp,12
    159 mov edi,dword ptr (28)[ebp]
    160 push edi
    161 mov edi,dword ptr (-4)[ebp]
    162 lea edi,(1)[edi]
    163 push edi
    164 mov edi,dword ptr (20)[ebp]
    165 push edi
    166 call _quick
    167 add esp,12
    168 mov eax,0
    169 L12:
    170 mov esp,ebp
    171 pop ebp
    172 pop edi
    173 pop esi
    174 pop ebx
    175 ret
    176 public _partition
    177 _partition:
    178 push ebx
    179 push esi
    180 push edi
    181 push ebp
    182 mov ebp,esp
    183 sub esp,8
    184 inc dword ptr (28)[ebp]
    185 mov edi,dword ptr (24)[ebp]
    186 mov dword ptr (-8)[ebp],edi
    187 mov edi,dword ptr (-8)[ebp]
    188 mov esi,dword ptr (20)[ebp]
    189 mov edi,dword ptr [esi][edi*4]
    190 mov dword ptr (-4)[ebp],edi
    191 jmp L17
    192 L16:
    193 inc dword ptr (24)[ebp]
    194 jmp L20
    195 L19:
    196 inc dword ptr (24)[ebp]
    197 L20:
    198 mov edi,dword ptr (24)[ebp]
    199 mov esi,dword ptr (20)[ebp]
    200 mov ebx,dword ptr (-4)[ebp]
    201 cmp dword ptr [esi][edi*4],ebx
    202 jl L19
    203 dec dword ptr (28)[ebp]
    204 jmp L23
    205 L22:
    206 dec dword ptr (28)[ebp]
    207 L23:
    208 mov edi,dword ptr (28)[ebp]
    209 mov esi,dword ptr (20)[ebp]
    210 mov ebx,dword ptr (-4)[ebp]
    211 cmp dword ptr [esi][edi*4],ebx
    212 jg L22
    213 mov edi,dword ptr (28)[ebp]
    214 cmp dword ptr (24)[ebp],edi
    215 jge L25
    216 mov edi,dword ptr (20)[ebp]
    217 mov esi,dword ptr (28)[ebp]
    218 lea esi,[edi][esi*4]
    219 push esi
    220 mov esi,dword ptr (24)[ebp]
    221 lea edi,[edi][esi*4]
    222 push edi
    223 call _exchange
    224 add esp,8
    225 L25:
    226 L17:
    227 mov edi,dword ptr (28)[ebp]
    228 cmp dword ptr (24)[ebp],edi
    229 jl L16
    230 mov edi,dword ptr (20)[ebp]
    231 mov esi,dword ptr (28)[ebp]
    232 lea esi,[edi][esi*4]
    233 push esi
    234 mov esi,dword ptr (-8)[ebp]
    235 lea edi,[edi][esi*4]
    236 push edi
    237 call _exchange
    238 add esp,8
    239 mov eax,dword ptr (28)[ebp]
    240 L15:
    241 mov esp,ebp
    242 pop ebp
    243 pop edi
    244 pop esi
    245 pop ebx
    246 ret
    247 public _exchange
    248 _exchange:
    249 push ebx
    250 push esi
    251 push edi
    252 push ebp
    253 mov ebp,esp
    254 sub esp,4
    255 mov edi,dword ptr (_xx)
    256 mov esi,4
    257 mov ebx,dword ptr (24)[ebp]
    258 sub ebx,edi
    259 mov eax,ebx
    260 cdq
    261 idiv esi
    262 push eax
    263 mov ebx,dword ptr (20)[ebp]
    264 sub ebx,edi
    265 mov eax,ebx
    266 cdq
    267 idiv esi
    268 push eax
    269 lea edi,(L28)
    270 push edi
    271 call _printf
    272 add esp,12
    273 mov edi,dword ptr (20)[ebp]
    274 mov esi,dword ptr [edi]
    275 mov dword ptr (-4)[ebp],esi
    276 mov esi,dword ptr (24)[ebp]
    277 mov esi,dword ptr [esi]
    278 mov dword ptr [edi],esi
    279 mov edi,dword ptr (24)[ebp]
    280 mov esi,dword ptr (-4)[ebp]
    281 mov dword ptr [edi],esi
    282 mov eax,0
    283 L27:
    284 mov esp,ebp
    285 pop ebp
    286 pop edi
    287 pop esi
    288 pop ebx
    289 ret
    290 _TEXT ends
    291 extrn _printf:near
    292 _TEXT segment
    293 _TEXT ends
    294 extrn _putchar:near
    295 _TEXT segment
    296 _TEXT ends
    297 _DATA segment
    298 public _xx
    299 align 4
    300 _xx label byte
    301 db 4 dup (0)
    302 _DATA ends
    303 _TEXT segment
    304 align 1
    305 L28 label byte
    306 db 101
    307 db 120
    308 db 99
    309 db 104
    310 db 97
    311 db 110
    312 db 103
    313 db 101
    314 db 40
    315 db 37
    316 db 100
    317 db 44
    318 db 37
    319 db 100
    320 db 41
    321 db 10
    322 db 0
    323 _TEXT ends
    324 end