1 /*
2  *  this code is derived from RawTherapee
3 
4  *  Copyright (c) 2004-2010 Gabor Horvath <hgabor@rawtherapee.com>
5  *
6  *  RawTherapee is free software: you can redistribute it and/or modify
7  *  it under the terms of the GNU General Public License as published by
8  *  the Free Software Foundation, either version 3 of the License, or
9  *  (at your option) any later version.
10  *
11  *  RawTherapee is distributed in the hope that it will be useful,
12  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  *  GNU General Public License for more details.
15  *
16  *  You should have received a copy of the GNU General Public License
17  *  along with RawTherapee.  If not, see <https://www.gnu.org/licenses/>.
18  *
19  *  These median implementations from Fl�ssie and Ingo Weyrich are inspired by this work:
20  *
21  *  http://ndevilla.free.fr/median/median.pdf
22  *  http://pages.ripco.net/~jgamble/nw.html
23  *  https://github.com/hoytech/Algorithm-Networksort-Chooser
24  *
25  *  Instead of using the PIX_SORT and PIX_SWAP macros we use mymin() and mymax()
26  *  because it turned out that it generates much faster (branch free) code on machines which support SSE
27  *
28 */
29 
30 #include "median_fast.h"
31 
median3x3(float * array)32 float median3x3(float* array)
33 {
34     float tmp = mymin(array[1], array[2]);
35     array[2] = mymax(array[1], array[2]);
36     array[1] = tmp;
37     tmp = mymin(array[4], array[5]);
38     array[5] = mymax(array[4], array[5]);
39     array[4] = tmp;
40     tmp = mymin(array[7], array[8]);
41     array[8] = mymax(array[7], array[8]);
42     array[7] = tmp;
43     tmp = mymin(array[0], array[1]);
44     array[1] = mymax(array[0], array[1]);
45     array[0] = tmp;
46     tmp = mymin(array[3], array[4]);
47     array[4] = mymax(array[3], array[4]);
48     array[3] = tmp;
49     tmp = mymin(array[6], array[7]);
50     array[7] = mymax(array[6], array[7]);
51     array[6] = tmp;
52     tmp = mymin(array[1], array[2]);
53     array[2] = mymax(array[1], array[2]);
54     array[1] = tmp;
55     tmp = mymin(array[4], array[5]);
56     array[5] = mymax(array[4], array[5]);
57     array[4] = tmp;
58     tmp = mymin(array[7], array[8]);
59     array[8] = mymax(array[7], array[8]);
60     array[3] = mymax(array[0], array[3]);
61     array[5] = mymin(array[5], array[8]);
62     array[7] = mymax(array[4], tmp);
63     tmp = mymin(array[4], tmp);
64     array[6] = mymax(array[3], array[6]);
65     array[4] = mymax(array[1], tmp);
66     array[2] = mymin(array[2], array[5]);
67     array[4] = mymin(array[4], array[7]);
68     tmp = mymin(array[4], array[2]);
69     array[2] = mymax(array[4], array[2]);
70     array[4] = mymax(array[6], tmp);
71     return mymin(array[4], array[2]);
72 }
73 
74 #define CSWAP(a,b) t = mymax(a,b); a = mymin(a,b); b = t;
75 
median24(float * array)76 float median24(float *array) {
77     float t;
78     CSWAP(array[1], array[2]);
79     CSWAP(array[0], array[2]);
80     CSWAP(array[0], array[1]);
81     CSWAP(array[4], array[5]);
82     CSWAP(array[3], array[5]);
83     CSWAP(array[3], array[4]);
84     CSWAP(array[0], array[3]);
85     CSWAP(array[1], array[4]);
86     CSWAP(array[2], array[5]);
87     CSWAP(array[2], array[4]);
88     CSWAP(array[1], array[3]);
89     CSWAP(array[2], array[3]);
90     CSWAP(array[7], array[8]);
91     CSWAP(array[6], array[8]);
92     CSWAP(array[6], array[7]);
93     float a11 = array[11];
94     CSWAP(array[10], a11);
95     CSWAP(array[9], a11);
96     CSWAP(array[9], array[10]);
97     CSWAP(array[6], array[9]);
98     CSWAP(array[7], array[10]);
99     CSWAP(array[8], a11);
100     CSWAP(array[8], array[10]);
101     CSWAP(array[7], array[9]);
102     CSWAP(array[8], array[9]);
103     CSWAP(array[0], array[6]);
104     CSWAP(array[1], array[7]);
105     CSWAP(array[2], array[8]);
106     CSWAP(array[2], array[7]);
107     CSWAP(array[1], array[6]);
108     CSWAP(array[2], array[6]);
109     CSWAP(array[3], array[9]);
110     CSWAP(array[4], array[10]);
111     CSWAP(array[5], a11);
112     CSWAP(array[5], array[10]);
113     CSWAP(array[4], array[9]);
114     CSWAP(array[5], array[9]);
115     CSWAP(array[3], array[6]);
116     CSWAP(array[4], array[7]);
117     CSWAP(array[5], array[8]);
118     CSWAP(array[5], array[7]);
119     CSWAP(array[4], array[6]);
120     CSWAP(array[5], array[6]);
121     CSWAP(array[13], array[14]);
122     float a12 = array[12];
123     CSWAP(a12, array[14]);
124     CSWAP(a12, array[13]);
125     CSWAP(array[16], array[17]);
126     CSWAP(array[15], array[17]);
127     CSWAP(array[15], array[16]);
128     CSWAP(a12, array[15]);
129     CSWAP(array[13], array[16]);
130     CSWAP(array[14], array[17]);
131     CSWAP(array[14], array[16]);
132     CSWAP(array[13], array[15]);
133     CSWAP(array[14], array[15]);
134     CSWAP(array[19], array[20]);
135     CSWAP(array[18], array[20]);
136     CSWAP(array[18], array[19]);
137     CSWAP(array[22], array[23]);
138     CSWAP(array[21], array[23]);
139     CSWAP(array[21], array[22]);
140     CSWAP(array[18], array[21]);
141     CSWAP(array[19], array[22]);
142     CSWAP(array[20], array[23]);
143     CSWAP(array[20], array[22]);
144     CSWAP(array[19], array[21]);
145     CSWAP(array[20], array[21]);
146     CSWAP(a12, array[18]);
147     CSWAP(array[13], array[19]);
148     CSWAP(array[14], array[20]);
149     CSWAP(array[14], array[19]);
150     CSWAP(array[13], array[18]);
151     CSWAP(array[14], array[18]);
152     CSWAP(array[15], array[21]);
153     CSWAP(array[16], array[22]);
154     CSWAP(array[17], array[23]);
155     CSWAP(array[17], array[22]);
156     CSWAP(array[16], array[21]);
157     CSWAP(array[17], array[21]);
158     CSWAP(array[15], array[18]);
159     CSWAP(array[16], array[19]);
160     CSWAP(array[17], array[20]);
161     CSWAP(array[17], array[19]);
162     CSWAP(array[16], array[18]);
163     CSWAP(array[17], array[18]);
164     a12 = mymax(a12, array[0]);
165     CSWAP(array[1], array[13]);
166     CSWAP(array[2], array[14]);
167     CSWAP(array[2], array[13]);
168     a12 = mymax(a12, array[1]);
169     a12 = mymax(a12, array[2]);
170     CSWAP(array[3], array[15]);
171     CSWAP(array[4], array[16]);
172     CSWAP(array[5], array[17]);
173     CSWAP(array[5], array[16]);
174     CSWAP(array[4], array[15]);
175     CSWAP(array[5], array[15]);
176     a12 = mymax(a12, array[3]);
177     CSWAP(array[4], array[13]);
178     CSWAP(array[5], array[14]);
179     CSWAP(array[5], array[13]);
180     a12 = mymax(a12, array[4]);
181     a12 = mymax(a12, array[5]);
182     CSWAP(array[6], array[18]);
183     CSWAP(array[7], array[19]);
184     CSWAP(array[8], array[20]);
185     CSWAP(array[8], array[19]);
186     CSWAP(array[7], array[18]);
187     CSWAP(array[8], array[18]);
188     CSWAP(array[9], array[21]);
189     CSWAP(array[10], array[22]);
190     a11 = mymin(a11, array[23]);
191     a11 = mymin(a11, array[22]);
192     CSWAP(array[10], array[21]);
193     a11 = mymin(a11, array[21]);
194     CSWAP(array[9], array[18]);
195     CSWAP(array[10], array[19]);
196     a11 = mymin(a11, array[20]);
197     a11 = mymin(a11, array[20]);
198     a11 = mymin(a11, array[19]);
199     CSWAP(array[10], array[18]);
200     a11 = mymin(a11, array[18]);
201     a12 = mymax(a12, array[6]);
202     CSWAP(array[7], array[13]);
203     CSWAP(array[8], array[14]);
204     CSWAP(array[8], array[13]);
205     a12 = mymax(a12, array[7]);
206     a12 = mymax(a12, array[8]);
207     CSWAP(array[9], array[15]);
208     CSWAP(array[10], array[16]);
209     a11 = mymin(a11, array[17]);
210     a11 = mymin(a11, array[16]);
211     CSWAP(array[10], array[15]);
212     a11 = mymin(a11, array[15]);
213     a12 = mymax(a12, array[9]);
214     CSWAP(array[10], array[13]);
215     a11 = mymin(a11, array[14]);
216     a11 = mymin(a11, array[13]);
217     a12 = mymax(a12, array[10]);
218 
219     return (a11 + a12) / 2;
220 }
221 
median5x5(float * array)222 float median5x5(float* array)
223 {
224     float tmp = mymin(array[0], array[1]);
225     array[1] = mymax(array[0], array[1]);
226     array[0] = tmp;
227     tmp = mymin(array[3], array[4]);
228     array[4] = mymax(array[3], array[4]);
229     array[3] = tmp;
230     tmp = mymin(array[2], array[4]);
231     array[4] = mymax(array[2], array[4]);
232     array[2] = mymin(tmp, array[3]);
233     array[3] = mymax(tmp, array[3]);
234     tmp = mymin(array[6], array[7]);
235     array[7] = mymax(array[6], array[7]);
236     array[6] = tmp;
237     tmp = mymin(array[5], array[7]);
238     array[7] = mymax(array[5], array[7]);
239     array[5] = mymin(tmp, array[6]);
240     array[6] = mymax(tmp, array[6]);
241     tmp = mymin(array[9], array[10]);
242     array[10] = mymax(array[9], array[10]);
243     array[9] = tmp;
244     tmp = mymin(array[8], array[10]);
245     array[10] = mymax(array[8], array[10]);
246     array[8] = mymin(tmp, array[9]);
247     array[9] = mymax(tmp, array[9]);
248     tmp = mymin(array[12], array[13]);
249     array[13] = mymax(array[12], array[13]);
250     array[12] = tmp;
251     tmp = mymin(array[11], array[13]);
252     array[13] = mymax(array[11], array[13]);
253     array[11] = mymin(tmp, array[12]);
254     array[12] = mymax(tmp, array[12]);
255     tmp = mymin(array[15], array[16]);
256     array[16] = mymax(array[15], array[16]);
257     array[15] = tmp;
258     tmp = mymin(array[14], array[16]);
259     array[16] = mymax(array[14], array[16]);
260     array[14] = mymin(tmp, array[15]);
261     array[15] = mymax(tmp, array[15]);
262     tmp = mymin(array[18], array[19]);
263     array[19] = mymax(array[18], array[19]);
264     array[18] = tmp;
265     tmp = mymin(array[17], array[19]);
266     array[19] = mymax(array[17], array[19]);
267     array[17] = mymin(tmp, array[18]);
268     array[18] = mymax(tmp, array[18]);
269     tmp = mymin(array[21], array[22]);
270     array[22] = mymax(array[21], array[22]);
271     array[21] = tmp;
272     tmp = mymin(array[20], array[22]);
273     array[22] = mymax(array[20], array[22]);
274     array[20] = mymin(tmp, array[21]);
275     array[21] = mymax(tmp, array[21]);
276     tmp = mymin(array[23], array[24]);
277     array[24] = mymax(array[23], array[24]);
278     array[23] = tmp;
279     tmp = mymin(array[2], array[5]);
280     array[5] = mymax(array[2], array[5]);
281     array[2] = tmp;
282     tmp = mymin(array[3], array[6]);
283     array[6] = mymax(array[3], array[6]);
284     array[3] = tmp;
285     tmp = mymin(array[0], array[6]);
286     array[6] = mymax(array[0], array[6]);
287     array[0] = mymin(tmp, array[3]);
288     array[3] = mymax(tmp, array[3]);
289     tmp = mymin(array[4], array[7]);
290     array[7] = mymax(array[4], array[7]);
291     array[4] = tmp;
292     tmp = mymin(array[1], array[7]);
293     array[7] = mymax(array[1], array[7]);
294     array[1] = mymin(tmp, array[4]);
295     array[4] = mymax(tmp, array[4]);
296     tmp = mymin(array[11], array[14]);
297     array[14] = mymax(array[11], array[14]);
298     array[11] = tmp;
299     tmp = mymin(array[8], array[14]);
300     array[14] = mymax(array[8], array[14]);
301     array[8] = mymin(tmp, array[11]);
302     array[11] = mymax(tmp, array[11]);
303     tmp = mymin(array[12], array[15]);
304     array[15] = mymax(array[12], array[15]);
305     array[12] = tmp;
306     tmp = mymin(array[9], array[15]);
307     array[15] = mymax(array[9], array[15]);
308     array[9] = mymin(tmp, array[12]);
309     array[12] = mymax(tmp, array[12]);
310     tmp = mymin(array[13], array[16]);
311     array[16] = mymax(array[13], array[16]);
312     array[13] = tmp;
313     tmp = mymin(array[10], array[16]);
314     array[16] = mymax(array[10], array[16]);
315     array[10] = mymin(tmp, array[13]);
316     array[13] = mymax(tmp, array[13]);
317     tmp = mymin(array[20], array[23]);
318     array[23] = mymax(array[20], array[23]);
319     array[20] = tmp;
320     tmp = mymin(array[17], array[23]);
321     array[23] = mymax(array[17], array[23]);
322     array[17] = mymin(tmp, array[20]);
323     array[20] = mymax(tmp, array[20]);
324     tmp = mymin(array[21], array[24]);
325     array[24] = mymax(array[21], array[24]);
326     array[21] = tmp;
327     tmp = mymin(array[18], array[24]);
328     array[24] = mymax(array[18], array[24]);
329     array[18] = mymin(tmp, array[21]);
330     array[21] = mymax(tmp, array[21]);
331     tmp = mymin(array[19], array[22]);
332     array[22] = mymax(array[19], array[22]);
333     array[19] = tmp;
334     array[17] = mymax(array[8], array[17]);
335     tmp = mymin(array[9], array[18]);
336     array[18] = mymax(array[9], array[18]);
337     array[9] = tmp;
338     tmp = mymin(array[0], array[18]);
339     array[18] = mymax(array[0], array[18]);
340     array[9] = mymax(tmp, array[9]);
341     tmp = mymin(array[10], array[19]);
342     array[19] = mymax(array[10], array[19]);
343     array[10] = tmp;
344     tmp = mymin(array[1], array[19]);
345     array[19] = mymax(array[1], array[19]);
346     array[1] = mymin(tmp, array[10]);
347     array[10] = mymax(tmp, array[10]);
348     tmp = mymin(array[11], array[20]);
349     array[20] = mymax(array[11], array[20]);
350     array[11] = tmp;
351     tmp = mymin(array[2], array[20]);
352     array[20] = mymax(array[2], array[20]);
353     array[11] = mymax(tmp, array[11]);
354     tmp = mymin(array[12], array[21]);
355     array[21] = mymax(array[12], array[21]);
356     array[12] = tmp;
357     tmp = mymin(array[3], array[21]);
358     array[21] = mymax(array[3], array[21]);
359     array[3] = mymin(tmp, array[12]);
360     array[12] = mymax(tmp, array[12]);
361     tmp = mymin(array[13], array[22]);
362     array[22] = mymax(array[13], array[22]);
363     array[4] = mymin(array[4], array[22]);
364     array[13] = mymax(array[4], tmp);
365     tmp = mymin(array[4], tmp);
366     array[4] = tmp;
367     tmp = mymin(array[14], array[23]);
368     array[23] = mymax(array[14], array[23]);
369     array[14] = tmp;
370     tmp = mymin(array[5], array[23]);
371     array[23] = mymax(array[5], array[23]);
372     array[5] = mymin(tmp, array[14]);
373     array[14] = mymax(tmp, array[14]);
374     tmp = mymin(array[15], array[24]);
375     array[24] = mymax(array[15], array[24]);
376     array[15] = tmp;
377     array[6] = mymin(array[6], array[24]);
378     tmp = mymin(array[6], array[15]);
379     array[15] = mymax(array[6], array[15]);
380     array[6] = tmp;
381     tmp = mymin(array[7], array[16]);
382     array[7] = mymin(tmp, array[19]);
383     tmp = mymin(array[13], array[21]);
384     array[15] = mymin(array[15], array[23]);
385     tmp = mymin(array[7], tmp);
386     array[7] = mymin(tmp, array[15]);
387     array[9] = mymax(array[1], array[9]);
388     array[11] = mymax(array[3], array[11]);
389     array[17] = mymax(array[5], array[17]);
390     array[17] = mymax(array[11], array[17]);
391     array[17] = mymax(array[9], array[17]);
392     tmp = mymin(array[4], array[10]);
393     array[10] = mymax(array[4], array[10]);
394     array[4] = tmp;
395     tmp = mymin(array[6], array[12]);
396     array[12] = mymax(array[6], array[12]);
397     array[6] = tmp;
398     tmp = mymin(array[7], array[14]);
399     array[14] = mymax(array[7], array[14]);
400     array[7] = tmp;
401     tmp = mymin(array[4], array[6]);
402     array[6] = mymax(array[4], array[6]);
403     array[7] = mymax(tmp, array[7]);
404     tmp = mymin(array[12], array[14]);
405     array[14] = mymax(array[12], array[14]);
406     array[12] = tmp;
407     array[10] = mymin(array[10], array[14]);
408     tmp = mymin(array[6], array[7]);
409     array[7] = mymax(array[6], array[7]);
410     array[6] = tmp;
411     tmp = mymin(array[10], array[12]);
412     array[12] = mymax(array[10], array[12]);
413     array[10] = mymax(array[6], tmp);
414     tmp = mymin(array[6], tmp);
415     array[17] = mymax(tmp, array[17]);
416     tmp = mymin(array[12], array[17]);
417     array[17] = mymax(array[12], array[17]);
418     array[12] = tmp;
419     array[7] = mymin(array[7], array[17]);
420     tmp = mymin(array[7], array[10]);
421     array[10] = mymax(array[7], array[10]);
422     array[7] = tmp;
423     tmp = mymin(array[12], array[18]);
424     array[18] = mymax(array[12], array[18]);
425     array[12] = mymax(array[7], tmp);
426     array[10] = mymin(array[10], array[18]);
427     tmp = mymin(array[12], array[20]);
428     array[20] = mymax(array[12], array[20]);
429     array[12] = tmp;
430     tmp = mymin(array[10], array[20]);
431     return mymax(tmp, array[12]);
432 }
433 
median7x7(float * array)434 float median7x7(float* array)
435 {
436     float tmp = mymin(array[0], array[32]);
437     array[32] = mymax(array[0], array[32]);
438     array[0] = tmp;
439     tmp = mymin(array[1], array[33]);
440     array[33] = mymax(array[1], array[33]);
441     array[1] = tmp;
442     tmp = mymin(array[2], array[34]);
443     array[34] = mymax(array[2], array[34]);
444     array[2] = tmp;
445     tmp = mymin(array[3], array[35]);
446     array[35] = mymax(array[3], array[35]);
447     array[3] = tmp;
448     tmp = mymin(array[4], array[36]);
449     array[36] = mymax(array[4], array[36]);
450     array[4] = tmp;
451     tmp = mymin(array[5], array[37]);
452     array[37] = mymax(array[5], array[37]);
453     array[5] = tmp;
454     tmp = mymin(array[6], array[38]);
455     array[38] = mymax(array[6], array[38]);
456     array[6] = tmp;
457     tmp = mymin(array[7], array[39]);
458     array[39] = mymax(array[7], array[39]);
459     array[7] = tmp;
460     tmp = mymin(array[8], array[40]);
461     array[40] = mymax(array[8], array[40]);
462     array[8] = tmp;
463     tmp = mymin(array[9], array[41]);
464     array[41] = mymax(array[9], array[41]);
465     array[9] = tmp;
466     tmp = mymin(array[10], array[42]);
467     array[42] = mymax(array[10], array[42]);
468     array[10] = tmp;
469     tmp = mymin(array[11], array[43]);
470     array[43] = mymax(array[11], array[43]);
471     array[11] = tmp;
472     tmp = mymin(array[12], array[44]);
473     array[44] = mymax(array[12], array[44]);
474     array[12] = tmp;
475     tmp = mymin(array[13], array[45]);
476     array[45] = mymax(array[13], array[45]);
477     array[13] = tmp;
478     tmp = mymin(array[14], array[46]);
479     array[46] = mymax(array[14], array[46]);
480     array[14] = tmp;
481     tmp = mymin(array[15], array[47]);
482     array[47] = mymax(array[15], array[47]);
483     array[15] = tmp;
484     tmp = mymin(array[16], array[48]);
485     array[48] = mymax(array[16], array[48]);
486     array[16] = tmp;
487     tmp = mymin(array[0], array[16]);
488     array[16] = mymax(array[0], array[16]);
489     array[0] = tmp;
490     tmp = mymin(array[1], array[17]);
491     array[17] = mymax(array[1], array[17]);
492     array[1] = tmp;
493     tmp = mymin(array[2], array[18]);
494     array[18] = mymax(array[2], array[18]);
495     array[2] = tmp;
496     tmp = mymin(array[3], array[19]);
497     array[19] = mymax(array[3], array[19]);
498     array[3] = tmp;
499     tmp = mymin(array[4], array[20]);
500     array[20] = mymax(array[4], array[20]);
501     array[4] = tmp;
502     tmp = mymin(array[5], array[21]);
503     array[21] = mymax(array[5], array[21]);
504     array[5] = tmp;
505     tmp = mymin(array[6], array[22]);
506     array[22] = mymax(array[6], array[22]);
507     array[6] = tmp;
508     tmp = mymin(array[7], array[23]);
509     array[23] = mymax(array[7], array[23]);
510     array[7] = tmp;
511     tmp = mymin(array[8], array[24]);
512     array[24] = mymax(array[8], array[24]);
513     array[8] = tmp;
514     tmp = mymin(array[9], array[25]);
515     array[25] = mymax(array[9], array[25]);
516     array[9] = tmp;
517     tmp = mymin(array[10], array[26]);
518     array[26] = mymax(array[10], array[26]);
519     array[10] = tmp;
520     tmp = mymin(array[11], array[27]);
521     array[27] = mymax(array[11], array[27]);
522     array[11] = tmp;
523     tmp = mymin(array[12], array[28]);
524     array[28] = mymax(array[12], array[28]);
525     array[12] = tmp;
526     tmp = mymin(array[13], array[29]);
527     array[29] = mymax(array[13], array[29]);
528     array[13] = tmp;
529     tmp = mymin(array[14], array[30]);
530     array[30] = mymax(array[14], array[30]);
531     array[14] = tmp;
532     tmp = mymin(array[15], array[31]);
533     array[31] = mymax(array[15], array[31]);
534     array[15] = tmp;
535     tmp = mymin(array[32], array[48]);
536     array[48] = mymax(array[32], array[48]);
537     array[32] = tmp;
538     tmp = mymin(array[16], array[32]);
539     array[32] = mymax(array[16], array[32]);
540     array[16] = tmp;
541     tmp = mymin(array[17], array[33]);
542     array[33] = mymax(array[17], array[33]);
543     array[17] = tmp;
544     tmp = mymin(array[18], array[34]);
545     array[34] = mymax(array[18], array[34]);
546     array[18] = tmp;
547     tmp = mymin(array[19], array[35]);
548     array[35] = mymax(array[19], array[35]);
549     array[19] = tmp;
550     tmp = mymin(array[20], array[36]);
551     array[36] = mymax(array[20], array[36]);
552     array[20] = tmp;
553     tmp = mymin(array[21], array[37]);
554     array[37] = mymax(array[21], array[37]);
555     array[21] = tmp;
556     tmp = mymin(array[22], array[38]);
557     array[38] = mymax(array[22], array[38]);
558     array[22] = tmp;
559     tmp = mymin(array[23], array[39]);
560     array[39] = mymax(array[23], array[39]);
561     array[23] = tmp;
562     tmp = mymin(array[24], array[40]);
563     array[40] = mymax(array[24], array[40]);
564     array[24] = tmp;
565     tmp = mymin(array[25], array[41]);
566     array[41] = mymax(array[25], array[41]);
567     array[25] = tmp;
568     tmp = mymin(array[26], array[42]);
569     array[42] = mymax(array[26], array[42]);
570     array[26] = tmp;
571     tmp = mymin(array[27], array[43]);
572     array[43] = mymax(array[27], array[43]);
573     array[27] = tmp;
574     tmp = mymin(array[28], array[44]);
575     array[44] = mymax(array[28], array[44]);
576     array[28] = tmp;
577     tmp = mymin(array[29], array[45]);
578     array[45] = mymax(array[29], array[45]);
579     array[29] = tmp;
580     tmp = mymin(array[30], array[46]);
581     array[46] = mymax(array[30], array[46]);
582     array[30] = tmp;
583     tmp = mymin(array[31], array[47]);
584     array[47] = mymax(array[31], array[47]);
585     array[31] = tmp;
586     tmp = mymin(array[0], array[8]);
587     array[8] = mymax(array[0], array[8]);
588     array[0] = tmp;
589     tmp = mymin(array[1], array[9]);
590     array[9] = mymax(array[1], array[9]);
591     array[1] = tmp;
592     tmp = mymin(array[2], array[10]);
593     array[10] = mymax(array[2], array[10]);
594     array[2] = tmp;
595     tmp = mymin(array[3], array[11]);
596     array[11] = mymax(array[3], array[11]);
597     array[3] = tmp;
598     tmp = mymin(array[4], array[12]);
599     array[12] = mymax(array[4], array[12]);
600     array[4] = tmp;
601     tmp = mymin(array[5], array[13]);
602     array[13] = mymax(array[5], array[13]);
603     array[5] = tmp;
604     tmp = mymin(array[6], array[14]);
605     array[14] = mymax(array[6], array[14]);
606     array[6] = tmp;
607     tmp = mymin(array[7], array[15]);
608     array[15] = mymax(array[7], array[15]);
609     array[7] = tmp;
610     tmp = mymin(array[16], array[24]);
611     array[24] = mymax(array[16], array[24]);
612     array[16] = tmp;
613     tmp = mymin(array[17], array[25]);
614     array[25] = mymax(array[17], array[25]);
615     array[17] = tmp;
616     tmp = mymin(array[18], array[26]);
617     array[26] = mymax(array[18], array[26]);
618     array[18] = tmp;
619     tmp = mymin(array[19], array[27]);
620     array[27] = mymax(array[19], array[27]);
621     array[19] = tmp;
622     tmp = mymin(array[20], array[28]);
623     array[28] = mymax(array[20], array[28]);
624     array[20] = tmp;
625     tmp = mymin(array[21], array[29]);
626     array[29] = mymax(array[21], array[29]);
627     array[21] = tmp;
628     tmp = mymin(array[22], array[30]);
629     array[30] = mymax(array[22], array[30]);
630     array[22] = tmp;
631     tmp = mymin(array[23], array[31]);
632     array[31] = mymax(array[23], array[31]);
633     array[23] = tmp;
634     tmp = mymin(array[32], array[40]);
635     array[40] = mymax(array[32], array[40]);
636     array[32] = tmp;
637     tmp = mymin(array[33], array[41]);
638     array[41] = mymax(array[33], array[41]);
639     array[33] = tmp;
640     tmp = mymin(array[34], array[42]);
641     array[42] = mymax(array[34], array[42]);
642     array[34] = tmp;
643     tmp = mymin(array[35], array[43]);
644     array[43] = mymax(array[35], array[43]);
645     array[35] = tmp;
646     tmp = mymin(array[36], array[44]);
647     array[44] = mymax(array[36], array[44]);
648     array[36] = tmp;
649     tmp = mymin(array[37], array[45]);
650     array[45] = mymax(array[37], array[45]);
651     array[37] = tmp;
652     tmp = mymin(array[38], array[46]);
653     array[46] = mymax(array[38], array[46]);
654     array[38] = tmp;
655     tmp = mymin(array[39], array[47]);
656     array[47] = mymax(array[39], array[47]);
657     array[39] = tmp;
658     tmp = mymin(array[8], array[32]);
659     array[32] = mymax(array[8], array[32]);
660     array[8] = tmp;
661     tmp = mymin(array[9], array[33]);
662     array[33] = mymax(array[9], array[33]);
663     array[9] = tmp;
664     tmp = mymin(array[10], array[34]);
665     array[34] = mymax(array[10], array[34]);
666     array[10] = tmp;
667     tmp = mymin(array[11], array[35]);
668     array[35] = mymax(array[11], array[35]);
669     array[11] = tmp;
670     tmp = mymin(array[12], array[36]);
671     array[36] = mymax(array[12], array[36]);
672     array[12] = tmp;
673     tmp = mymin(array[13], array[37]);
674     array[37] = mymax(array[13], array[37]);
675     array[13] = tmp;
676     tmp = mymin(array[14], array[38]);
677     array[38] = mymax(array[14], array[38]);
678     array[14] = tmp;
679     tmp = mymin(array[15], array[39]);
680     array[39] = mymax(array[15], array[39]);
681     array[15] = tmp;
682     tmp = mymin(array[24], array[48]);
683     array[48] = mymax(array[24], array[48]);
684     array[24] = tmp;
685     tmp = mymin(array[8], array[16]);
686     array[16] = mymax(array[8], array[16]);
687     array[8] = tmp;
688     tmp = mymin(array[9], array[17]);
689     array[17] = mymax(array[9], array[17]);
690     array[9] = tmp;
691     tmp = mymin(array[10], array[18]);
692     array[18] = mymax(array[10], array[18]);
693     array[10] = tmp;
694     tmp = mymin(array[11], array[19]);
695     array[19] = mymax(array[11], array[19]);
696     array[11] = tmp;
697     tmp = mymin(array[12], array[20]);
698     array[20] = mymax(array[12], array[20]);
699     array[12] = tmp;
700     tmp = mymin(array[13], array[21]);
701     array[21] = mymax(array[13], array[21]);
702     array[13] = tmp;
703     tmp = mymin(array[14], array[22]);
704     array[22] = mymax(array[14], array[22]);
705     array[14] = tmp;
706     tmp = mymin(array[15], array[23]);
707     array[23] = mymax(array[15], array[23]);
708     array[15] = tmp;
709     tmp = mymin(array[24], array[32]);
710     array[32] = mymax(array[24], array[32]);
711     array[24] = tmp;
712     tmp = mymin(array[25], array[33]);
713     array[33] = mymax(array[25], array[33]);
714     array[25] = tmp;
715     tmp = mymin(array[26], array[34]);
716     array[34] = mymax(array[26], array[34]);
717     array[26] = tmp;
718     tmp = mymin(array[27], array[35]);
719     array[35] = mymax(array[27], array[35]);
720     array[27] = tmp;
721     tmp = mymin(array[28], array[36]);
722     array[36] = mymax(array[28], array[36]);
723     array[28] = tmp;
724     tmp = mymin(array[29], array[37]);
725     array[37] = mymax(array[29], array[37]);
726     array[29] = tmp;
727     tmp = mymin(array[30], array[38]);
728     array[38] = mymax(array[30], array[38]);
729     array[30] = tmp;
730     tmp = mymin(array[31], array[39]);
731     array[39] = mymax(array[31], array[39]);
732     array[31] = tmp;
733     tmp = mymin(array[40], array[48]);
734     array[48] = mymax(array[40], array[48]);
735     array[40] = tmp;
736     tmp = mymin(array[0], array[4]);
737     array[4] = mymax(array[0], array[4]);
738     array[0] = tmp;
739     tmp = mymin(array[1], array[5]);
740     array[5] = mymax(array[1], array[5]);
741     array[1] = tmp;
742     tmp = mymin(array[2], array[6]);
743     array[6] = mymax(array[2], array[6]);
744     array[2] = tmp;
745     tmp = mymin(array[3], array[7]);
746     array[7] = mymax(array[3], array[7]);
747     array[3] = tmp;
748     tmp = mymin(array[8], array[12]);
749     array[12] = mymax(array[8], array[12]);
750     array[8] = tmp;
751     tmp = mymin(array[9], array[13]);
752     array[13] = mymax(array[9], array[13]);
753     array[9] = tmp;
754     tmp = mymin(array[10], array[14]);
755     array[14] = mymax(array[10], array[14]);
756     array[10] = tmp;
757     tmp = mymin(array[11], array[15]);
758     array[15] = mymax(array[11], array[15]);
759     array[11] = tmp;
760     tmp = mymin(array[16], array[20]);
761     array[20] = mymax(array[16], array[20]);
762     array[16] = tmp;
763     tmp = mymin(array[17], array[21]);
764     array[21] = mymax(array[17], array[21]);
765     array[17] = tmp;
766     tmp = mymin(array[18], array[22]);
767     array[22] = mymax(array[18], array[22]);
768     array[18] = tmp;
769     tmp = mymin(array[19], array[23]);
770     array[23] = mymax(array[19], array[23]);
771     array[19] = tmp;
772     tmp = mymin(array[24], array[28]);
773     array[28] = mymax(array[24], array[28]);
774     array[24] = tmp;
775     tmp = mymin(array[25], array[29]);
776     array[29] = mymax(array[25], array[29]);
777     array[25] = tmp;
778     tmp = mymin(array[26], array[30]);
779     array[30] = mymax(array[26], array[30]);
780     array[26] = tmp;
781     tmp = mymin(array[27], array[31]);
782     array[31] = mymax(array[27], array[31]);
783     array[27] = tmp;
784     tmp = mymin(array[32], array[36]);
785     array[36] = mymax(array[32], array[36]);
786     array[32] = tmp;
787     tmp = mymin(array[33], array[37]);
788     array[37] = mymax(array[33], array[37]);
789     array[33] = tmp;
790     tmp = mymin(array[34], array[38]);
791     array[38] = mymax(array[34], array[38]);
792     array[34] = tmp;
793     tmp = mymin(array[35], array[39]);
794     array[39] = mymax(array[35], array[39]);
795     array[35] = tmp;
796     tmp = mymin(array[40], array[44]);
797     array[44] = mymax(array[40], array[44]);
798     array[40] = tmp;
799     tmp = mymin(array[41], array[45]);
800     array[45] = mymax(array[41], array[45]);
801     array[41] = tmp;
802     tmp = mymin(array[42], array[46]);
803     array[46] = mymax(array[42], array[46]);
804     array[42] = tmp;
805     tmp = mymin(array[43], array[47]);
806     array[47] = mymax(array[43], array[47]);
807     array[43] = tmp;
808     tmp = mymin(array[4], array[32]);
809     array[32] = mymax(array[4], array[32]);
810     array[4] = tmp;
811     tmp = mymin(array[5], array[33]);
812     array[33] = mymax(array[5], array[33]);
813     array[5] = tmp;
814     tmp = mymin(array[6], array[34]);
815     array[34] = mymax(array[6], array[34]);
816     array[6] = tmp;
817     tmp = mymin(array[7], array[35]);
818     array[35] = mymax(array[7], array[35]);
819     array[7] = tmp;
820     tmp = mymin(array[12], array[40]);
821     array[40] = mymax(array[12], array[40]);
822     array[12] = tmp;
823     tmp = mymin(array[13], array[41]);
824     array[41] = mymax(array[13], array[41]);
825     array[13] = tmp;
826     tmp = mymin(array[14], array[42]);
827     array[42] = mymax(array[14], array[42]);
828     array[14] = tmp;
829     tmp = mymin(array[15], array[43]);
830     array[43] = mymax(array[15], array[43]);
831     array[15] = tmp;
832     tmp = mymin(array[20], array[48]);
833     array[48] = mymax(array[20], array[48]);
834     array[20] = tmp;
835     tmp = mymin(array[4], array[16]);
836     array[16] = mymax(array[4], array[16]);
837     array[4] = tmp;
838     tmp = mymin(array[5], array[17]);
839     array[17] = mymax(array[5], array[17]);
840     array[5] = tmp;
841     tmp = mymin(array[6], array[18]);
842     array[18] = mymax(array[6], array[18]);
843     array[6] = tmp;
844     tmp = mymin(array[7], array[19]);
845     array[19] = mymax(array[7], array[19]);
846     array[7] = tmp;
847     tmp = mymin(array[12], array[24]);
848     array[24] = mymax(array[12], array[24]);
849     array[12] = tmp;
850     tmp = mymin(array[13], array[25]);
851     array[25] = mymax(array[13], array[25]);
852     array[13] = tmp;
853     tmp = mymin(array[14], array[26]);
854     array[26] = mymax(array[14], array[26]);
855     array[14] = tmp;
856     tmp = mymin(array[15], array[27]);
857     array[27] = mymax(array[15], array[27]);
858     array[15] = tmp;
859     tmp = mymin(array[20], array[32]);
860     array[32] = mymax(array[20], array[32]);
861     array[20] = tmp;
862     tmp = mymin(array[21], array[33]);
863     array[33] = mymax(array[21], array[33]);
864     array[21] = tmp;
865     tmp = mymin(array[22], array[34]);
866     array[34] = mymax(array[22], array[34]);
867     array[22] = tmp;
868     tmp = mymin(array[23], array[35]);
869     array[35] = mymax(array[23], array[35]);
870     array[23] = tmp;
871     tmp = mymin(array[28], array[40]);
872     array[40] = mymax(array[28], array[40]);
873     array[28] = tmp;
874     tmp = mymin(array[29], array[41]);
875     array[41] = mymax(array[29], array[41]);
876     array[29] = tmp;
877     tmp = mymin(array[30], array[42]);
878     array[42] = mymax(array[30], array[42]);
879     array[30] = tmp;
880     tmp = mymin(array[31], array[43]);
881     array[43] = mymax(array[31], array[43]);
882     array[31] = tmp;
883     tmp = mymin(array[36], array[48]);
884     array[48] = mymax(array[36], array[48]);
885     array[36] = tmp;
886     tmp = mymin(array[4], array[8]);
887     array[8] = mymax(array[4], array[8]);
888     array[4] = tmp;
889     tmp = mymin(array[5], array[9]);
890     array[9] = mymax(array[5], array[9]);
891     array[5] = tmp;
892     tmp = mymin(array[6], array[10]);
893     array[10] = mymax(array[6], array[10]);
894     array[6] = tmp;
895     tmp = mymin(array[7], array[11]);
896     array[11] = mymax(array[7], array[11]);
897     array[7] = tmp;
898     tmp = mymin(array[12], array[16]);
899     array[16] = mymax(array[12], array[16]);
900     array[12] = tmp;
901     tmp = mymin(array[13], array[17]);
902     array[17] = mymax(array[13], array[17]);
903     array[13] = tmp;
904     tmp = mymin(array[14], array[18]);
905     array[18] = mymax(array[14], array[18]);
906     array[14] = tmp;
907     tmp = mymin(array[15], array[19]);
908     array[19] = mymax(array[15], array[19]);
909     array[15] = tmp;
910     tmp = mymin(array[20], array[24]);
911     array[24] = mymax(array[20], array[24]);
912     array[20] = tmp;
913     tmp = mymin(array[21], array[25]);
914     array[25] = mymax(array[21], array[25]);
915     array[21] = tmp;
916     tmp = mymin(array[22], array[26]);
917     array[26] = mymax(array[22], array[26]);
918     array[22] = tmp;
919     tmp = mymin(array[23], array[27]);
920     array[27] = mymax(array[23], array[27]);
921     array[23] = tmp;
922     tmp = mymin(array[28], array[32]);
923     array[32] = mymax(array[28], array[32]);
924     array[28] = tmp;
925     tmp = mymin(array[29], array[33]);
926     array[33] = mymax(array[29], array[33]);
927     array[29] = tmp;
928     tmp = mymin(array[30], array[34]);
929     array[34] = mymax(array[30], array[34]);
930     array[30] = tmp;
931     tmp = mymin(array[31], array[35]);
932     array[35] = mymax(array[31], array[35]);
933     array[31] = tmp;
934     tmp = mymin(array[36], array[40]);
935     array[40] = mymax(array[36], array[40]);
936     array[36] = tmp;
937     tmp = mymin(array[37], array[41]);
938     array[41] = mymax(array[37], array[41]);
939     array[37] = tmp;
940     tmp = mymin(array[38], array[42]);
941     array[42] = mymax(array[38], array[42]);
942     array[38] = tmp;
943     tmp = mymin(array[39], array[43]);
944     array[43] = mymax(array[39], array[43]);
945     array[39] = tmp;
946     tmp = mymin(array[44], array[48]);
947     array[48] = mymax(array[44], array[48]);
948     array[44] = tmp;
949     tmp = mymin(array[0], array[2]);
950     array[2] = mymax(array[0], array[2]);
951     array[0] = tmp;
952     tmp = mymin(array[1], array[3]);
953     array[3] = mymax(array[1], array[3]);
954     array[1] = tmp;
955     tmp = mymin(array[4], array[6]);
956     array[6] = mymax(array[4], array[6]);
957     array[4] = tmp;
958     tmp = mymin(array[5], array[7]);
959     array[7] = mymax(array[5], array[7]);
960     array[5] = tmp;
961     tmp = mymin(array[8], array[10]);
962     array[10] = mymax(array[8], array[10]);
963     array[8] = tmp;
964     tmp = mymin(array[9], array[11]);
965     array[11] = mymax(array[9], array[11]);
966     array[9] = tmp;
967     tmp = mymin(array[12], array[14]);
968     array[14] = mymax(array[12], array[14]);
969     array[12] = tmp;
970     tmp = mymin(array[13], array[15]);
971     array[15] = mymax(array[13], array[15]);
972     array[13] = tmp;
973     tmp = mymin(array[16], array[18]);
974     array[18] = mymax(array[16], array[18]);
975     array[16] = tmp;
976     tmp = mymin(array[17], array[19]);
977     array[19] = mymax(array[17], array[19]);
978     array[17] = tmp;
979     tmp = mymin(array[20], array[22]);
980     array[22] = mymax(array[20], array[22]);
981     array[20] = tmp;
982     tmp = mymin(array[21], array[23]);
983     array[23] = mymax(array[21], array[23]);
984     array[21] = tmp;
985     tmp = mymin(array[24], array[26]);
986     array[26] = mymax(array[24], array[26]);
987     array[24] = tmp;
988     tmp = mymin(array[25], array[27]);
989     array[27] = mymax(array[25], array[27]);
990     array[25] = tmp;
991     tmp = mymin(array[28], array[30]);
992     array[30] = mymax(array[28], array[30]);
993     array[28] = tmp;
994     tmp = mymin(array[29], array[31]);
995     array[31] = mymax(array[29], array[31]);
996     array[29] = tmp;
997     tmp = mymin(array[32], array[34]);
998     array[34] = mymax(array[32], array[34]);
999     array[32] = tmp;
1000     tmp = mymin(array[33], array[35]);
1001     array[35] = mymax(array[33], array[35]);
1002     array[33] = tmp;
1003     tmp = mymin(array[36], array[38]);
1004     array[38] = mymax(array[36], array[38]);
1005     array[36] = tmp;
1006     tmp = mymin(array[37], array[39]);
1007     array[39] = mymax(array[37], array[39]);
1008     array[37] = tmp;
1009     tmp = mymin(array[40], array[42]);
1010     array[42] = mymax(array[40], array[42]);
1011     array[40] = tmp;
1012     tmp = mymin(array[41], array[43]);
1013     array[43] = mymax(array[41], array[43]);
1014     array[41] = tmp;
1015     tmp = mymin(array[44], array[46]);
1016     array[46] = mymax(array[44], array[46]);
1017     array[44] = tmp;
1018     tmp = mymin(array[45], array[47]);
1019     array[47] = mymax(array[45], array[47]);
1020     array[45] = tmp;
1021     tmp = mymin(array[2], array[32]);
1022     array[32] = mymax(array[2], array[32]);
1023     array[2] = tmp;
1024     tmp = mymin(array[3], array[33]);
1025     array[33] = mymax(array[3], array[33]);
1026     array[3] = tmp;
1027     tmp = mymin(array[6], array[36]);
1028     array[36] = mymax(array[6], array[36]);
1029     array[6] = tmp;
1030     tmp = mymin(array[7], array[37]);
1031     array[37] = mymax(array[7], array[37]);
1032     array[7] = tmp;
1033     tmp = mymin(array[10], array[40]);
1034     array[40] = mymax(array[10], array[40]);
1035     array[10] = tmp;
1036     tmp = mymin(array[11], array[41]);
1037     array[41] = mymax(array[11], array[41]);
1038     array[11] = tmp;
1039     tmp = mymin(array[14], array[44]);
1040     array[44] = mymax(array[14], array[44]);
1041     array[14] = tmp;
1042     tmp = mymin(array[15], array[45]);
1043     array[45] = mymax(array[15], array[45]);
1044     array[15] = tmp;
1045     tmp = mymin(array[18], array[48]);
1046     array[48] = mymax(array[18], array[48]);
1047     array[18] = tmp;
1048     tmp = mymin(array[2], array[16]);
1049     array[16] = mymax(array[2], array[16]);
1050     array[2] = tmp;
1051     tmp = mymin(array[3], array[17]);
1052     array[17] = mymax(array[3], array[17]);
1053     array[3] = tmp;
1054     tmp = mymin(array[6], array[20]);
1055     array[20] = mymax(array[6], array[20]);
1056     array[6] = tmp;
1057     tmp = mymin(array[7], array[21]);
1058     array[21] = mymax(array[7], array[21]);
1059     array[7] = tmp;
1060     tmp = mymin(array[10], array[24]);
1061     array[24] = mymax(array[10], array[24]);
1062     array[10] = tmp;
1063     tmp = mymin(array[11], array[25]);
1064     array[25] = mymax(array[11], array[25]);
1065     array[11] = tmp;
1066     tmp = mymin(array[14], array[28]);
1067     array[28] = mymax(array[14], array[28]);
1068     array[14] = tmp;
1069     tmp = mymin(array[15], array[29]);
1070     array[29] = mymax(array[15], array[29]);
1071     array[15] = tmp;
1072     tmp = mymin(array[18], array[32]);
1073     array[32] = mymax(array[18], array[32]);
1074     array[18] = tmp;
1075     tmp = mymin(array[19], array[33]);
1076     array[33] = mymax(array[19], array[33]);
1077     array[19] = tmp;
1078     tmp = mymin(array[22], array[36]);
1079     array[36] = mymax(array[22], array[36]);
1080     array[22] = tmp;
1081     tmp = mymin(array[23], array[37]);
1082     array[37] = mymax(array[23], array[37]);
1083     array[23] = tmp;
1084     tmp = mymin(array[26], array[40]);
1085     array[40] = mymax(array[26], array[40]);
1086     array[26] = tmp;
1087     tmp = mymin(array[27], array[41]);
1088     array[41] = mymax(array[27], array[41]);
1089     array[27] = tmp;
1090     tmp = mymin(array[30], array[44]);
1091     array[44] = mymax(array[30], array[44]);
1092     array[30] = tmp;
1093     tmp = mymin(array[31], array[45]);
1094     array[45] = mymax(array[31], array[45]);
1095     array[31] = tmp;
1096     tmp = mymin(array[34], array[48]);
1097     array[48] = mymax(array[34], array[48]);
1098     array[34] = tmp;
1099     tmp = mymin(array[2], array[8]);
1100     array[8] = mymax(array[2], array[8]);
1101     array[2] = tmp;
1102     tmp = mymin(array[3], array[9]);
1103     array[9] = mymax(array[3], array[9]);
1104     array[3] = tmp;
1105     tmp = mymin(array[6], array[12]);
1106     array[12] = mymax(array[6], array[12]);
1107     array[6] = tmp;
1108     tmp = mymin(array[7], array[13]);
1109     array[13] = mymax(array[7], array[13]);
1110     array[7] = tmp;
1111     tmp = mymin(array[10], array[16]);
1112     array[16] = mymax(array[10], array[16]);
1113     array[10] = tmp;
1114     tmp = mymin(array[11], array[17]);
1115     array[17] = mymax(array[11], array[17]);
1116     array[11] = tmp;
1117     tmp = mymin(array[14], array[20]);
1118     array[20] = mymax(array[14], array[20]);
1119     array[14] = tmp;
1120     tmp = mymin(array[15], array[21]);
1121     array[21] = mymax(array[15], array[21]);
1122     array[15] = tmp;
1123     tmp = mymin(array[18], array[24]);
1124     array[24] = mymax(array[18], array[24]);
1125     array[18] = tmp;
1126     tmp = mymin(array[19], array[25]);
1127     array[25] = mymax(array[19], array[25]);
1128     array[19] = tmp;
1129     tmp = mymin(array[22], array[28]);
1130     array[28] = mymax(array[22], array[28]);
1131     array[22] = tmp;
1132     tmp = mymin(array[23], array[29]);
1133     array[29] = mymax(array[23], array[29]);
1134     array[23] = tmp;
1135     tmp = mymin(array[26], array[32]);
1136     array[32] = mymax(array[26], array[32]);
1137     array[26] = tmp;
1138     tmp = mymin(array[27], array[33]);
1139     array[33] = mymax(array[27], array[33]);
1140     array[27] = tmp;
1141     tmp = mymin(array[30], array[36]);
1142     array[36] = mymax(array[30], array[36]);
1143     array[30] = tmp;
1144     tmp = mymin(array[31], array[37]);
1145     array[37] = mymax(array[31], array[37]);
1146     array[31] = tmp;
1147     tmp = mymin(array[34], array[40]);
1148     array[40] = mymax(array[34], array[40]);
1149     array[34] = tmp;
1150     tmp = mymin(array[35], array[41]);
1151     array[41] = mymax(array[35], array[41]);
1152     array[35] = tmp;
1153     tmp = mymin(array[38], array[44]);
1154     array[44] = mymax(array[38], array[44]);
1155     array[38] = tmp;
1156     tmp = mymin(array[39], array[45]);
1157     array[45] = mymax(array[39], array[45]);
1158     array[39] = tmp;
1159     tmp = mymin(array[42], array[48]);
1160     array[48] = mymax(array[42], array[48]);
1161     array[42] = tmp;
1162     tmp = mymin(array[2], array[4]);
1163     array[4] = mymax(array[2], array[4]);
1164     array[2] = tmp;
1165     tmp = mymin(array[3], array[5]);
1166     array[5] = mymax(array[3], array[5]);
1167     array[3] = tmp;
1168     tmp = mymin(array[6], array[8]);
1169     array[8] = mymax(array[6], array[8]);
1170     array[6] = tmp;
1171     tmp = mymin(array[7], array[9]);
1172     array[9] = mymax(array[7], array[9]);
1173     array[7] = tmp;
1174     tmp = mymin(array[10], array[12]);
1175     array[12] = mymax(array[10], array[12]);
1176     array[10] = tmp;
1177     tmp = mymin(array[11], array[13]);
1178     array[13] = mymax(array[11], array[13]);
1179     array[11] = tmp;
1180     tmp = mymin(array[14], array[16]);
1181     array[16] = mymax(array[14], array[16]);
1182     array[14] = tmp;
1183     tmp = mymin(array[15], array[17]);
1184     array[17] = mymax(array[15], array[17]);
1185     array[15] = tmp;
1186     tmp = mymin(array[18], array[20]);
1187     array[20] = mymax(array[18], array[20]);
1188     array[18] = tmp;
1189     tmp = mymin(array[19], array[21]);
1190     array[21] = mymax(array[19], array[21]);
1191     array[19] = tmp;
1192     tmp = mymin(array[22], array[24]);
1193     array[24] = mymax(array[22], array[24]);
1194     array[22] = tmp;
1195     tmp = mymin(array[23], array[25]);
1196     array[25] = mymax(array[23], array[25]);
1197     array[23] = tmp;
1198     tmp = mymin(array[26], array[28]);
1199     array[28] = mymax(array[26], array[28]);
1200     array[26] = tmp;
1201     tmp = mymin(array[27], array[29]);
1202     array[29] = mymax(array[27], array[29]);
1203     array[27] = tmp;
1204     tmp = mymin(array[30], array[32]);
1205     array[32] = mymax(array[30], array[32]);
1206     array[30] = tmp;
1207     tmp = mymin(array[31], array[33]);
1208     array[33] = mymax(array[31], array[33]);
1209     array[31] = tmp;
1210     tmp = mymin(array[34], array[36]);
1211     array[36] = mymax(array[34], array[36]);
1212     array[34] = tmp;
1213     tmp = mymin(array[35], array[37]);
1214     array[37] = mymax(array[35], array[37]);
1215     array[35] = tmp;
1216     tmp = mymin(array[38], array[40]);
1217     array[40] = mymax(array[38], array[40]);
1218     array[38] = tmp;
1219     tmp = mymin(array[39], array[41]);
1220     array[41] = mymax(array[39], array[41]);
1221     array[39] = tmp;
1222     tmp = mymin(array[42], array[44]);
1223     array[44] = mymax(array[42], array[44]);
1224     array[42] = tmp;
1225     tmp = mymin(array[43], array[45]);
1226     array[45] = mymax(array[43], array[45]);
1227     array[43] = tmp;
1228     tmp = mymin(array[46], array[48]);
1229     array[48] = mymax(array[46], array[48]);
1230     array[46] = tmp;
1231     array[1] = mymax(array[0], array[1]);
1232     array[3] = mymax(array[2], array[3]);
1233     array[5] = mymax(array[4], array[5]);
1234     array[7] = mymax(array[6], array[7]);
1235     array[9] = mymax(array[8], array[9]);
1236     array[11] = mymax(array[10], array[11]);
1237     array[13] = mymax(array[12], array[13]);
1238     array[15] = mymax(array[14], array[15]);
1239     array[17] = mymax(array[16], array[17]);
1240     array[19] = mymax(array[18], array[19]);
1241     array[21] = mymax(array[20], array[21]);
1242     array[23] = mymax(array[22], array[23]);
1243     array[24] = mymin(array[24], array[25]);
1244     array[26] = mymin(array[26], array[27]);
1245     array[28] = mymin(array[28], array[29]);
1246     array[30] = mymin(array[30], array[31]);
1247     array[32] = mymin(array[32], array[33]);
1248     array[34] = mymin(array[34], array[35]);
1249     array[36] = mymin(array[36], array[37]);
1250     array[38] = mymin(array[38], array[39]);
1251     array[40] = mymin(array[40], array[41]);
1252     array[42] = mymin(array[42], array[43]);
1253     array[44] = mymin(array[44], array[45]);
1254     array[46] = mymin(array[46], array[47]);
1255     array[32] = mymax(array[1], array[32]);
1256     array[34] = mymax(array[3], array[34]);
1257     array[36] = mymax(array[5], array[36]);
1258     array[38] = mymax(array[7], array[38]);
1259     array[9] = mymin(array[9], array[40]);
1260     array[11] = mymin(array[11], array[42]);
1261     array[13] = mymin(array[13], array[44]);
1262     array[15] = mymin(array[15], array[46]);
1263     array[17] = mymin(array[17], array[48]);
1264     array[24] = mymax(array[9], array[24]);
1265     array[26] = mymax(array[11], array[26]);
1266     array[28] = mymax(array[13], array[28]);
1267     array[30] = mymax(array[15], array[30]);
1268     array[17] = mymin(array[17], array[32]);
1269     array[19] = mymin(array[19], array[34]);
1270     array[21] = mymin(array[21], array[36]);
1271     array[23] = mymin(array[23], array[38]);
1272     array[24] = mymax(array[17], array[24]);
1273     array[26] = mymax(array[19], array[26]);
1274     array[21] = mymin(array[21], array[28]);
1275     array[23] = mymin(array[23], array[30]);
1276     array[24] = mymax(array[21], array[24]);
1277     array[23] = mymin(array[23], array[26]);
1278     return mymax(array[23], array[24]);
1279 }
1280 
1281 
median9x9(float * array)1282 float median9x9(float* array)
1283 {
1284     float tmp = mymin(array[0], array[64]);
1285     array[64] = mymax(array[0], array[64]);
1286     array[0] = tmp;
1287     tmp = mymin(array[1], array[65]);
1288     array[65] = mymax(array[1], array[65]);
1289     array[1] = tmp;
1290     tmp = mymin(array[2], array[66]);
1291     array[66] = mymax(array[2], array[66]);
1292     array[2] = tmp;
1293     tmp = mymin(array[3], array[67]);
1294     array[67] = mymax(array[3], array[67]);
1295     array[3] = tmp;
1296     tmp = mymin(array[4], array[68]);
1297     array[68] = mymax(array[4], array[68]);
1298     array[4] = tmp;
1299     tmp = mymin(array[5], array[69]);
1300     array[69] = mymax(array[5], array[69]);
1301     array[5] = tmp;
1302     tmp = mymin(array[6], array[70]);
1303     array[70] = mymax(array[6], array[70]);
1304     array[6] = tmp;
1305     tmp = mymin(array[7], array[71]);
1306     array[71] = mymax(array[7], array[71]);
1307     array[7] = tmp;
1308     tmp = mymin(array[8], array[72]);
1309     array[72] = mymax(array[8], array[72]);
1310     array[8] = tmp;
1311     tmp = mymin(array[9], array[73]);
1312     array[73] = mymax(array[9], array[73]);
1313     array[9] = tmp;
1314     tmp = mymin(array[10], array[74]);
1315     array[74] = mymax(array[10], array[74]);
1316     array[10] = tmp;
1317     tmp = mymin(array[11], array[75]);
1318     array[75] = mymax(array[11], array[75]);
1319     array[11] = tmp;
1320     tmp = mymin(array[12], array[76]);
1321     array[76] = mymax(array[12], array[76]);
1322     array[12] = tmp;
1323     tmp = mymin(array[13], array[77]);
1324     array[77] = mymax(array[13], array[77]);
1325     array[13] = tmp;
1326     tmp = mymin(array[14], array[78]);
1327     array[78] = mymax(array[14], array[78]);
1328     array[14] = tmp;
1329     tmp = mymin(array[15], array[79]);
1330     array[79] = mymax(array[15], array[79]);
1331     array[15] = tmp;
1332     tmp = mymin(array[16], array[80]);
1333     array[80] = mymax(array[16], array[80]);
1334     array[16] = tmp;
1335     tmp = mymin(array[0], array[32]);
1336     array[32] = mymax(array[0], array[32]);
1337     array[0] = tmp;
1338     tmp = mymin(array[1], array[33]);
1339     array[33] = mymax(array[1], array[33]);
1340     array[1] = tmp;
1341     tmp = mymin(array[2], array[34]);
1342     array[34] = mymax(array[2], array[34]);
1343     array[2] = tmp;
1344     tmp = mymin(array[3], array[35]);
1345     array[35] = mymax(array[3], array[35]);
1346     array[3] = tmp;
1347     tmp = mymin(array[4], array[36]);
1348     array[36] = mymax(array[4], array[36]);
1349     array[4] = tmp;
1350     tmp = mymin(array[5], array[37]);
1351     array[37] = mymax(array[5], array[37]);
1352     array[5] = tmp;
1353     tmp = mymin(array[6], array[38]);
1354     array[38] = mymax(array[6], array[38]);
1355     array[6] = tmp;
1356     tmp = mymin(array[7], array[39]);
1357     array[39] = mymax(array[7], array[39]);
1358     array[7] = tmp;
1359     tmp = mymin(array[8], array[40]);
1360     array[40] = mymax(array[8], array[40]);
1361     array[8] = tmp;
1362     tmp = mymin(array[9], array[41]);
1363     array[41] = mymax(array[9], array[41]);
1364     array[9] = tmp;
1365     tmp = mymin(array[10], array[42]);
1366     array[42] = mymax(array[10], array[42]);
1367     array[10] = tmp;
1368     tmp = mymin(array[11], array[43]);
1369     array[43] = mymax(array[11], array[43]);
1370     array[11] = tmp;
1371     tmp = mymin(array[12], array[44]);
1372     array[44] = mymax(array[12], array[44]);
1373     array[12] = tmp;
1374     tmp = mymin(array[13], array[45]);
1375     array[45] = mymax(array[13], array[45]);
1376     array[13] = tmp;
1377     tmp = mymin(array[14], array[46]);
1378     array[46] = mymax(array[14], array[46]);
1379     array[14] = tmp;
1380     tmp = mymin(array[15], array[47]);
1381     array[47] = mymax(array[15], array[47]);
1382     array[15] = tmp;
1383     tmp = mymin(array[16], array[48]);
1384     array[48] = mymax(array[16], array[48]);
1385     array[16] = tmp;
1386     tmp = mymin(array[17], array[49]);
1387     array[49] = mymax(array[17], array[49]);
1388     array[17] = tmp;
1389     tmp = mymin(array[18], array[50]);
1390     array[50] = mymax(array[18], array[50]);
1391     array[18] = tmp;
1392     tmp = mymin(array[19], array[51]);
1393     array[51] = mymax(array[19], array[51]);
1394     array[19] = tmp;
1395     tmp = mymin(array[20], array[52]);
1396     array[52] = mymax(array[20], array[52]);
1397     array[20] = tmp;
1398     tmp = mymin(array[21], array[53]);
1399     array[53] = mymax(array[21], array[53]);
1400     array[21] = tmp;
1401     tmp = mymin(array[22], array[54]);
1402     array[54] = mymax(array[22], array[54]);
1403     array[22] = tmp;
1404     tmp = mymin(array[23], array[55]);
1405     array[55] = mymax(array[23], array[55]);
1406     array[23] = tmp;
1407     tmp = mymin(array[24], array[56]);
1408     array[56] = mymax(array[24], array[56]);
1409     array[24] = tmp;
1410     tmp = mymin(array[25], array[57]);
1411     array[57] = mymax(array[25], array[57]);
1412     array[25] = tmp;
1413     tmp = mymin(array[26], array[58]);
1414     array[58] = mymax(array[26], array[58]);
1415     array[26] = tmp;
1416     tmp = mymin(array[27], array[59]);
1417     array[59] = mymax(array[27], array[59]);
1418     array[27] = tmp;
1419     tmp = mymin(array[28], array[60]);
1420     array[60] = mymax(array[28], array[60]);
1421     array[28] = tmp;
1422     tmp = mymin(array[29], array[61]);
1423     array[61] = mymax(array[29], array[61]);
1424     array[29] = tmp;
1425     tmp = mymin(array[30], array[62]);
1426     array[62] = mymax(array[30], array[62]);
1427     array[30] = tmp;
1428     tmp = mymin(array[31], array[63]);
1429     array[63] = mymax(array[31], array[63]);
1430     array[31] = tmp;
1431     tmp = mymin(array[32], array[64]);
1432     array[64] = mymax(array[32], array[64]);
1433     array[32] = tmp;
1434     tmp = mymin(array[33], array[65]);
1435     array[65] = mymax(array[33], array[65]);
1436     array[33] = tmp;
1437     tmp = mymin(array[34], array[66]);
1438     array[66] = mymax(array[34], array[66]);
1439     array[34] = tmp;
1440     tmp = mymin(array[35], array[67]);
1441     array[67] = mymax(array[35], array[67]);
1442     array[35] = tmp;
1443     tmp = mymin(array[36], array[68]);
1444     array[68] = mymax(array[36], array[68]);
1445     array[36] = tmp;
1446     tmp = mymin(array[37], array[69]);
1447     array[69] = mymax(array[37], array[69]);
1448     array[37] = tmp;
1449     tmp = mymin(array[38], array[70]);
1450     array[70] = mymax(array[38], array[70]);
1451     array[38] = tmp;
1452     tmp = mymin(array[39], array[71]);
1453     array[71] = mymax(array[39], array[71]);
1454     array[39] = tmp;
1455     tmp = mymin(array[40], array[72]);
1456     array[72] = mymax(array[40], array[72]);
1457     array[40] = tmp;
1458     tmp = mymin(array[41], array[73]);
1459     array[73] = mymax(array[41], array[73]);
1460     array[41] = tmp;
1461     tmp = mymin(array[42], array[74]);
1462     array[74] = mymax(array[42], array[74]);
1463     array[42] = tmp;
1464     tmp = mymin(array[43], array[75]);
1465     array[75] = mymax(array[43], array[75]);
1466     array[43] = tmp;
1467     tmp = mymin(array[44], array[76]);
1468     array[76] = mymax(array[44], array[76]);
1469     array[44] = tmp;
1470     tmp = mymin(array[45], array[77]);
1471     array[77] = mymax(array[45], array[77]);
1472     array[45] = tmp;
1473     tmp = mymin(array[46], array[78]);
1474     array[78] = mymax(array[46], array[78]);
1475     array[46] = tmp;
1476     tmp = mymin(array[47], array[79]);
1477     array[79] = mymax(array[47], array[79]);
1478     array[47] = tmp;
1479     tmp = mymin(array[48], array[80]);
1480     array[80] = mymax(array[48], array[80]);
1481     array[48] = tmp;
1482     tmp = mymin(array[0], array[16]);
1483     array[16] = mymax(array[0], array[16]);
1484     array[0] = tmp;
1485     tmp = mymin(array[1], array[17]);
1486     array[17] = mymax(array[1], array[17]);
1487     array[1] = tmp;
1488     tmp = mymin(array[2], array[18]);
1489     array[18] = mymax(array[2], array[18]);
1490     array[2] = tmp;
1491     tmp = mymin(array[3], array[19]);
1492     array[19] = mymax(array[3], array[19]);
1493     array[3] = tmp;
1494     tmp = mymin(array[4], array[20]);
1495     array[20] = mymax(array[4], array[20]);
1496     array[4] = tmp;
1497     tmp = mymin(array[5], array[21]);
1498     array[21] = mymax(array[5], array[21]);
1499     array[5] = tmp;
1500     tmp = mymin(array[6], array[22]);
1501     array[22] = mymax(array[6], array[22]);
1502     array[6] = tmp;
1503     tmp = mymin(array[7], array[23]);
1504     array[23] = mymax(array[7], array[23]);
1505     array[7] = tmp;
1506     tmp = mymin(array[8], array[24]);
1507     array[24] = mymax(array[8], array[24]);
1508     array[8] = tmp;
1509     tmp = mymin(array[9], array[25]);
1510     array[25] = mymax(array[9], array[25]);
1511     array[9] = tmp;
1512     tmp = mymin(array[10], array[26]);
1513     array[26] = mymax(array[10], array[26]);
1514     array[10] = tmp;
1515     tmp = mymin(array[11], array[27]);
1516     array[27] = mymax(array[11], array[27]);
1517     array[11] = tmp;
1518     tmp = mymin(array[12], array[28]);
1519     array[28] = mymax(array[12], array[28]);
1520     array[12] = tmp;
1521     tmp = mymin(array[13], array[29]);
1522     array[29] = mymax(array[13], array[29]);
1523     array[13] = tmp;
1524     tmp = mymin(array[14], array[30]);
1525     array[30] = mymax(array[14], array[30]);
1526     array[14] = tmp;
1527     tmp = mymin(array[15], array[31]);
1528     array[31] = mymax(array[15], array[31]);
1529     array[15] = tmp;
1530     tmp = mymin(array[32], array[48]);
1531     array[48] = mymax(array[32], array[48]);
1532     array[32] = tmp;
1533     tmp = mymin(array[33], array[49]);
1534     array[49] = mymax(array[33], array[49]);
1535     array[33] = tmp;
1536     tmp = mymin(array[34], array[50]);
1537     array[50] = mymax(array[34], array[50]);
1538     array[34] = tmp;
1539     tmp = mymin(array[35], array[51]);
1540     array[51] = mymax(array[35], array[51]);
1541     array[35] = tmp;
1542     tmp = mymin(array[36], array[52]);
1543     array[52] = mymax(array[36], array[52]);
1544     array[36] = tmp;
1545     tmp = mymin(array[37], array[53]);
1546     array[53] = mymax(array[37], array[53]);
1547     array[37] = tmp;
1548     tmp = mymin(array[38], array[54]);
1549     array[54] = mymax(array[38], array[54]);
1550     array[38] = tmp;
1551     tmp = mymin(array[39], array[55]);
1552     array[55] = mymax(array[39], array[55]);
1553     array[39] = tmp;
1554     tmp = mymin(array[40], array[56]);
1555     array[56] = mymax(array[40], array[56]);
1556     array[40] = tmp;
1557     tmp = mymin(array[41], array[57]);
1558     array[57] = mymax(array[41], array[57]);
1559     array[41] = tmp;
1560     tmp = mymin(array[42], array[58]);
1561     array[58] = mymax(array[42], array[58]);
1562     array[42] = tmp;
1563     tmp = mymin(array[43], array[59]);
1564     array[59] = mymax(array[43], array[59]);
1565     array[43] = tmp;
1566     tmp = mymin(array[44], array[60]);
1567     array[60] = mymax(array[44], array[60]);
1568     array[44] = tmp;
1569     tmp = mymin(array[45], array[61]);
1570     array[61] = mymax(array[45], array[61]);
1571     array[45] = tmp;
1572     tmp = mymin(array[46], array[62]);
1573     array[62] = mymax(array[46], array[62]);
1574     array[46] = tmp;
1575     tmp = mymin(array[47], array[63]);
1576     array[63] = mymax(array[47], array[63]);
1577     array[47] = tmp;
1578     tmp = mymin(array[64], array[80]);
1579     array[80] = mymax(array[64], array[80]);
1580     array[64] = tmp;
1581     tmp = mymin(array[16], array[64]);
1582     array[64] = mymax(array[16], array[64]);
1583     array[16] = tmp;
1584     tmp = mymin(array[17], array[65]);
1585     array[65] = mymax(array[17], array[65]);
1586     array[17] = tmp;
1587     tmp = mymin(array[18], array[66]);
1588     array[66] = mymax(array[18], array[66]);
1589     array[18] = tmp;
1590     tmp = mymin(array[19], array[67]);
1591     array[67] = mymax(array[19], array[67]);
1592     array[19] = tmp;
1593     tmp = mymin(array[20], array[68]);
1594     array[68] = mymax(array[20], array[68]);
1595     array[20] = tmp;
1596     tmp = mymin(array[21], array[69]);
1597     array[69] = mymax(array[21], array[69]);
1598     array[21] = tmp;
1599     tmp = mymin(array[22], array[70]);
1600     array[70] = mymax(array[22], array[70]);
1601     array[22] = tmp;
1602     tmp = mymin(array[23], array[71]);
1603     array[71] = mymax(array[23], array[71]);
1604     array[23] = tmp;
1605     tmp = mymin(array[24], array[72]);
1606     array[72] = mymax(array[24], array[72]);
1607     array[24] = tmp;
1608     tmp = mymin(array[25], array[73]);
1609     array[73] = mymax(array[25], array[73]);
1610     array[25] = tmp;
1611     tmp = mymin(array[26], array[74]);
1612     array[74] = mymax(array[26], array[74]);
1613     array[26] = tmp;
1614     tmp = mymin(array[27], array[75]);
1615     array[75] = mymax(array[27], array[75]);
1616     array[27] = tmp;
1617     tmp = mymin(array[28], array[76]);
1618     array[76] = mymax(array[28], array[76]);
1619     array[28] = tmp;
1620     tmp = mymin(array[29], array[77]);
1621     array[77] = mymax(array[29], array[77]);
1622     array[29] = tmp;
1623     tmp = mymin(array[30], array[78]);
1624     array[78] = mymax(array[30], array[78]);
1625     array[30] = tmp;
1626     tmp = mymin(array[31], array[79]);
1627     array[79] = mymax(array[31], array[79]);
1628     array[31] = tmp;
1629     tmp = mymin(array[16], array[32]);
1630     array[32] = mymax(array[16], array[32]);
1631     array[16] = tmp;
1632     tmp = mymin(array[17], array[33]);
1633     array[33] = mymax(array[17], array[33]);
1634     array[17] = tmp;
1635     tmp = mymin(array[18], array[34]);
1636     array[34] = mymax(array[18], array[34]);
1637     array[18] = tmp;
1638     tmp = mymin(array[19], array[35]);
1639     array[35] = mymax(array[19], array[35]);
1640     array[19] = tmp;
1641     tmp = mymin(array[20], array[36]);
1642     array[36] = mymax(array[20], array[36]);
1643     array[20] = tmp;
1644     tmp = mymin(array[21], array[37]);
1645     array[37] = mymax(array[21], array[37]);
1646     array[21] = tmp;
1647     tmp = mymin(array[22], array[38]);
1648     array[38] = mymax(array[22], array[38]);
1649     array[22] = tmp;
1650     tmp = mymin(array[23], array[39]);
1651     array[39] = mymax(array[23], array[39]);
1652     array[23] = tmp;
1653     tmp = mymin(array[24], array[40]);
1654     array[40] = mymax(array[24], array[40]);
1655     array[24] = tmp;
1656     tmp = mymin(array[25], array[41]);
1657     array[41] = mymax(array[25], array[41]);
1658     array[25] = tmp;
1659     tmp = mymin(array[26], array[42]);
1660     array[42] = mymax(array[26], array[42]);
1661     array[26] = tmp;
1662     tmp = mymin(array[27], array[43]);
1663     array[43] = mymax(array[27], array[43]);
1664     array[27] = tmp;
1665     tmp = mymin(array[28], array[44]);
1666     array[44] = mymax(array[28], array[44]);
1667     array[28] = tmp;
1668     tmp = mymin(array[29], array[45]);
1669     array[45] = mymax(array[29], array[45]);
1670     array[29] = tmp;
1671     tmp = mymin(array[30], array[46]);
1672     array[46] = mymax(array[30], array[46]);
1673     array[30] = tmp;
1674     tmp = mymin(array[31], array[47]);
1675     array[47] = mymax(array[31], array[47]);
1676     array[31] = tmp;
1677     tmp = mymin(array[48], array[64]);
1678     array[64] = mymax(array[48], array[64]);
1679     array[48] = tmp;
1680     tmp = mymin(array[49], array[65]);
1681     array[65] = mymax(array[49], array[65]);
1682     array[49] = tmp;
1683     tmp = mymin(array[50], array[66]);
1684     array[66] = mymax(array[50], array[66]);
1685     array[50] = tmp;
1686     tmp = mymin(array[51], array[67]);
1687     array[67] = mymax(array[51], array[67]);
1688     array[51] = tmp;
1689     tmp = mymin(array[52], array[68]);
1690     array[68] = mymax(array[52], array[68]);
1691     array[52] = tmp;
1692     tmp = mymin(array[53], array[69]);
1693     array[69] = mymax(array[53], array[69]);
1694     array[53] = tmp;
1695     tmp = mymin(array[54], array[70]);
1696     array[70] = mymax(array[54], array[70]);
1697     array[54] = tmp;
1698     tmp = mymin(array[55], array[71]);
1699     array[71] = mymax(array[55], array[71]);
1700     array[55] = tmp;
1701     tmp = mymin(array[56], array[72]);
1702     array[72] = mymax(array[56], array[72]);
1703     array[56] = tmp;
1704     tmp = mymin(array[57], array[73]);
1705     array[73] = mymax(array[57], array[73]);
1706     array[57] = tmp;
1707     tmp = mymin(array[58], array[74]);
1708     array[74] = mymax(array[58], array[74]);
1709     array[58] = tmp;
1710     tmp = mymin(array[59], array[75]);
1711     array[75] = mymax(array[59], array[75]);
1712     array[59] = tmp;
1713     tmp = mymin(array[60], array[76]);
1714     array[76] = mymax(array[60], array[76]);
1715     array[60] = tmp;
1716     tmp = mymin(array[61], array[77]);
1717     array[77] = mymax(array[61], array[77]);
1718     array[61] = tmp;
1719     tmp = mymin(array[62], array[78]);
1720     array[78] = mymax(array[62], array[78]);
1721     array[62] = tmp;
1722     tmp = mymin(array[63], array[79]);
1723     array[79] = mymax(array[63], array[79]);
1724     array[63] = tmp;
1725     tmp = mymin(array[0], array[8]);
1726     array[8] = mymax(array[0], array[8]);
1727     array[0] = tmp;
1728     tmp = mymin(array[1], array[9]);
1729     array[9] = mymax(array[1], array[9]);
1730     array[1] = tmp;
1731     tmp = mymin(array[2], array[10]);
1732     array[10] = mymax(array[2], array[10]);
1733     array[2] = tmp;
1734     tmp = mymin(array[3], array[11]);
1735     array[11] = mymax(array[3], array[11]);
1736     array[3] = tmp;
1737     tmp = mymin(array[4], array[12]);
1738     array[12] = mymax(array[4], array[12]);
1739     array[4] = tmp;
1740     tmp = mymin(array[5], array[13]);
1741     array[13] = mymax(array[5], array[13]);
1742     array[5] = tmp;
1743     tmp = mymin(array[6], array[14]);
1744     array[14] = mymax(array[6], array[14]);
1745     array[6] = tmp;
1746     tmp = mymin(array[7], array[15]);
1747     array[15] = mymax(array[7], array[15]);
1748     array[7] = tmp;
1749     tmp = mymin(array[16], array[24]);
1750     array[24] = mymax(array[16], array[24]);
1751     array[16] = tmp;
1752     tmp = mymin(array[17], array[25]);
1753     array[25] = mymax(array[17], array[25]);
1754     array[17] = tmp;
1755     tmp = mymin(array[18], array[26]);
1756     array[26] = mymax(array[18], array[26]);
1757     array[18] = tmp;
1758     tmp = mymin(array[19], array[27]);
1759     array[27] = mymax(array[19], array[27]);
1760     array[19] = tmp;
1761     tmp = mymin(array[20], array[28]);
1762     array[28] = mymax(array[20], array[28]);
1763     array[20] = tmp;
1764     tmp = mymin(array[21], array[29]);
1765     array[29] = mymax(array[21], array[29]);
1766     array[21] = tmp;
1767     tmp = mymin(array[22], array[30]);
1768     array[30] = mymax(array[22], array[30]);
1769     array[22] = tmp;
1770     tmp = mymin(array[23], array[31]);
1771     array[31] = mymax(array[23], array[31]);
1772     array[23] = tmp;
1773     tmp = mymin(array[32], array[40]);
1774     array[40] = mymax(array[32], array[40]);
1775     array[32] = tmp;
1776     tmp = mymin(array[33], array[41]);
1777     array[41] = mymax(array[33], array[41]);
1778     array[33] = tmp;
1779     tmp = mymin(array[34], array[42]);
1780     array[42] = mymax(array[34], array[42]);
1781     array[34] = tmp;
1782     tmp = mymin(array[35], array[43]);
1783     array[43] = mymax(array[35], array[43]);
1784     array[35] = tmp;
1785     tmp = mymin(array[36], array[44]);
1786     array[44] = mymax(array[36], array[44]);
1787     array[36] = tmp;
1788     tmp = mymin(array[37], array[45]);
1789     array[45] = mymax(array[37], array[45]);
1790     array[37] = tmp;
1791     tmp = mymin(array[38], array[46]);
1792     array[46] = mymax(array[38], array[46]);
1793     array[38] = tmp;
1794     tmp = mymin(array[39], array[47]);
1795     array[47] = mymax(array[39], array[47]);
1796     array[39] = tmp;
1797     tmp = mymin(array[48], array[56]);
1798     array[56] = mymax(array[48], array[56]);
1799     array[48] = tmp;
1800     tmp = mymin(array[49], array[57]);
1801     array[57] = mymax(array[49], array[57]);
1802     array[49] = tmp;
1803     tmp = mymin(array[50], array[58]);
1804     array[58] = mymax(array[50], array[58]);
1805     array[50] = tmp;
1806     tmp = mymin(array[51], array[59]);
1807     array[59] = mymax(array[51], array[59]);
1808     array[51] = tmp;
1809     tmp = mymin(array[52], array[60]);
1810     array[60] = mymax(array[52], array[60]);
1811     array[52] = tmp;
1812     tmp = mymin(array[53], array[61]);
1813     array[61] = mymax(array[53], array[61]);
1814     array[53] = tmp;
1815     tmp = mymin(array[54], array[62]);
1816     array[62] = mymax(array[54], array[62]);
1817     array[54] = tmp;
1818     tmp = mymin(array[55], array[63]);
1819     array[63] = mymax(array[55], array[63]);
1820     array[55] = tmp;
1821     tmp = mymin(array[64], array[72]);
1822     array[72] = mymax(array[64], array[72]);
1823     array[64] = tmp;
1824     tmp = mymin(array[65], array[73]);
1825     array[73] = mymax(array[65], array[73]);
1826     array[65] = tmp;
1827     tmp = mymin(array[66], array[74]);
1828     array[74] = mymax(array[66], array[74]);
1829     array[66] = tmp;
1830     tmp = mymin(array[67], array[75]);
1831     array[75] = mymax(array[67], array[75]);
1832     array[67] = tmp;
1833     tmp = mymin(array[68], array[76]);
1834     array[76] = mymax(array[68], array[76]);
1835     array[68] = tmp;
1836     tmp = mymin(array[69], array[77]);
1837     array[77] = mymax(array[69], array[77]);
1838     array[69] = tmp;
1839     tmp = mymin(array[70], array[78]);
1840     array[78] = mymax(array[70], array[78]);
1841     array[70] = tmp;
1842     tmp = mymin(array[71], array[79]);
1843     array[79] = mymax(array[71], array[79]);
1844     array[71] = tmp;
1845     tmp = mymin(array[8], array[64]);
1846     array[64] = mymax(array[8], array[64]);
1847     array[8] = tmp;
1848     tmp = mymin(array[9], array[65]);
1849     array[65] = mymax(array[9], array[65]);
1850     array[9] = tmp;
1851     tmp = mymin(array[10], array[66]);
1852     array[66] = mymax(array[10], array[66]);
1853     array[10] = tmp;
1854     tmp = mymin(array[11], array[67]);
1855     array[67] = mymax(array[11], array[67]);
1856     array[11] = tmp;
1857     tmp = mymin(array[12], array[68]);
1858     array[68] = mymax(array[12], array[68]);
1859     array[12] = tmp;
1860     tmp = mymin(array[13], array[69]);
1861     array[69] = mymax(array[13], array[69]);
1862     array[13] = tmp;
1863     tmp = mymin(array[14], array[70]);
1864     array[70] = mymax(array[14], array[70]);
1865     array[14] = tmp;
1866     tmp = mymin(array[15], array[71]);
1867     array[71] = mymax(array[15], array[71]);
1868     array[15] = tmp;
1869     tmp = mymin(array[24], array[80]);
1870     array[80] = mymax(array[24], array[80]);
1871     array[24] = tmp;
1872     tmp = mymin(array[8], array[32]);
1873     array[32] = mymax(array[8], array[32]);
1874     array[8] = tmp;
1875     tmp = mymin(array[9], array[33]);
1876     array[33] = mymax(array[9], array[33]);
1877     array[9] = tmp;
1878     tmp = mymin(array[10], array[34]);
1879     array[34] = mymax(array[10], array[34]);
1880     array[10] = tmp;
1881     tmp = mymin(array[11], array[35]);
1882     array[35] = mymax(array[11], array[35]);
1883     array[11] = tmp;
1884     tmp = mymin(array[12], array[36]);
1885     array[36] = mymax(array[12], array[36]);
1886     array[12] = tmp;
1887     tmp = mymin(array[13], array[37]);
1888     array[37] = mymax(array[13], array[37]);
1889     array[13] = tmp;
1890     tmp = mymin(array[14], array[38]);
1891     array[38] = mymax(array[14], array[38]);
1892     array[14] = tmp;
1893     tmp = mymin(array[15], array[39]);
1894     array[39] = mymax(array[15], array[39]);
1895     array[15] = tmp;
1896     tmp = mymin(array[24], array[48]);
1897     array[48] = mymax(array[24], array[48]);
1898     array[24] = tmp;
1899     tmp = mymin(array[25], array[49]);
1900     array[49] = mymax(array[25], array[49]);
1901     array[25] = tmp;
1902     tmp = mymin(array[26], array[50]);
1903     array[50] = mymax(array[26], array[50]);
1904     array[26] = tmp;
1905     tmp = mymin(array[27], array[51]);
1906     array[51] = mymax(array[27], array[51]);
1907     array[27] = tmp;
1908     tmp = mymin(array[28], array[52]);
1909     array[52] = mymax(array[28], array[52]);
1910     array[28] = tmp;
1911     tmp = mymin(array[29], array[53]);
1912     array[53] = mymax(array[29], array[53]);
1913     array[29] = tmp;
1914     tmp = mymin(array[30], array[54]);
1915     array[54] = mymax(array[30], array[54]);
1916     array[30] = tmp;
1917     tmp = mymin(array[31], array[55]);
1918     array[55] = mymax(array[31], array[55]);
1919     array[31] = tmp;
1920     tmp = mymin(array[40], array[64]);
1921     array[64] = mymax(array[40], array[64]);
1922     array[40] = tmp;
1923     tmp = mymin(array[41], array[65]);
1924     array[65] = mymax(array[41], array[65]);
1925     array[41] = tmp;
1926     tmp = mymin(array[42], array[66]);
1927     array[66] = mymax(array[42], array[66]);
1928     array[42] = tmp;
1929     tmp = mymin(array[43], array[67]);
1930     array[67] = mymax(array[43], array[67]);
1931     array[43] = tmp;
1932     tmp = mymin(array[44], array[68]);
1933     array[68] = mymax(array[44], array[68]);
1934     array[44] = tmp;
1935     tmp = mymin(array[45], array[69]);
1936     array[69] = mymax(array[45], array[69]);
1937     array[45] = tmp;
1938     tmp = mymin(array[46], array[70]);
1939     array[70] = mymax(array[46], array[70]);
1940     array[46] = tmp;
1941     tmp = mymin(array[47], array[71]);
1942     array[71] = mymax(array[47], array[71]);
1943     array[47] = tmp;
1944     tmp = mymin(array[56], array[80]);
1945     array[80] = mymax(array[56], array[80]);
1946     array[56] = tmp;
1947     tmp = mymin(array[8], array[16]);
1948     array[16] = mymax(array[8], array[16]);
1949     array[8] = tmp;
1950     tmp = mymin(array[9], array[17]);
1951     array[17] = mymax(array[9], array[17]);
1952     array[9] = tmp;
1953     tmp = mymin(array[10], array[18]);
1954     array[18] = mymax(array[10], array[18]);
1955     array[10] = tmp;
1956     tmp = mymin(array[11], array[19]);
1957     array[19] = mymax(array[11], array[19]);
1958     array[11] = tmp;
1959     tmp = mymin(array[12], array[20]);
1960     array[20] = mymax(array[12], array[20]);
1961     array[12] = tmp;
1962     tmp = mymin(array[13], array[21]);
1963     array[21] = mymax(array[13], array[21]);
1964     array[13] = tmp;
1965     tmp = mymin(array[14], array[22]);
1966     array[22] = mymax(array[14], array[22]);
1967     array[14] = tmp;
1968     tmp = mymin(array[15], array[23]);
1969     array[23] = mymax(array[15], array[23]);
1970     array[15] = tmp;
1971     tmp = mymin(array[24], array[32]);
1972     array[32] = mymax(array[24], array[32]);
1973     array[24] = tmp;
1974     tmp = mymin(array[25], array[33]);
1975     array[33] = mymax(array[25], array[33]);
1976     array[25] = tmp;
1977     tmp = mymin(array[26], array[34]);
1978     array[34] = mymax(array[26], array[34]);
1979     array[26] = tmp;
1980     tmp = mymin(array[27], array[35]);
1981     array[35] = mymax(array[27], array[35]);
1982     array[27] = tmp;
1983     tmp = mymin(array[28], array[36]);
1984     array[36] = mymax(array[28], array[36]);
1985     array[28] = tmp;
1986     tmp = mymin(array[29], array[37]);
1987     array[37] = mymax(array[29], array[37]);
1988     array[29] = tmp;
1989     tmp = mymin(array[30], array[38]);
1990     array[38] = mymax(array[30], array[38]);
1991     array[30] = tmp;
1992     tmp = mymin(array[31], array[39]);
1993     array[39] = mymax(array[31], array[39]);
1994     array[31] = tmp;
1995     tmp = mymin(array[40], array[48]);
1996     array[48] = mymax(array[40], array[48]);
1997     array[40] = tmp;
1998     tmp = mymin(array[41], array[49]);
1999     array[49] = mymax(array[41], array[49]);
2000     array[41] = tmp;
2001     tmp = mymin(array[42], array[50]);
2002     array[50] = mymax(array[42], array[50]);
2003     array[42] = tmp;
2004     tmp = mymin(array[43], array[51]);
2005     array[51] = mymax(array[43], array[51]);
2006     array[43] = tmp;
2007     tmp = mymin(array[44], array[52]);
2008     array[52] = mymax(array[44], array[52]);
2009     array[44] = tmp;
2010     tmp = mymin(array[45], array[53]);
2011     array[53] = mymax(array[45], array[53]);
2012     array[45] = tmp;
2013     tmp = mymin(array[46], array[54]);
2014     array[54] = mymax(array[46], array[54]);
2015     array[46] = tmp;
2016     tmp = mymin(array[47], array[55]);
2017     array[55] = mymax(array[47], array[55]);
2018     array[47] = tmp;
2019     tmp = mymin(array[56], array[64]);
2020     array[64] = mymax(array[56], array[64]);
2021     array[56] = tmp;
2022     tmp = mymin(array[57], array[65]);
2023     array[65] = mymax(array[57], array[65]);
2024     array[57] = tmp;
2025     tmp = mymin(array[58], array[66]);
2026     array[66] = mymax(array[58], array[66]);
2027     array[58] = tmp;
2028     tmp = mymin(array[59], array[67]);
2029     array[67] = mymax(array[59], array[67]);
2030     array[59] = tmp;
2031     tmp = mymin(array[60], array[68]);
2032     array[68] = mymax(array[60], array[68]);
2033     array[60] = tmp;
2034     tmp = mymin(array[61], array[69]);
2035     array[69] = mymax(array[61], array[69]);
2036     array[61] = tmp;
2037     tmp = mymin(array[62], array[70]);
2038     array[70] = mymax(array[62], array[70]);
2039     array[62] = tmp;
2040     tmp = mymin(array[63], array[71]);
2041     array[71] = mymax(array[63], array[71]);
2042     array[63] = tmp;
2043     tmp = mymin(array[72], array[80]);
2044     array[80] = mymax(array[72], array[80]);
2045     array[72] = tmp;
2046     tmp = mymin(array[0], array[4]);
2047     array[4] = mymax(array[0], array[4]);
2048     array[0] = tmp;
2049     tmp = mymin(array[1], array[5]);
2050     array[5] = mymax(array[1], array[5]);
2051     array[1] = tmp;
2052     tmp = mymin(array[2], array[6]);
2053     array[6] = mymax(array[2], array[6]);
2054     array[2] = tmp;
2055     tmp = mymin(array[3], array[7]);
2056     array[7] = mymax(array[3], array[7]);
2057     array[3] = tmp;
2058     tmp = mymin(array[8], array[12]);
2059     array[12] = mymax(array[8], array[12]);
2060     array[8] = tmp;
2061     tmp = mymin(array[9], array[13]);
2062     array[13] = mymax(array[9], array[13]);
2063     array[9] = tmp;
2064     tmp = mymin(array[10], array[14]);
2065     array[14] = mymax(array[10], array[14]);
2066     array[10] = tmp;
2067     tmp = mymin(array[11], array[15]);
2068     array[15] = mymax(array[11], array[15]);
2069     array[11] = tmp;
2070     tmp = mymin(array[16], array[20]);
2071     array[20] = mymax(array[16], array[20]);
2072     array[16] = tmp;
2073     tmp = mymin(array[17], array[21]);
2074     array[21] = mymax(array[17], array[21]);
2075     array[17] = tmp;
2076     tmp = mymin(array[18], array[22]);
2077     array[22] = mymax(array[18], array[22]);
2078     array[18] = tmp;
2079     tmp = mymin(array[19], array[23]);
2080     array[23] = mymax(array[19], array[23]);
2081     array[19] = tmp;
2082     tmp = mymin(array[24], array[28]);
2083     array[28] = mymax(array[24], array[28]);
2084     array[24] = tmp;
2085     tmp = mymin(array[25], array[29]);
2086     array[29] = mymax(array[25], array[29]);
2087     array[25] = tmp;
2088     tmp = mymin(array[26], array[30]);
2089     array[30] = mymax(array[26], array[30]);
2090     array[26] = tmp;
2091     tmp = mymin(array[27], array[31]);
2092     array[31] = mymax(array[27], array[31]);
2093     array[27] = tmp;
2094     tmp = mymin(array[32], array[36]);
2095     array[36] = mymax(array[32], array[36]);
2096     array[32] = tmp;
2097     tmp = mymin(array[33], array[37]);
2098     array[37] = mymax(array[33], array[37]);
2099     array[33] = tmp;
2100     tmp = mymin(array[34], array[38]);
2101     array[38] = mymax(array[34], array[38]);
2102     array[34] = tmp;
2103     tmp = mymin(array[35], array[39]);
2104     array[39] = mymax(array[35], array[39]);
2105     array[35] = tmp;
2106     tmp = mymin(array[40], array[44]);
2107     array[44] = mymax(array[40], array[44]);
2108     array[40] = tmp;
2109     tmp = mymin(array[41], array[45]);
2110     array[45] = mymax(array[41], array[45]);
2111     array[41] = tmp;
2112     tmp = mymin(array[42], array[46]);
2113     array[46] = mymax(array[42], array[46]);
2114     array[42] = tmp;
2115     tmp = mymin(array[43], array[47]);
2116     array[47] = mymax(array[43], array[47]);
2117     array[43] = tmp;
2118     tmp = mymin(array[48], array[52]);
2119     array[52] = mymax(array[48], array[52]);
2120     array[48] = tmp;
2121     tmp = mymin(array[49], array[53]);
2122     array[53] = mymax(array[49], array[53]);
2123     array[49] = tmp;
2124     tmp = mymin(array[50], array[54]);
2125     array[54] = mymax(array[50], array[54]);
2126     array[50] = tmp;
2127     tmp = mymin(array[51], array[55]);
2128     array[55] = mymax(array[51], array[55]);
2129     array[51] = tmp;
2130     tmp = mymin(array[56], array[60]);
2131     array[60] = mymax(array[56], array[60]);
2132     array[56] = tmp;
2133     tmp = mymin(array[57], array[61]);
2134     array[61] = mymax(array[57], array[61]);
2135     array[57] = tmp;
2136     tmp = mymin(array[58], array[62]);
2137     array[62] = mymax(array[58], array[62]);
2138     array[58] = tmp;
2139     tmp = mymin(array[59], array[63]);
2140     array[63] = mymax(array[59], array[63]);
2141     array[59] = tmp;
2142     tmp = mymin(array[64], array[68]);
2143     array[68] = mymax(array[64], array[68]);
2144     array[64] = tmp;
2145     tmp = mymin(array[65], array[69]);
2146     array[69] = mymax(array[65], array[69]);
2147     array[65] = tmp;
2148     tmp = mymin(array[66], array[70]);
2149     array[70] = mymax(array[66], array[70]);
2150     array[66] = tmp;
2151     tmp = mymin(array[67], array[71]);
2152     array[71] = mymax(array[67], array[71]);
2153     array[67] = tmp;
2154     tmp = mymin(array[72], array[76]);
2155     array[76] = mymax(array[72], array[76]);
2156     array[72] = tmp;
2157     tmp = mymin(array[73], array[77]);
2158     array[77] = mymax(array[73], array[77]);
2159     array[73] = tmp;
2160     tmp = mymin(array[74], array[78]);
2161     array[78] = mymax(array[74], array[78]);
2162     array[74] = tmp;
2163     tmp = mymin(array[75], array[79]);
2164     array[79] = mymax(array[75], array[79]);
2165     array[75] = tmp;
2166     tmp = mymin(array[4], array[64]);
2167     array[64] = mymax(array[4], array[64]);
2168     array[4] = tmp;
2169     tmp = mymin(array[5], array[65]);
2170     array[65] = mymax(array[5], array[65]);
2171     array[5] = tmp;
2172     tmp = mymin(array[6], array[66]);
2173     array[66] = mymax(array[6], array[66]);
2174     array[6] = tmp;
2175     tmp = mymin(array[7], array[67]);
2176     array[67] = mymax(array[7], array[67]);
2177     array[7] = tmp;
2178     tmp = mymin(array[12], array[72]);
2179     array[72] = mymax(array[12], array[72]);
2180     array[12] = tmp;
2181     tmp = mymin(array[13], array[73]);
2182     array[73] = mymax(array[13], array[73]);
2183     array[13] = tmp;
2184     tmp = mymin(array[14], array[74]);
2185     array[74] = mymax(array[14], array[74]);
2186     array[14] = tmp;
2187     tmp = mymin(array[15], array[75]);
2188     array[75] = mymax(array[15], array[75]);
2189     array[15] = tmp;
2190     tmp = mymin(array[20], array[80]);
2191     array[80] = mymax(array[20], array[80]);
2192     array[20] = tmp;
2193     tmp = mymin(array[4], array[32]);
2194     array[32] = mymax(array[4], array[32]);
2195     array[4] = tmp;
2196     tmp = mymin(array[5], array[33]);
2197     array[33] = mymax(array[5], array[33]);
2198     array[5] = tmp;
2199     tmp = mymin(array[6], array[34]);
2200     array[34] = mymax(array[6], array[34]);
2201     array[6] = tmp;
2202     tmp = mymin(array[7], array[35]);
2203     array[35] = mymax(array[7], array[35]);
2204     array[7] = tmp;
2205     tmp = mymin(array[12], array[40]);
2206     array[40] = mymax(array[12], array[40]);
2207     array[12] = tmp;
2208     tmp = mymin(array[13], array[41]);
2209     array[41] = mymax(array[13], array[41]);
2210     array[13] = tmp;
2211     tmp = mymin(array[14], array[42]);
2212     array[42] = mymax(array[14], array[42]);
2213     array[14] = tmp;
2214     tmp = mymin(array[15], array[43]);
2215     array[43] = mymax(array[15], array[43]);
2216     array[15] = tmp;
2217     tmp = mymin(array[20], array[48]);
2218     array[48] = mymax(array[20], array[48]);
2219     array[20] = tmp;
2220     tmp = mymin(array[21], array[49]);
2221     array[49] = mymax(array[21], array[49]);
2222     array[21] = tmp;
2223     tmp = mymin(array[22], array[50]);
2224     array[50] = mymax(array[22], array[50]);
2225     array[22] = tmp;
2226     tmp = mymin(array[23], array[51]);
2227     array[51] = mymax(array[23], array[51]);
2228     array[23] = tmp;
2229     tmp = mymin(array[28], array[56]);
2230     array[56] = mymax(array[28], array[56]);
2231     array[28] = tmp;
2232     tmp = mymin(array[29], array[57]);
2233     array[57] = mymax(array[29], array[57]);
2234     array[29] = tmp;
2235     tmp = mymin(array[30], array[58]);
2236     array[58] = mymax(array[30], array[58]);
2237     array[30] = tmp;
2238     tmp = mymin(array[31], array[59]);
2239     array[59] = mymax(array[31], array[59]);
2240     array[31] = tmp;
2241     tmp = mymin(array[36], array[64]);
2242     array[64] = mymax(array[36], array[64]);
2243     array[36] = tmp;
2244     tmp = mymin(array[37], array[65]);
2245     array[65] = mymax(array[37], array[65]);
2246     array[37] = tmp;
2247     tmp = mymin(array[38], array[66]);
2248     array[66] = mymax(array[38], array[66]);
2249     array[38] = tmp;
2250     tmp = mymin(array[39], array[67]);
2251     array[67] = mymax(array[39], array[67]);
2252     array[39] = tmp;
2253     tmp = mymin(array[44], array[72]);
2254     array[72] = mymax(array[44], array[72]);
2255     array[44] = tmp;
2256     tmp = mymin(array[45], array[73]);
2257     array[73] = mymax(array[45], array[73]);
2258     array[45] = tmp;
2259     tmp = mymin(array[46], array[74]);
2260     array[74] = mymax(array[46], array[74]);
2261     array[46] = tmp;
2262     tmp = mymin(array[47], array[75]);
2263     array[75] = mymax(array[47], array[75]);
2264     array[47] = tmp;
2265     tmp = mymin(array[52], array[80]);
2266     array[80] = mymax(array[52], array[80]);
2267     array[52] = tmp;
2268     tmp = mymin(array[4], array[16]);
2269     array[16] = mymax(array[4], array[16]);
2270     array[4] = tmp;
2271     tmp = mymin(array[5], array[17]);
2272     array[17] = mymax(array[5], array[17]);
2273     array[5] = tmp;
2274     tmp = mymin(array[6], array[18]);
2275     array[18] = mymax(array[6], array[18]);
2276     array[6] = tmp;
2277     tmp = mymin(array[7], array[19]);
2278     array[19] = mymax(array[7], array[19]);
2279     array[7] = tmp;
2280     tmp = mymin(array[12], array[24]);
2281     array[24] = mymax(array[12], array[24]);
2282     array[12] = tmp;
2283     tmp = mymin(array[13], array[25]);
2284     array[25] = mymax(array[13], array[25]);
2285     array[13] = tmp;
2286     tmp = mymin(array[14], array[26]);
2287     array[26] = mymax(array[14], array[26]);
2288     array[14] = tmp;
2289     tmp = mymin(array[15], array[27]);
2290     array[27] = mymax(array[15], array[27]);
2291     array[15] = tmp;
2292     tmp = mymin(array[20], array[32]);
2293     array[32] = mymax(array[20], array[32]);
2294     array[20] = tmp;
2295     tmp = mymin(array[21], array[33]);
2296     array[33] = mymax(array[21], array[33]);
2297     array[21] = tmp;
2298     tmp = mymin(array[22], array[34]);
2299     array[34] = mymax(array[22], array[34]);
2300     array[22] = tmp;
2301     tmp = mymin(array[23], array[35]);
2302     array[35] = mymax(array[23], array[35]);
2303     array[23] = tmp;
2304     tmp = mymin(array[28], array[40]);
2305     array[40] = mymax(array[28], array[40]);
2306     array[28] = tmp;
2307     tmp = mymin(array[29], array[41]);
2308     array[41] = mymax(array[29], array[41]);
2309     array[29] = tmp;
2310     tmp = mymin(array[30], array[42]);
2311     array[42] = mymax(array[30], array[42]);
2312     array[30] = tmp;
2313     tmp = mymin(array[31], array[43]);
2314     array[43] = mymax(array[31], array[43]);
2315     array[31] = tmp;
2316     tmp = mymin(array[36], array[48]);
2317     array[48] = mymax(array[36], array[48]);
2318     array[36] = tmp;
2319     tmp = mymin(array[37], array[49]);
2320     array[49] = mymax(array[37], array[49]);
2321     array[37] = tmp;
2322     tmp = mymin(array[38], array[50]);
2323     array[50] = mymax(array[38], array[50]);
2324     array[38] = tmp;
2325     tmp = mymin(array[39], array[51]);
2326     array[51] = mymax(array[39], array[51]);
2327     array[39] = tmp;
2328     tmp = mymin(array[44], array[56]);
2329     array[56] = mymax(array[44], array[56]);
2330     array[44] = tmp;
2331     tmp = mymin(array[45], array[57]);
2332     array[57] = mymax(array[45], array[57]);
2333     array[45] = tmp;
2334     tmp = mymin(array[46], array[58]);
2335     array[58] = mymax(array[46], array[58]);
2336     array[46] = tmp;
2337     tmp = mymin(array[47], array[59]);
2338     array[59] = mymax(array[47], array[59]);
2339     array[47] = tmp;
2340     tmp = mymin(array[52], array[64]);
2341     array[64] = mymax(array[52], array[64]);
2342     array[52] = tmp;
2343     tmp = mymin(array[53], array[65]);
2344     array[65] = mymax(array[53], array[65]);
2345     array[53] = tmp;
2346     tmp = mymin(array[54], array[66]);
2347     array[66] = mymax(array[54], array[66]);
2348     array[54] = tmp;
2349     tmp = mymin(array[55], array[67]);
2350     array[67] = mymax(array[55], array[67]);
2351     array[55] = tmp;
2352     tmp = mymin(array[60], array[72]);
2353     array[72] = mymax(array[60], array[72]);
2354     array[60] = tmp;
2355     tmp = mymin(array[61], array[73]);
2356     array[73] = mymax(array[61], array[73]);
2357     array[61] = tmp;
2358     tmp = mymin(array[62], array[74]);
2359     array[74] = mymax(array[62], array[74]);
2360     array[62] = tmp;
2361     tmp = mymin(array[63], array[75]);
2362     array[75] = mymax(array[63], array[75]);
2363     array[63] = tmp;
2364     tmp = mymin(array[68], array[80]);
2365     array[80] = mymax(array[68], array[80]);
2366     array[68] = tmp;
2367     tmp = mymin(array[4], array[8]);
2368     array[8] = mymax(array[4], array[8]);
2369     array[4] = tmp;
2370     tmp = mymin(array[5], array[9]);
2371     array[9] = mymax(array[5], array[9]);
2372     array[5] = tmp;
2373     tmp = mymin(array[6], array[10]);
2374     array[10] = mymax(array[6], array[10]);
2375     array[6] = tmp;
2376     tmp = mymin(array[7], array[11]);
2377     array[11] = mymax(array[7], array[11]);
2378     array[7] = tmp;
2379     tmp = mymin(array[12], array[16]);
2380     array[16] = mymax(array[12], array[16]);
2381     array[12] = tmp;
2382     tmp = mymin(array[13], array[17]);
2383     array[17] = mymax(array[13], array[17]);
2384     array[13] = tmp;
2385     tmp = mymin(array[14], array[18]);
2386     array[18] = mymax(array[14], array[18]);
2387     array[14] = tmp;
2388     tmp = mymin(array[15], array[19]);
2389     array[19] = mymax(array[15], array[19]);
2390     array[15] = tmp;
2391     tmp = mymin(array[20], array[24]);
2392     array[24] = mymax(array[20], array[24]);
2393     array[20] = tmp;
2394     tmp = mymin(array[21], array[25]);
2395     array[25] = mymax(array[21], array[25]);
2396     array[21] = tmp;
2397     tmp = mymin(array[22], array[26]);
2398     array[26] = mymax(array[22], array[26]);
2399     array[22] = tmp;
2400     tmp = mymin(array[23], array[27]);
2401     array[27] = mymax(array[23], array[27]);
2402     array[23] = tmp;
2403     tmp = mymin(array[28], array[32]);
2404     array[32] = mymax(array[28], array[32]);
2405     array[28] = tmp;
2406     tmp = mymin(array[29], array[33]);
2407     array[33] = mymax(array[29], array[33]);
2408     array[29] = tmp;
2409     tmp = mymin(array[30], array[34]);
2410     array[34] = mymax(array[30], array[34]);
2411     array[30] = tmp;
2412     tmp = mymin(array[31], array[35]);
2413     array[35] = mymax(array[31], array[35]);
2414     array[31] = tmp;
2415     tmp = mymin(array[36], array[40]);
2416     array[40] = mymax(array[36], array[40]);
2417     array[36] = tmp;
2418     tmp = mymin(array[37], array[41]);
2419     array[41] = mymax(array[37], array[41]);
2420     array[37] = tmp;
2421     tmp = mymin(array[38], array[42]);
2422     array[42] = mymax(array[38], array[42]);
2423     array[38] = tmp;
2424     tmp = mymin(array[39], array[43]);
2425     array[43] = mymax(array[39], array[43]);
2426     array[39] = tmp;
2427     tmp = mymin(array[44], array[48]);
2428     array[48] = mymax(array[44], array[48]);
2429     array[44] = tmp;
2430     tmp = mymin(array[45], array[49]);
2431     array[49] = mymax(array[45], array[49]);
2432     array[45] = tmp;
2433     tmp = mymin(array[46], array[50]);
2434     array[50] = mymax(array[46], array[50]);
2435     array[46] = tmp;
2436     tmp = mymin(array[47], array[51]);
2437     array[51] = mymax(array[47], array[51]);
2438     array[47] = tmp;
2439     tmp = mymin(array[52], array[56]);
2440     array[56] = mymax(array[52], array[56]);
2441     array[52] = tmp;
2442     tmp = mymin(array[53], array[57]);
2443     array[57] = mymax(array[53], array[57]);
2444     array[53] = tmp;
2445     tmp = mymin(array[54], array[58]);
2446     array[58] = mymax(array[54], array[58]);
2447     array[54] = tmp;
2448     tmp = mymin(array[55], array[59]);
2449     array[59] = mymax(array[55], array[59]);
2450     array[55] = tmp;
2451     tmp = mymin(array[60], array[64]);
2452     array[64] = mymax(array[60], array[64]);
2453     array[60] = tmp;
2454     tmp = mymin(array[61], array[65]);
2455     array[65] = mymax(array[61], array[65]);
2456     array[61] = tmp;
2457     tmp = mymin(array[62], array[66]);
2458     array[66] = mymax(array[62], array[66]);
2459     array[62] = tmp;
2460     tmp = mymin(array[63], array[67]);
2461     array[67] = mymax(array[63], array[67]);
2462     array[63] = tmp;
2463     tmp = mymin(array[68], array[72]);
2464     array[72] = mymax(array[68], array[72]);
2465     array[68] = tmp;
2466     tmp = mymin(array[69], array[73]);
2467     array[73] = mymax(array[69], array[73]);
2468     array[69] = tmp;
2469     tmp = mymin(array[70], array[74]);
2470     array[74] = mymax(array[70], array[74]);
2471     array[70] = tmp;
2472     tmp = mymin(array[71], array[75]);
2473     array[75] = mymax(array[71], array[75]);
2474     array[71] = tmp;
2475     tmp = mymin(array[76], array[80]);
2476     array[80] = mymax(array[76], array[80]);
2477     array[76] = tmp;
2478     tmp = mymin(array[0], array[2]);
2479     array[2] = mymax(array[0], array[2]);
2480     array[0] = tmp;
2481     tmp = mymin(array[1], array[3]);
2482     array[3] = mymax(array[1], array[3]);
2483     array[1] = tmp;
2484     tmp = mymin(array[4], array[6]);
2485     array[6] = mymax(array[4], array[6]);
2486     array[4] = tmp;
2487     tmp = mymin(array[5], array[7]);
2488     array[7] = mymax(array[5], array[7]);
2489     array[5] = tmp;
2490     tmp = mymin(array[8], array[10]);
2491     array[10] = mymax(array[8], array[10]);
2492     array[8] = tmp;
2493     tmp = mymin(array[9], array[11]);
2494     array[11] = mymax(array[9], array[11]);
2495     array[9] = tmp;
2496     tmp = mymin(array[12], array[14]);
2497     array[14] = mymax(array[12], array[14]);
2498     array[12] = tmp;
2499     tmp = mymin(array[13], array[15]);
2500     array[15] = mymax(array[13], array[15]);
2501     array[13] = tmp;
2502     tmp = mymin(array[16], array[18]);
2503     array[18] = mymax(array[16], array[18]);
2504     array[16] = tmp;
2505     tmp = mymin(array[17], array[19]);
2506     array[19] = mymax(array[17], array[19]);
2507     array[17] = tmp;
2508     tmp = mymin(array[20], array[22]);
2509     array[22] = mymax(array[20], array[22]);
2510     array[20] = tmp;
2511     tmp = mymin(array[21], array[23]);
2512     array[23] = mymax(array[21], array[23]);
2513     array[21] = tmp;
2514     tmp = mymin(array[24], array[26]);
2515     array[26] = mymax(array[24], array[26]);
2516     array[24] = tmp;
2517     tmp = mymin(array[25], array[27]);
2518     array[27] = mymax(array[25], array[27]);
2519     array[25] = tmp;
2520     tmp = mymin(array[28], array[30]);
2521     array[30] = mymax(array[28], array[30]);
2522     array[28] = tmp;
2523     tmp = mymin(array[29], array[31]);
2524     array[31] = mymax(array[29], array[31]);
2525     array[29] = tmp;
2526     tmp = mymin(array[32], array[34]);
2527     array[34] = mymax(array[32], array[34]);
2528     array[32] = tmp;
2529     tmp = mymin(array[33], array[35]);
2530     array[35] = mymax(array[33], array[35]);
2531     array[33] = tmp;
2532     tmp = mymin(array[36], array[38]);
2533     array[38] = mymax(array[36], array[38]);
2534     array[36] = tmp;
2535     tmp = mymin(array[37], array[39]);
2536     array[39] = mymax(array[37], array[39]);
2537     array[37] = tmp;
2538     tmp = mymin(array[40], array[42]);
2539     array[42] = mymax(array[40], array[42]);
2540     array[40] = tmp;
2541     tmp = mymin(array[41], array[43]);
2542     array[43] = mymax(array[41], array[43]);
2543     array[41] = tmp;
2544     tmp = mymin(array[44], array[46]);
2545     array[46] = mymax(array[44], array[46]);
2546     array[44] = tmp;
2547     tmp = mymin(array[45], array[47]);
2548     array[47] = mymax(array[45], array[47]);
2549     array[45] = tmp;
2550     tmp = mymin(array[48], array[50]);
2551     array[50] = mymax(array[48], array[50]);
2552     array[48] = tmp;
2553     tmp = mymin(array[49], array[51]);
2554     array[51] = mymax(array[49], array[51]);
2555     array[49] = tmp;
2556     tmp = mymin(array[52], array[54]);
2557     array[54] = mymax(array[52], array[54]);
2558     array[52] = tmp;
2559     tmp = mymin(array[53], array[55]);
2560     array[55] = mymax(array[53], array[55]);
2561     array[53] = tmp;
2562     tmp = mymin(array[56], array[58]);
2563     array[58] = mymax(array[56], array[58]);
2564     array[56] = tmp;
2565     tmp = mymin(array[57], array[59]);
2566     array[59] = mymax(array[57], array[59]);
2567     array[57] = tmp;
2568     tmp = mymin(array[60], array[62]);
2569     array[62] = mymax(array[60], array[62]);
2570     array[60] = tmp;
2571     tmp = mymin(array[61], array[63]);
2572     array[63] = mymax(array[61], array[63]);
2573     array[61] = tmp;
2574     tmp = mymin(array[64], array[66]);
2575     array[66] = mymax(array[64], array[66]);
2576     array[64] = tmp;
2577     tmp = mymin(array[65], array[67]);
2578     array[67] = mymax(array[65], array[67]);
2579     array[65] = tmp;
2580     tmp = mymin(array[68], array[70]);
2581     array[70] = mymax(array[68], array[70]);
2582     array[68] = tmp;
2583     tmp = mymin(array[69], array[71]);
2584     array[71] = mymax(array[69], array[71]);
2585     array[69] = tmp;
2586     tmp = mymin(array[72], array[74]);
2587     array[74] = mymax(array[72], array[74]);
2588     array[72] = tmp;
2589     tmp = mymin(array[73], array[75]);
2590     array[75] = mymax(array[73], array[75]);
2591     array[73] = tmp;
2592     tmp = mymin(array[76], array[78]);
2593     array[78] = mymax(array[76], array[78]);
2594     array[76] = tmp;
2595     tmp = mymin(array[77], array[79]);
2596     array[79] = mymax(array[77], array[79]);
2597     array[77] = tmp;
2598     tmp = mymin(array[2], array[64]);
2599     array[64] = mymax(array[2], array[64]);
2600     array[2] = tmp;
2601     tmp = mymin(array[3], array[65]);
2602     array[65] = mymax(array[3], array[65]);
2603     array[3] = tmp;
2604     tmp = mymin(array[6], array[68]);
2605     array[68] = mymax(array[6], array[68]);
2606     array[6] = tmp;
2607     tmp = mymin(array[7], array[69]);
2608     array[69] = mymax(array[7], array[69]);
2609     array[7] = tmp;
2610     tmp = mymin(array[10], array[72]);
2611     array[72] = mymax(array[10], array[72]);
2612     array[10] = tmp;
2613     tmp = mymin(array[11], array[73]);
2614     array[73] = mymax(array[11], array[73]);
2615     array[11] = tmp;
2616     tmp = mymin(array[14], array[76]);
2617     array[76] = mymax(array[14], array[76]);
2618     array[14] = tmp;
2619     tmp = mymin(array[15], array[77]);
2620     array[77] = mymax(array[15], array[77]);
2621     array[15] = tmp;
2622     tmp = mymin(array[18], array[80]);
2623     array[80] = mymax(array[18], array[80]);
2624     array[18] = tmp;
2625     tmp = mymin(array[2], array[32]);
2626     array[32] = mymax(array[2], array[32]);
2627     array[2] = tmp;
2628     tmp = mymin(array[3], array[33]);
2629     array[33] = mymax(array[3], array[33]);
2630     array[3] = tmp;
2631     tmp = mymin(array[6], array[36]);
2632     array[36] = mymax(array[6], array[36]);
2633     array[6] = tmp;
2634     tmp = mymin(array[7], array[37]);
2635     array[37] = mymax(array[7], array[37]);
2636     array[7] = tmp;
2637     tmp = mymin(array[10], array[40]);
2638     array[40] = mymax(array[10], array[40]);
2639     array[10] = tmp;
2640     tmp = mymin(array[11], array[41]);
2641     array[41] = mymax(array[11], array[41]);
2642     array[11] = tmp;
2643     tmp = mymin(array[14], array[44]);
2644     array[44] = mymax(array[14], array[44]);
2645     array[14] = tmp;
2646     tmp = mymin(array[15], array[45]);
2647     array[45] = mymax(array[15], array[45]);
2648     array[15] = tmp;
2649     tmp = mymin(array[18], array[48]);
2650     array[48] = mymax(array[18], array[48]);
2651     array[18] = tmp;
2652     tmp = mymin(array[19], array[49]);
2653     array[49] = mymax(array[19], array[49]);
2654     array[19] = tmp;
2655     tmp = mymin(array[22], array[52]);
2656     array[52] = mymax(array[22], array[52]);
2657     array[22] = tmp;
2658     tmp = mymin(array[23], array[53]);
2659     array[53] = mymax(array[23], array[53]);
2660     array[23] = tmp;
2661     tmp = mymin(array[26], array[56]);
2662     array[56] = mymax(array[26], array[56]);
2663     array[26] = tmp;
2664     tmp = mymin(array[27], array[57]);
2665     array[57] = mymax(array[27], array[57]);
2666     array[27] = tmp;
2667     tmp = mymin(array[30], array[60]);
2668     array[60] = mymax(array[30], array[60]);
2669     array[30] = tmp;
2670     tmp = mymin(array[31], array[61]);
2671     array[61] = mymax(array[31], array[61]);
2672     array[31] = tmp;
2673     tmp = mymin(array[34], array[64]);
2674     array[64] = mymax(array[34], array[64]);
2675     array[34] = tmp;
2676     tmp = mymin(array[35], array[65]);
2677     array[65] = mymax(array[35], array[65]);
2678     array[35] = tmp;
2679     tmp = mymin(array[38], array[68]);
2680     array[68] = mymax(array[38], array[68]);
2681     array[38] = tmp;
2682     tmp = mymin(array[39], array[69]);
2683     array[69] = mymax(array[39], array[69]);
2684     array[39] = tmp;
2685     tmp = mymin(array[42], array[72]);
2686     array[72] = mymax(array[42], array[72]);
2687     array[42] = tmp;
2688     tmp = mymin(array[43], array[73]);
2689     array[73] = mymax(array[43], array[73]);
2690     array[43] = tmp;
2691     tmp = mymin(array[46], array[76]);
2692     array[76] = mymax(array[46], array[76]);
2693     array[46] = tmp;
2694     tmp = mymin(array[47], array[77]);
2695     array[77] = mymax(array[47], array[77]);
2696     array[47] = tmp;
2697     tmp = mymin(array[50], array[80]);
2698     array[80] = mymax(array[50], array[80]);
2699     array[50] = tmp;
2700     tmp = mymin(array[2], array[16]);
2701     array[16] = mymax(array[2], array[16]);
2702     array[2] = tmp;
2703     tmp = mymin(array[3], array[17]);
2704     array[17] = mymax(array[3], array[17]);
2705     array[3] = tmp;
2706     tmp = mymin(array[6], array[20]);
2707     array[20] = mymax(array[6], array[20]);
2708     array[6] = tmp;
2709     tmp = mymin(array[7], array[21]);
2710     array[21] = mymax(array[7], array[21]);
2711     array[7] = tmp;
2712     tmp = mymin(array[10], array[24]);
2713     array[24] = mymax(array[10], array[24]);
2714     array[10] = tmp;
2715     tmp = mymin(array[11], array[25]);
2716     array[25] = mymax(array[11], array[25]);
2717     array[11] = tmp;
2718     tmp = mymin(array[14], array[28]);
2719     array[28] = mymax(array[14], array[28]);
2720     array[14] = tmp;
2721     tmp = mymin(array[15], array[29]);
2722     array[29] = mymax(array[15], array[29]);
2723     array[15] = tmp;
2724     tmp = mymin(array[18], array[32]);
2725     array[32] = mymax(array[18], array[32]);
2726     array[18] = tmp;
2727     tmp = mymin(array[19], array[33]);
2728     array[33] = mymax(array[19], array[33]);
2729     array[19] = tmp;
2730     tmp = mymin(array[22], array[36]);
2731     array[36] = mymax(array[22], array[36]);
2732     array[22] = tmp;
2733     tmp = mymin(array[23], array[37]);
2734     array[37] = mymax(array[23], array[37]);
2735     array[23] = tmp;
2736     tmp = mymin(array[26], array[40]);
2737     array[40] = mymax(array[26], array[40]);
2738     array[26] = tmp;
2739     tmp = mymin(array[27], array[41]);
2740     array[41] = mymax(array[27], array[41]);
2741     array[27] = tmp;
2742     tmp = mymin(array[30], array[44]);
2743     array[44] = mymax(array[30], array[44]);
2744     array[30] = tmp;
2745     tmp = mymin(array[31], array[45]);
2746     array[45] = mymax(array[31], array[45]);
2747     array[31] = tmp;
2748     tmp = mymin(array[34], array[48]);
2749     array[48] = mymax(array[34], array[48]);
2750     array[34] = tmp;
2751     tmp = mymin(array[35], array[49]);
2752     array[49] = mymax(array[35], array[49]);
2753     array[35] = tmp;
2754     tmp = mymin(array[38], array[52]);
2755     array[52] = mymax(array[38], array[52]);
2756     array[38] = tmp;
2757     tmp = mymin(array[39], array[53]);
2758     array[53] = mymax(array[39], array[53]);
2759     array[39] = tmp;
2760     tmp = mymin(array[42], array[56]);
2761     array[56] = mymax(array[42], array[56]);
2762     array[42] = tmp;
2763     tmp = mymin(array[43], array[57]);
2764     array[57] = mymax(array[43], array[57]);
2765     array[43] = tmp;
2766     tmp = mymin(array[46], array[60]);
2767     array[60] = mymax(array[46], array[60]);
2768     array[46] = tmp;
2769     tmp = mymin(array[47], array[61]);
2770     array[61] = mymax(array[47], array[61]);
2771     array[47] = tmp;
2772     tmp = mymin(array[50], array[64]);
2773     array[64] = mymax(array[50], array[64]);
2774     array[50] = tmp;
2775     tmp = mymin(array[51], array[65]);
2776     array[65] = mymax(array[51], array[65]);
2777     array[51] = tmp;
2778     tmp = mymin(array[54], array[68]);
2779     array[68] = mymax(array[54], array[68]);
2780     array[54] = tmp;
2781     tmp = mymin(array[55], array[69]);
2782     array[69] = mymax(array[55], array[69]);
2783     array[55] = tmp;
2784     tmp = mymin(array[58], array[72]);
2785     array[72] = mymax(array[58], array[72]);
2786     array[58] = tmp;
2787     tmp = mymin(array[59], array[73]);
2788     array[73] = mymax(array[59], array[73]);
2789     array[59] = tmp;
2790     tmp = mymin(array[62], array[76]);
2791     array[76] = mymax(array[62], array[76]);
2792     array[62] = tmp;
2793     tmp = mymin(array[63], array[77]);
2794     array[77] = mymax(array[63], array[77]);
2795     array[63] = tmp;
2796     tmp = mymin(array[66], array[80]);
2797     array[80] = mymax(array[66], array[80]);
2798     array[66] = tmp;
2799     tmp = mymin(array[2], array[8]);
2800     array[8] = mymax(array[2], array[8]);
2801     array[2] = tmp;
2802     tmp = mymin(array[3], array[9]);
2803     array[9] = mymax(array[3], array[9]);
2804     array[3] = tmp;
2805     tmp = mymin(array[6], array[12]);
2806     array[12] = mymax(array[6], array[12]);
2807     array[6] = tmp;
2808     tmp = mymin(array[7], array[13]);
2809     array[13] = mymax(array[7], array[13]);
2810     array[7] = tmp;
2811     tmp = mymin(array[10], array[16]);
2812     array[16] = mymax(array[10], array[16]);
2813     array[10] = tmp;
2814     tmp = mymin(array[11], array[17]);
2815     array[17] = mymax(array[11], array[17]);
2816     array[11] = tmp;
2817     tmp = mymin(array[14], array[20]);
2818     array[20] = mymax(array[14], array[20]);
2819     array[14] = tmp;
2820     tmp = mymin(array[15], array[21]);
2821     array[21] = mymax(array[15], array[21]);
2822     array[15] = tmp;
2823     tmp = mymin(array[18], array[24]);
2824     array[24] = mymax(array[18], array[24]);
2825     array[18] = tmp;
2826     tmp = mymin(array[19], array[25]);
2827     array[25] = mymax(array[19], array[25]);
2828     array[19] = tmp;
2829     tmp = mymin(array[22], array[28]);
2830     array[28] = mymax(array[22], array[28]);
2831     array[22] = tmp;
2832     tmp = mymin(array[23], array[29]);
2833     array[29] = mymax(array[23], array[29]);
2834     array[23] = tmp;
2835     tmp = mymin(array[26], array[32]);
2836     array[32] = mymax(array[26], array[32]);
2837     array[26] = tmp;
2838     tmp = mymin(array[27], array[33]);
2839     array[33] = mymax(array[27], array[33]);
2840     array[27] = tmp;
2841     tmp = mymin(array[30], array[36]);
2842     array[36] = mymax(array[30], array[36]);
2843     array[30] = tmp;
2844     tmp = mymin(array[31], array[37]);
2845     array[37] = mymax(array[31], array[37]);
2846     array[31] = tmp;
2847     tmp = mymin(array[34], array[40]);
2848     array[40] = mymax(array[34], array[40]);
2849     array[34] = tmp;
2850     tmp = mymin(array[35], array[41]);
2851     array[41] = mymax(array[35], array[41]);
2852     array[35] = tmp;
2853     tmp = mymin(array[38], array[44]);
2854     array[44] = mymax(array[38], array[44]);
2855     array[38] = tmp;
2856     tmp = mymin(array[39], array[45]);
2857     array[45] = mymax(array[39], array[45]);
2858     array[39] = tmp;
2859     tmp = mymin(array[42], array[48]);
2860     array[48] = mymax(array[42], array[48]);
2861     array[42] = tmp;
2862     tmp = mymin(array[43], array[49]);
2863     array[49] = mymax(array[43], array[49]);
2864     array[43] = tmp;
2865     tmp = mymin(array[46], array[52]);
2866     array[52] = mymax(array[46], array[52]);
2867     array[46] = tmp;
2868     tmp = mymin(array[47], array[53]);
2869     array[53] = mymax(array[47], array[53]);
2870     array[47] = tmp;
2871     tmp = mymin(array[50], array[56]);
2872     array[56] = mymax(array[50], array[56]);
2873     array[50] = tmp;
2874     tmp = mymin(array[51], array[57]);
2875     array[57] = mymax(array[51], array[57]);
2876     array[51] = tmp;
2877     tmp = mymin(array[54], array[60]);
2878     array[60] = mymax(array[54], array[60]);
2879     array[54] = tmp;
2880     tmp = mymin(array[55], array[61]);
2881     array[61] = mymax(array[55], array[61]);
2882     array[55] = tmp;
2883     tmp = mymin(array[58], array[64]);
2884     array[64] = mymax(array[58], array[64]);
2885     array[58] = tmp;
2886     tmp = mymin(array[59], array[65]);
2887     array[65] = mymax(array[59], array[65]);
2888     array[59] = tmp;
2889     tmp = mymin(array[62], array[68]);
2890     array[68] = mymax(array[62], array[68]);
2891     array[62] = tmp;
2892     tmp = mymin(array[63], array[69]);
2893     array[69] = mymax(array[63], array[69]);
2894     array[63] = tmp;
2895     tmp = mymin(array[66], array[72]);
2896     array[72] = mymax(array[66], array[72]);
2897     array[66] = tmp;
2898     tmp = mymin(array[67], array[73]);
2899     array[73] = mymax(array[67], array[73]);
2900     array[67] = tmp;
2901     tmp = mymin(array[70], array[76]);
2902     array[76] = mymax(array[70], array[76]);
2903     array[70] = tmp;
2904     tmp = mymin(array[71], array[77]);
2905     array[77] = mymax(array[71], array[77]);
2906     array[71] = tmp;
2907     tmp = mymin(array[74], array[80]);
2908     array[80] = mymax(array[74], array[80]);
2909     array[74] = tmp;
2910     tmp = mymin(array[2], array[4]);
2911     array[4] = mymax(array[2], array[4]);
2912     array[2] = tmp;
2913     tmp = mymin(array[3], array[5]);
2914     array[5] = mymax(array[3], array[5]);
2915     array[3] = tmp;
2916     tmp = mymin(array[6], array[8]);
2917     array[8] = mymax(array[6], array[8]);
2918     array[6] = tmp;
2919     tmp = mymin(array[7], array[9]);
2920     array[9] = mymax(array[7], array[9]);
2921     array[7] = tmp;
2922     tmp = mymin(array[10], array[12]);
2923     array[12] = mymax(array[10], array[12]);
2924     array[10] = tmp;
2925     tmp = mymin(array[11], array[13]);
2926     array[13] = mymax(array[11], array[13]);
2927     array[11] = tmp;
2928     tmp = mymin(array[14], array[16]);
2929     array[16] = mymax(array[14], array[16]);
2930     array[14] = tmp;
2931     tmp = mymin(array[15], array[17]);
2932     array[17] = mymax(array[15], array[17]);
2933     array[15] = tmp;
2934     tmp = mymin(array[18], array[20]);
2935     array[20] = mymax(array[18], array[20]);
2936     array[18] = tmp;
2937     tmp = mymin(array[19], array[21]);
2938     array[21] = mymax(array[19], array[21]);
2939     array[19] = tmp;
2940     tmp = mymin(array[22], array[24]);
2941     array[24] = mymax(array[22], array[24]);
2942     array[22] = tmp;
2943     tmp = mymin(array[23], array[25]);
2944     array[25] = mymax(array[23], array[25]);
2945     array[23] = tmp;
2946     tmp = mymin(array[26], array[28]);
2947     array[28] = mymax(array[26], array[28]);
2948     array[26] = tmp;
2949     tmp = mymin(array[27], array[29]);
2950     array[29] = mymax(array[27], array[29]);
2951     array[27] = tmp;
2952     tmp = mymin(array[30], array[32]);
2953     array[32] = mymax(array[30], array[32]);
2954     array[30] = tmp;
2955     tmp = mymin(array[31], array[33]);
2956     array[33] = mymax(array[31], array[33]);
2957     array[31] = tmp;
2958     tmp = mymin(array[34], array[36]);
2959     array[36] = mymax(array[34], array[36]);
2960     array[34] = tmp;
2961     tmp = mymin(array[35], array[37]);
2962     array[37] = mymax(array[35], array[37]);
2963     array[35] = tmp;
2964     tmp = mymin(array[38], array[40]);
2965     array[40] = mymax(array[38], array[40]);
2966     array[38] = tmp;
2967     tmp = mymin(array[39], array[41]);
2968     array[41] = mymax(array[39], array[41]);
2969     array[39] = tmp;
2970     tmp = mymin(array[42], array[44]);
2971     array[44] = mymax(array[42], array[44]);
2972     array[42] = tmp;
2973     tmp = mymin(array[43], array[45]);
2974     array[45] = mymax(array[43], array[45]);
2975     array[43] = tmp;
2976     tmp = mymin(array[46], array[48]);
2977     array[48] = mymax(array[46], array[48]);
2978     array[46] = tmp;
2979     tmp = mymin(array[47], array[49]);
2980     array[49] = mymax(array[47], array[49]);
2981     array[47] = tmp;
2982     tmp = mymin(array[50], array[52]);
2983     array[52] = mymax(array[50], array[52]);
2984     array[50] = tmp;
2985     tmp = mymin(array[51], array[53]);
2986     array[53] = mymax(array[51], array[53]);
2987     array[51] = tmp;
2988     tmp = mymin(array[54], array[56]);
2989     array[56] = mymax(array[54], array[56]);
2990     array[54] = tmp;
2991     tmp = mymin(array[55], array[57]);
2992     array[57] = mymax(array[55], array[57]);
2993     array[55] = tmp;
2994     tmp = mymin(array[58], array[60]);
2995     array[60] = mymax(array[58], array[60]);
2996     array[58] = tmp;
2997     tmp = mymin(array[59], array[61]);
2998     array[61] = mymax(array[59], array[61]);
2999     array[59] = tmp;
3000     tmp = mymin(array[62], array[64]);
3001     array[64] = mymax(array[62], array[64]);
3002     array[62] = tmp;
3003     tmp = mymin(array[63], array[65]);
3004     array[65] = mymax(array[63], array[65]);
3005     array[63] = tmp;
3006     tmp = mymin(array[66], array[68]);
3007     array[68] = mymax(array[66], array[68]);
3008     array[66] = tmp;
3009     tmp = mymin(array[67], array[69]);
3010     array[69] = mymax(array[67], array[69]);
3011     array[67] = tmp;
3012     tmp = mymin(array[70], array[72]);
3013     array[72] = mymax(array[70], array[72]);
3014     array[70] = tmp;
3015     tmp = mymin(array[71], array[73]);
3016     array[73] = mymax(array[71], array[73]);
3017     array[71] = tmp;
3018     tmp = mymin(array[74], array[76]);
3019     array[76] = mymax(array[74], array[76]);
3020     array[74] = tmp;
3021     tmp = mymin(array[75], array[77]);
3022     array[77] = mymax(array[75], array[77]);
3023     array[75] = tmp;
3024     tmp = mymin(array[78], array[80]);
3025     array[80] = mymax(array[78], array[80]);
3026     array[78] = tmp;
3027     array[1] = mymax(array[0], array[1]);
3028     array[3] = mymax(array[2], array[3]);
3029     array[5] = mymax(array[4], array[5]);
3030     array[7] = mymax(array[6], array[7]);
3031     array[9] = mymax(array[8], array[9]);
3032     array[11] = mymax(array[10], array[11]);
3033     array[13] = mymax(array[12], array[13]);
3034     array[15] = mymax(array[14], array[15]);
3035     array[17] = mymax(array[16], array[17]);
3036     array[19] = mymax(array[18], array[19]);
3037     array[21] = mymax(array[20], array[21]);
3038     array[23] = mymax(array[22], array[23]);
3039     array[25] = mymax(array[24], array[25]);
3040     array[27] = mymax(array[26], array[27]);
3041     array[29] = mymax(array[28], array[29]);
3042     array[31] = mymax(array[30], array[31]);
3043     array[33] = mymax(array[32], array[33]);
3044     array[35] = mymax(array[34], array[35]);
3045     array[37] = mymax(array[36], array[37]);
3046     array[39] = mymax(array[38], array[39]);
3047     array[40] = mymin(array[40], array[41]);
3048     array[42] = mymin(array[42], array[43]);
3049     array[44] = mymin(array[44], array[45]);
3050     array[46] = mymin(array[46], array[47]);
3051     array[48] = mymin(array[48], array[49]);
3052     array[50] = mymin(array[50], array[51]);
3053     array[52] = mymin(array[52], array[53]);
3054     array[54] = mymin(array[54], array[55]);
3055     array[56] = mymin(array[56], array[57]);
3056     array[58] = mymin(array[58], array[59]);
3057     array[60] = mymin(array[60], array[61]);
3058     array[62] = mymin(array[62], array[63]);
3059     array[64] = mymin(array[64], array[65]);
3060     array[66] = mymin(array[66], array[67]);
3061     array[68] = mymin(array[68], array[69]);
3062     array[70] = mymin(array[70], array[71]);
3063     array[72] = mymin(array[72], array[73]);
3064     array[74] = mymin(array[74], array[75]);
3065     array[76] = mymin(array[76], array[77]);
3066     array[78] = mymin(array[78], array[79]);
3067     array[64] = mymax(array[1], array[64]);
3068     array[66] = mymax(array[3], array[66]);
3069     array[68] = mymax(array[5], array[68]);
3070     array[70] = mymax(array[7], array[70]);
3071     array[9] = mymin(array[9], array[72]);
3072     array[11] = mymin(array[11], array[74]);
3073     array[13] = mymin(array[13], array[76]);
3074     array[15] = mymin(array[15], array[78]);
3075     array[17] = mymin(array[17], array[80]);
3076     array[40] = mymax(array[9], array[40]);
3077     array[42] = mymax(array[11], array[42]);
3078     array[44] = mymax(array[13], array[44]);
3079     array[46] = mymax(array[15], array[46]);
3080     array[48] = mymax(array[17], array[48]);
3081     array[50] = mymax(array[19], array[50]);
3082     array[52] = mymax(array[21], array[52]);
3083     array[54] = mymax(array[23], array[54]);
3084     array[25] = mymin(array[25], array[56]);
3085     array[27] = mymin(array[27], array[58]);
3086     array[29] = mymin(array[29], array[60]);
3087     array[31] = mymin(array[31], array[62]);
3088     array[33] = mymin(array[33], array[64]);
3089     array[35] = mymin(array[35], array[66]);
3090     array[37] = mymin(array[37], array[68]);
3091     array[39] = mymin(array[39], array[70]);
3092     array[40] = mymax(array[25], array[40]);
3093     array[42] = mymax(array[27], array[42]);
3094     array[44] = mymax(array[29], array[44]);
3095     array[46] = mymax(array[31], array[46]);
3096     array[33] = mymin(array[33], array[48]);
3097     array[35] = mymin(array[35], array[50]);
3098     array[37] = mymin(array[37], array[52]);
3099     array[39] = mymin(array[39], array[54]);
3100     array[40] = mymax(array[33], array[40]);
3101     array[42] = mymax(array[35], array[42]);
3102     array[37] = mymin(array[37], array[44]);
3103     array[39] = mymin(array[39], array[46]);
3104     array[40] = mymax(array[37], array[40]);
3105     array[39] = mymin(array[39], array[42]);
3106     return mymax(array[39], array[40]);
3107 }
3108 
3109 #ifdef __SSE2__
3110 
median3x3sse(__m128 * array)3111 __m128 median3x3sse(__m128* array)
3112 {
3113     __m128 tmp = _mm_min_ps(array[1], array[2]);
3114     array[2] = _mm_max_ps(array[1], array[2]);
3115     array[1] = tmp;
3116     tmp = _mm_min_ps(array[4], array[5]);
3117     array[5] = _mm_max_ps(array[4], array[5]);
3118     array[4] = tmp;
3119     tmp = _mm_min_ps(array[7], array[8]);
3120     array[8] = _mm_max_ps(array[7], array[8]);
3121     array[7] = tmp;
3122     tmp = _mm_min_ps(array[0], array[1]);
3123     array[1] = _mm_max_ps(array[0], array[1]);
3124     array[0] = tmp;
3125     tmp = _mm_min_ps(array[3], array[4]);
3126     array[4] = _mm_max_ps(array[3], array[4]);
3127     array[3] = tmp;
3128     tmp = _mm_min_ps(array[6], array[7]);
3129     array[7] = _mm_max_ps(array[6], array[7]);
3130     array[6] = tmp;
3131     tmp = _mm_min_ps(array[1], array[2]);
3132     array[2] = _mm_max_ps(array[1], array[2]);
3133     array[1] = tmp;
3134     tmp = _mm_min_ps(array[4], array[5]);
3135     array[5] = _mm_max_ps(array[4], array[5]);
3136     array[4] = tmp;
3137     tmp = _mm_min_ps(array[7], array[8]);
3138     array[8] = _mm_max_ps(array[7], array[8]);
3139     array[3] = _mm_max_ps(array[0], array[3]);
3140     array[5] = _mm_min_ps(array[5], array[8]);
3141     array[7] = _mm_max_ps(array[4], tmp);
3142     tmp = _mm_min_ps(array[4], tmp);
3143     array[6] = _mm_max_ps(array[3], array[6]);
3144     array[4] = _mm_max_ps(array[1], tmp);
3145     array[2] = _mm_min_ps(array[2], array[5]);
3146     array[4] = _mm_min_ps(array[4], array[7]);
3147     tmp = _mm_min_ps(array[4], array[2]);
3148     array[2] = _mm_max_ps(array[4], array[2]);
3149     array[4] = _mm_max_ps(array[6], tmp);
3150     return _mm_min_ps(array[4], array[2]);
3151 }
3152 
median5x5sse(__m128 * array)3153 __m128 median5x5sse(__m128* array)
3154 {
3155     __m128 tmp = _mm_min_ps(array[0], array[1]);
3156     array[1] = _mm_max_ps(array[0], array[1]);
3157     array[0] = tmp;
3158     tmp = _mm_min_ps(array[3], array[4]);
3159     array[4] = _mm_max_ps(array[3], array[4]);
3160     array[3] = tmp;
3161     tmp = _mm_min_ps(array[2], array[4]);
3162     array[4] = _mm_max_ps(array[2], array[4]);
3163     array[2] = _mm_min_ps(tmp, array[3]);
3164     array[3] = _mm_max_ps(tmp, array[3]);
3165     tmp = _mm_min_ps(array[6], array[7]);
3166     array[7] = _mm_max_ps(array[6], array[7]);
3167     array[6] = tmp;
3168     tmp = _mm_min_ps(array[5], array[7]);
3169     array[7] = _mm_max_ps(array[5], array[7]);
3170     array[5] = _mm_min_ps(tmp, array[6]);
3171     array[6] = _mm_max_ps(tmp, array[6]);
3172     tmp = _mm_min_ps(array[9], array[10]);
3173     array[10] = _mm_max_ps(array[9], array[10]);
3174     array[9] = tmp;
3175     tmp = _mm_min_ps(array[8], array[10]);
3176     array[10] = _mm_max_ps(array[8], array[10]);
3177     array[8] = _mm_min_ps(tmp, array[9]);
3178     array[9] = _mm_max_ps(tmp, array[9]);
3179     tmp = _mm_min_ps(array[12], array[13]);
3180     array[13] = _mm_max_ps(array[12], array[13]);
3181     array[12] = tmp;
3182     tmp = _mm_min_ps(array[11], array[13]);
3183     array[13] = _mm_max_ps(array[11], array[13]);
3184     array[11] = _mm_min_ps(tmp, array[12]);
3185     array[12] = _mm_max_ps(tmp, array[12]);
3186     tmp = _mm_min_ps(array[15], array[16]);
3187     array[16] = _mm_max_ps(array[15], array[16]);
3188     array[15] = tmp;
3189     tmp = _mm_min_ps(array[14], array[16]);
3190     array[16] = _mm_max_ps(array[14], array[16]);
3191     array[14] = _mm_min_ps(tmp, array[15]);
3192     array[15] = _mm_max_ps(tmp, array[15]);
3193     tmp = _mm_min_ps(array[18], array[19]);
3194     array[19] = _mm_max_ps(array[18], array[19]);
3195     array[18] = tmp;
3196     tmp = _mm_min_ps(array[17], array[19]);
3197     array[19] = _mm_max_ps(array[17], array[19]);
3198     array[17] = _mm_min_ps(tmp, array[18]);
3199     array[18] = _mm_max_ps(tmp, array[18]);
3200     tmp = _mm_min_ps(array[21], array[22]);
3201     array[22] = _mm_max_ps(array[21], array[22]);
3202     array[21] = tmp;
3203     tmp = _mm_min_ps(array[20], array[22]);
3204     array[22] = _mm_max_ps(array[20], array[22]);
3205     array[20] = _mm_min_ps(tmp, array[21]);
3206     array[21] = _mm_max_ps(tmp, array[21]);
3207     tmp = _mm_min_ps(array[23], array[24]);
3208     array[24] = _mm_max_ps(array[23], array[24]);
3209     array[23] = tmp;
3210     tmp = _mm_min_ps(array[2], array[5]);
3211     array[5] = _mm_max_ps(array[2], array[5]);
3212     array[2] = tmp;
3213     tmp = _mm_min_ps(array[3], array[6]);
3214     array[6] = _mm_max_ps(array[3], array[6]);
3215     array[3] = tmp;
3216     tmp = _mm_min_ps(array[0], array[6]);
3217     array[6] = _mm_max_ps(array[0], array[6]);
3218     array[0] = _mm_min_ps(tmp, array[3]);
3219     array[3] = _mm_max_ps(tmp, array[3]);
3220     tmp = _mm_min_ps(array[4], array[7]);
3221     array[7] = _mm_max_ps(array[4], array[7]);
3222     array[4] = tmp;
3223     tmp = _mm_min_ps(array[1], array[7]);
3224     array[7] = _mm_max_ps(array[1], array[7]);
3225     array[1] = _mm_min_ps(tmp, array[4]);
3226     array[4] = _mm_max_ps(tmp, array[4]);
3227     tmp = _mm_min_ps(array[11], array[14]);
3228     array[14] = _mm_max_ps(array[11], array[14]);
3229     array[11] = tmp;
3230     tmp = _mm_min_ps(array[8], array[14]);
3231     array[14] = _mm_max_ps(array[8], array[14]);
3232     array[8] = _mm_min_ps(tmp, array[11]);
3233     array[11] = _mm_max_ps(tmp, array[11]);
3234     tmp = _mm_min_ps(array[12], array[15]);
3235     array[15] = _mm_max_ps(array[12], array[15]);
3236     array[12] = tmp;
3237     tmp = _mm_min_ps(array[9], array[15]);
3238     array[15] = _mm_max_ps(array[9], array[15]);
3239     array[9] = _mm_min_ps(tmp, array[12]);
3240     array[12] = _mm_max_ps(tmp, array[12]);
3241     tmp = _mm_min_ps(array[13], array[16]);
3242     array[16] = _mm_max_ps(array[13], array[16]);
3243     array[13] = tmp;
3244     tmp = _mm_min_ps(array[10], array[16]);
3245     array[16] = _mm_max_ps(array[10], array[16]);
3246     array[10] = _mm_min_ps(tmp, array[13]);
3247     array[13] = _mm_max_ps(tmp, array[13]);
3248     tmp = _mm_min_ps(array[20], array[23]);
3249     array[23] = _mm_max_ps(array[20], array[23]);
3250     array[20] = tmp;
3251     tmp = _mm_min_ps(array[17], array[23]);
3252     array[23] = _mm_max_ps(array[17], array[23]);
3253     array[17] = _mm_min_ps(tmp, array[20]);
3254     array[20] = _mm_max_ps(tmp, array[20]);
3255     tmp = _mm_min_ps(array[21], array[24]);
3256     array[24] = _mm_max_ps(array[21], array[24]);
3257     array[21] = tmp;
3258     tmp = _mm_min_ps(array[18], array[24]);
3259     array[24] = _mm_max_ps(array[18], array[24]);
3260     array[18] = _mm_min_ps(tmp, array[21]);
3261     array[21] = _mm_max_ps(tmp, array[21]);
3262     tmp = _mm_min_ps(array[19], array[22]);
3263     array[22] = _mm_max_ps(array[19], array[22]);
3264     array[19] = tmp;
3265     array[17] = _mm_max_ps(array[8], array[17]);
3266     tmp = _mm_min_ps(array[9], array[18]);
3267     array[18] = _mm_max_ps(array[9], array[18]);
3268     array[9] = tmp;
3269     tmp = _mm_min_ps(array[0], array[18]);
3270     array[18] = _mm_max_ps(array[0], array[18]);
3271     array[9] = _mm_max_ps(tmp, array[9]);
3272     tmp = _mm_min_ps(array[10], array[19]);
3273     array[19] = _mm_max_ps(array[10], array[19]);
3274     array[10] = tmp;
3275     tmp = _mm_min_ps(array[1], array[19]);
3276     array[19] = _mm_max_ps(array[1], array[19]);
3277     array[1] = _mm_min_ps(tmp, array[10]);
3278     array[10] = _mm_max_ps(tmp, array[10]);
3279     tmp = _mm_min_ps(array[11], array[20]);
3280     array[20] = _mm_max_ps(array[11], array[20]);
3281     array[11] = tmp;
3282     tmp = _mm_min_ps(array[2], array[20]);
3283     array[20] = _mm_max_ps(array[2], array[20]);
3284     array[11] = _mm_max_ps(tmp, array[11]);
3285     tmp = _mm_min_ps(array[12], array[21]);
3286     array[21] = _mm_max_ps(array[12], array[21]);
3287     array[12] = tmp;
3288     tmp = _mm_min_ps(array[3], array[21]);
3289     array[21] = _mm_max_ps(array[3], array[21]);
3290     array[3] = _mm_min_ps(tmp, array[12]);
3291     array[12] = _mm_max_ps(tmp, array[12]);
3292     tmp = _mm_min_ps(array[13], array[22]);
3293     array[22] = _mm_max_ps(array[13], array[22]);
3294     array[4] = _mm_min_ps(array[4], array[22]);
3295     array[13] = _mm_max_ps(array[4], tmp);
3296     tmp = _mm_min_ps(array[4], tmp);
3297     array[4] = tmp;
3298     tmp = _mm_min_ps(array[14], array[23]);
3299     array[23] = _mm_max_ps(array[14], array[23]);
3300     array[14] = tmp;
3301     tmp = _mm_min_ps(array[5], array[23]);
3302     array[23] = _mm_max_ps(array[5], array[23]);
3303     array[5] = _mm_min_ps(tmp, array[14]);
3304     array[14] = _mm_max_ps(tmp, array[14]);
3305     tmp = _mm_min_ps(array[15], array[24]);
3306     array[24] = _mm_max_ps(array[15], array[24]);
3307     array[15] = tmp;
3308     array[6] = _mm_min_ps(array[6], array[24]);
3309     tmp = _mm_min_ps(array[6], array[15]);
3310     array[15] = _mm_max_ps(array[6], array[15]);
3311     array[6] = tmp;
3312     tmp = _mm_min_ps(array[7], array[16]);
3313     array[7] = _mm_min_ps(tmp, array[19]);
3314     tmp = _mm_min_ps(array[13], array[21]);
3315     array[15] = _mm_min_ps(array[15], array[23]);
3316     tmp = _mm_min_ps(array[7], tmp);
3317     array[7] = _mm_min_ps(tmp, array[15]);
3318     array[9] = _mm_max_ps(array[1], array[9]);
3319     array[11] = _mm_max_ps(array[3], array[11]);
3320     array[17] = _mm_max_ps(array[5], array[17]);
3321     array[17] = _mm_max_ps(array[11], array[17]);
3322     array[17] = _mm_max_ps(array[9], array[17]);
3323     tmp = _mm_min_ps(array[4], array[10]);
3324     array[10] = _mm_max_ps(array[4], array[10]);
3325     array[4] = tmp;
3326     tmp = _mm_min_ps(array[6], array[12]);
3327     array[12] = _mm_max_ps(array[6], array[12]);
3328     array[6] = tmp;
3329     tmp = _mm_min_ps(array[7], array[14]);
3330     array[14] = _mm_max_ps(array[7], array[14]);
3331     array[7] = tmp;
3332     tmp = _mm_min_ps(array[4], array[6]);
3333     array[6] = _mm_max_ps(array[4], array[6]);
3334     array[7] = _mm_max_ps(tmp, array[7]);
3335     tmp = _mm_min_ps(array[12], array[14]);
3336     array[14] = _mm_max_ps(array[12], array[14]);
3337     array[12] = tmp;
3338     array[10] = _mm_min_ps(array[10], array[14]);
3339     tmp = _mm_min_ps(array[6], array[7]);
3340     array[7] = _mm_max_ps(array[6], array[7]);
3341     array[6] = tmp;
3342     tmp = _mm_min_ps(array[10], array[12]);
3343     array[12] = _mm_max_ps(array[10], array[12]);
3344     array[10] = _mm_max_ps(array[6], tmp);
3345     tmp = _mm_min_ps(array[6], tmp);
3346     array[17] = _mm_max_ps(tmp, array[17]);
3347     tmp = _mm_min_ps(array[12], array[17]);
3348     array[17] = _mm_max_ps(array[12], array[17]);
3349     array[12] = tmp;
3350     array[7] = _mm_min_ps(array[7], array[17]);
3351     tmp = _mm_min_ps(array[7], array[10]);
3352     array[10] = _mm_max_ps(array[7], array[10]);
3353     array[7] = tmp;
3354     tmp = _mm_min_ps(array[12], array[18]);
3355     array[18] = _mm_max_ps(array[12], array[18]);
3356     array[12] = _mm_max_ps(array[7], tmp);
3357     array[10] = _mm_min_ps(array[10], array[18]);
3358     tmp = _mm_min_ps(array[12], array[20]);
3359     array[20] = _mm_max_ps(array[12], array[20]);
3360     array[12] = tmp;
3361     tmp = _mm_min_ps(array[10], array[20]);
3362     return _mm_max_ps(tmp, array[12]);
3363 }
3364 
median7x7sse(__m128 * array)3365 __m128 median7x7sse(__m128* array)
3366 {
3367     __m128 tmp = _mm_min_ps(array[0], array[32]);
3368     array[32] = _mm_max_ps(array[0], array[32]);
3369     array[0] = tmp;
3370     tmp = _mm_min_ps(array[1], array[33]);
3371     array[33] = _mm_max_ps(array[1], array[33]);
3372     array[1] = tmp;
3373     tmp = _mm_min_ps(array[2], array[34]);
3374     array[34] = _mm_max_ps(array[2], array[34]);
3375     array[2] = tmp;
3376     tmp = _mm_min_ps(array[3], array[35]);
3377     array[35] = _mm_max_ps(array[3], array[35]);
3378     array[3] = tmp;
3379     tmp = _mm_min_ps(array[4], array[36]);
3380     array[36] = _mm_max_ps(array[4], array[36]);
3381     array[4] = tmp;
3382     tmp = _mm_min_ps(array[5], array[37]);
3383     array[37] = _mm_max_ps(array[5], array[37]);
3384     array[5] = tmp;
3385     tmp = _mm_min_ps(array[6], array[38]);
3386     array[38] = _mm_max_ps(array[6], array[38]);
3387     array[6] = tmp;
3388     tmp = _mm_min_ps(array[7], array[39]);
3389     array[39] = _mm_max_ps(array[7], array[39]);
3390     array[7] = tmp;
3391     tmp = _mm_min_ps(array[8], array[40]);
3392     array[40] = _mm_max_ps(array[8], array[40]);
3393     array[8] = tmp;
3394     tmp = _mm_min_ps(array[9], array[41]);
3395     array[41] = _mm_max_ps(array[9], array[41]);
3396     array[9] = tmp;
3397     tmp = _mm_min_ps(array[10], array[42]);
3398     array[42] = _mm_max_ps(array[10], array[42]);
3399     array[10] = tmp;
3400     tmp = _mm_min_ps(array[11], array[43]);
3401     array[43] = _mm_max_ps(array[11], array[43]);
3402     array[11] = tmp;
3403     tmp = _mm_min_ps(array[12], array[44]);
3404     array[44] = _mm_max_ps(array[12], array[44]);
3405     array[12] = tmp;
3406     tmp = _mm_min_ps(array[13], array[45]);
3407     array[45] = _mm_max_ps(array[13], array[45]);
3408     array[13] = tmp;
3409     tmp = _mm_min_ps(array[14], array[46]);
3410     array[46] = _mm_max_ps(array[14], array[46]);
3411     array[14] = tmp;
3412     tmp = _mm_min_ps(array[15], array[47]);
3413     array[47] = _mm_max_ps(array[15], array[47]);
3414     array[15] = tmp;
3415     tmp = _mm_min_ps(array[16], array[48]);
3416     array[48] = _mm_max_ps(array[16], array[48]);
3417     array[16] = tmp;
3418     tmp = _mm_min_ps(array[0], array[16]);
3419     array[16] = _mm_max_ps(array[0], array[16]);
3420     array[0] = tmp;
3421     tmp = _mm_min_ps(array[1], array[17]);
3422     array[17] = _mm_max_ps(array[1], array[17]);
3423     array[1] = tmp;
3424     tmp = _mm_min_ps(array[2], array[18]);
3425     array[18] = _mm_max_ps(array[2], array[18]);
3426     array[2] = tmp;
3427     tmp = _mm_min_ps(array[3], array[19]);
3428     array[19] = _mm_max_ps(array[3], array[19]);
3429     array[3] = tmp;
3430     tmp = _mm_min_ps(array[4], array[20]);
3431     array[20] = _mm_max_ps(array[4], array[20]);
3432     array[4] = tmp;
3433     tmp = _mm_min_ps(array[5], array[21]);
3434     array[21] = _mm_max_ps(array[5], array[21]);
3435     array[5] = tmp;
3436     tmp = _mm_min_ps(array[6], array[22]);
3437     array[22] = _mm_max_ps(array[6], array[22]);
3438     array[6] = tmp;
3439     tmp = _mm_min_ps(array[7], array[23]);
3440     array[23] = _mm_max_ps(array[7], array[23]);
3441     array[7] = tmp;
3442     tmp = _mm_min_ps(array[8], array[24]);
3443     array[24] = _mm_max_ps(array[8], array[24]);
3444     array[8] = tmp;
3445     tmp = _mm_min_ps(array[9], array[25]);
3446     array[25] = _mm_max_ps(array[9], array[25]);
3447     array[9] = tmp;
3448     tmp = _mm_min_ps(array[10], array[26]);
3449     array[26] = _mm_max_ps(array[10], array[26]);
3450     array[10] = tmp;
3451     tmp = _mm_min_ps(array[11], array[27]);
3452     array[27] = _mm_max_ps(array[11], array[27]);
3453     array[11] = tmp;
3454     tmp = _mm_min_ps(array[12], array[28]);
3455     array[28] = _mm_max_ps(array[12], array[28]);
3456     array[12] = tmp;
3457     tmp = _mm_min_ps(array[13], array[29]);
3458     array[29] = _mm_max_ps(array[13], array[29]);
3459     array[13] = tmp;
3460     tmp = _mm_min_ps(array[14], array[30]);
3461     array[30] = _mm_max_ps(array[14], array[30]);
3462     array[14] = tmp;
3463     tmp = _mm_min_ps(array[15], array[31]);
3464     array[31] = _mm_max_ps(array[15], array[31]);
3465     array[15] = tmp;
3466     tmp = _mm_min_ps(array[32], array[48]);
3467     array[48] = _mm_max_ps(array[32], array[48]);
3468     array[32] = tmp;
3469     tmp = _mm_min_ps(array[16], array[32]);
3470     array[32] = _mm_max_ps(array[16], array[32]);
3471     array[16] = tmp;
3472     tmp = _mm_min_ps(array[17], array[33]);
3473     array[33] = _mm_max_ps(array[17], array[33]);
3474     array[17] = tmp;
3475     tmp = _mm_min_ps(array[18], array[34]);
3476     array[34] = _mm_max_ps(array[18], array[34]);
3477     array[18] = tmp;
3478     tmp = _mm_min_ps(array[19], array[35]);
3479     array[35] = _mm_max_ps(array[19], array[35]);
3480     array[19] = tmp;
3481     tmp = _mm_min_ps(array[20], array[36]);
3482     array[36] = _mm_max_ps(array[20], array[36]);
3483     array[20] = tmp;
3484     tmp = _mm_min_ps(array[21], array[37]);
3485     array[37] = _mm_max_ps(array[21], array[37]);
3486     array[21] = tmp;
3487     tmp = _mm_min_ps(array[22], array[38]);
3488     array[38] = _mm_max_ps(array[22], array[38]);
3489     array[22] = tmp;
3490     tmp = _mm_min_ps(array[23], array[39]);
3491     array[39] = _mm_max_ps(array[23], array[39]);
3492     array[23] = tmp;
3493     tmp = _mm_min_ps(array[24], array[40]);
3494     array[40] = _mm_max_ps(array[24], array[40]);
3495     array[24] = tmp;
3496     tmp = _mm_min_ps(array[25], array[41]);
3497     array[41] = _mm_max_ps(array[25], array[41]);
3498     array[25] = tmp;
3499     tmp = _mm_min_ps(array[26], array[42]);
3500     array[42] = _mm_max_ps(array[26], array[42]);
3501     array[26] = tmp;
3502     tmp = _mm_min_ps(array[27], array[43]);
3503     array[43] = _mm_max_ps(array[27], array[43]);
3504     array[27] = tmp;
3505     tmp = _mm_min_ps(array[28], array[44]);
3506     array[44] = _mm_max_ps(array[28], array[44]);
3507     array[28] = tmp;
3508     tmp = _mm_min_ps(array[29], array[45]);
3509     array[45] = _mm_max_ps(array[29], array[45]);
3510     array[29] = tmp;
3511     tmp = _mm_min_ps(array[30], array[46]);
3512     array[46] = _mm_max_ps(array[30], array[46]);
3513     array[30] = tmp;
3514     tmp = _mm_min_ps(array[31], array[47]);
3515     array[47] = _mm_max_ps(array[31], array[47]);
3516     array[31] = tmp;
3517     tmp = _mm_min_ps(array[0], array[8]);
3518     array[8] = _mm_max_ps(array[0], array[8]);
3519     array[0] = tmp;
3520     tmp = _mm_min_ps(array[1], array[9]);
3521     array[9] = _mm_max_ps(array[1], array[9]);
3522     array[1] = tmp;
3523     tmp = _mm_min_ps(array[2], array[10]);
3524     array[10] = _mm_max_ps(array[2], array[10]);
3525     array[2] = tmp;
3526     tmp = _mm_min_ps(array[3], array[11]);
3527     array[11] = _mm_max_ps(array[3], array[11]);
3528     array[3] = tmp;
3529     tmp = _mm_min_ps(array[4], array[12]);
3530     array[12] = _mm_max_ps(array[4], array[12]);
3531     array[4] = tmp;
3532     tmp = _mm_min_ps(array[5], array[13]);
3533     array[13] = _mm_max_ps(array[5], array[13]);
3534     array[5] = tmp;
3535     tmp = _mm_min_ps(array[6], array[14]);
3536     array[14] = _mm_max_ps(array[6], array[14]);
3537     array[6] = tmp;
3538     tmp = _mm_min_ps(array[7], array[15]);
3539     array[15] = _mm_max_ps(array[7], array[15]);
3540     array[7] = tmp;
3541     tmp = _mm_min_ps(array[16], array[24]);
3542     array[24] = _mm_max_ps(array[16], array[24]);
3543     array[16] = tmp;
3544     tmp = _mm_min_ps(array[17], array[25]);
3545     array[25] = _mm_max_ps(array[17], array[25]);
3546     array[17] = tmp;
3547     tmp = _mm_min_ps(array[18], array[26]);
3548     array[26] = _mm_max_ps(array[18], array[26]);
3549     array[18] = tmp;
3550     tmp = _mm_min_ps(array[19], array[27]);
3551     array[27] = _mm_max_ps(array[19], array[27]);
3552     array[19] = tmp;
3553     tmp = _mm_min_ps(array[20], array[28]);
3554     array[28] = _mm_max_ps(array[20], array[28]);
3555     array[20] = tmp;
3556     tmp = _mm_min_ps(array[21], array[29]);
3557     array[29] = _mm_max_ps(array[21], array[29]);
3558     array[21] = tmp;
3559     tmp = _mm_min_ps(array[22], array[30]);
3560     array[30] = _mm_max_ps(array[22], array[30]);
3561     array[22] = tmp;
3562     tmp = _mm_min_ps(array[23], array[31]);
3563     array[31] = _mm_max_ps(array[23], array[31]);
3564     array[23] = tmp;
3565     tmp = _mm_min_ps(array[32], array[40]);
3566     array[40] = _mm_max_ps(array[32], array[40]);
3567     array[32] = tmp;
3568     tmp = _mm_min_ps(array[33], array[41]);
3569     array[41] = _mm_max_ps(array[33], array[41]);
3570     array[33] = tmp;
3571     tmp = _mm_min_ps(array[34], array[42]);
3572     array[42] = _mm_max_ps(array[34], array[42]);
3573     array[34] = tmp;
3574     tmp = _mm_min_ps(array[35], array[43]);
3575     array[43] = _mm_max_ps(array[35], array[43]);
3576     array[35] = tmp;
3577     tmp = _mm_min_ps(array[36], array[44]);
3578     array[44] = _mm_max_ps(array[36], array[44]);
3579     array[36] = tmp;
3580     tmp = _mm_min_ps(array[37], array[45]);
3581     array[45] = _mm_max_ps(array[37], array[45]);
3582     array[37] = tmp;
3583     tmp = _mm_min_ps(array[38], array[46]);
3584     array[46] = _mm_max_ps(array[38], array[46]);
3585     array[38] = tmp;
3586     tmp = _mm_min_ps(array[39], array[47]);
3587     array[47] = _mm_max_ps(array[39], array[47]);
3588     array[39] = tmp;
3589     tmp = _mm_min_ps(array[8], array[32]);
3590     array[32] = _mm_max_ps(array[8], array[32]);
3591     array[8] = tmp;
3592     tmp = _mm_min_ps(array[9], array[33]);
3593     array[33] = _mm_max_ps(array[9], array[33]);
3594     array[9] = tmp;
3595     tmp = _mm_min_ps(array[10], array[34]);
3596     array[34] = _mm_max_ps(array[10], array[34]);
3597     array[10] = tmp;
3598     tmp = _mm_min_ps(array[11], array[35]);
3599     array[35] = _mm_max_ps(array[11], array[35]);
3600     array[11] = tmp;
3601     tmp = _mm_min_ps(array[12], array[36]);
3602     array[36] = _mm_max_ps(array[12], array[36]);
3603     array[12] = tmp;
3604     tmp = _mm_min_ps(array[13], array[37]);
3605     array[37] = _mm_max_ps(array[13], array[37]);
3606     array[13] = tmp;
3607     tmp = _mm_min_ps(array[14], array[38]);
3608     array[38] = _mm_max_ps(array[14], array[38]);
3609     array[14] = tmp;
3610     tmp = _mm_min_ps(array[15], array[39]);
3611     array[39] = _mm_max_ps(array[15], array[39]);
3612     array[15] = tmp;
3613     tmp = _mm_min_ps(array[24], array[48]);
3614     array[48] = _mm_max_ps(array[24], array[48]);
3615     array[24] = tmp;
3616     tmp = _mm_min_ps(array[8], array[16]);
3617     array[16] = _mm_max_ps(array[8], array[16]);
3618     array[8] = tmp;
3619     tmp = _mm_min_ps(array[9], array[17]);
3620     array[17] = _mm_max_ps(array[9], array[17]);
3621     array[9] = tmp;
3622     tmp = _mm_min_ps(array[10], array[18]);
3623     array[18] = _mm_max_ps(array[10], array[18]);
3624     array[10] = tmp;
3625     tmp = _mm_min_ps(array[11], array[19]);
3626     array[19] = _mm_max_ps(array[11], array[19]);
3627     array[11] = tmp;
3628     tmp = _mm_min_ps(array[12], array[20]);
3629     array[20] = _mm_max_ps(array[12], array[20]);
3630     array[12] = tmp;
3631     tmp = _mm_min_ps(array[13], array[21]);
3632     array[21] = _mm_max_ps(array[13], array[21]);
3633     array[13] = tmp;
3634     tmp = _mm_min_ps(array[14], array[22]);
3635     array[22] = _mm_max_ps(array[14], array[22]);
3636     array[14] = tmp;
3637     tmp = _mm_min_ps(array[15], array[23]);
3638     array[23] = _mm_max_ps(array[15], array[23]);
3639     array[15] = tmp;
3640     tmp = _mm_min_ps(array[24], array[32]);
3641     array[32] = _mm_max_ps(array[24], array[32]);
3642     array[24] = tmp;
3643     tmp = _mm_min_ps(array[25], array[33]);
3644     array[33] = _mm_max_ps(array[25], array[33]);
3645     array[25] = tmp;
3646     tmp = _mm_min_ps(array[26], array[34]);
3647     array[34] = _mm_max_ps(array[26], array[34]);
3648     array[26] = tmp;
3649     tmp = _mm_min_ps(array[27], array[35]);
3650     array[35] = _mm_max_ps(array[27], array[35]);
3651     array[27] = tmp;
3652     tmp = _mm_min_ps(array[28], array[36]);
3653     array[36] = _mm_max_ps(array[28], array[36]);
3654     array[28] = tmp;
3655     tmp = _mm_min_ps(array[29], array[37]);
3656     array[37] = _mm_max_ps(array[29], array[37]);
3657     array[29] = tmp;
3658     tmp = _mm_min_ps(array[30], array[38]);
3659     array[38] = _mm_max_ps(array[30], array[38]);
3660     array[30] = tmp;
3661     tmp = _mm_min_ps(array[31], array[39]);
3662     array[39] = _mm_max_ps(array[31], array[39]);
3663     array[31] = tmp;
3664     tmp = _mm_min_ps(array[40], array[48]);
3665     array[48] = _mm_max_ps(array[40], array[48]);
3666     array[40] = tmp;
3667     tmp = _mm_min_ps(array[0], array[4]);
3668     array[4] = _mm_max_ps(array[0], array[4]);
3669     array[0] = tmp;
3670     tmp = _mm_min_ps(array[1], array[5]);
3671     array[5] = _mm_max_ps(array[1], array[5]);
3672     array[1] = tmp;
3673     tmp = _mm_min_ps(array[2], array[6]);
3674     array[6] = _mm_max_ps(array[2], array[6]);
3675     array[2] = tmp;
3676     tmp = _mm_min_ps(array[3], array[7]);
3677     array[7] = _mm_max_ps(array[3], array[7]);
3678     array[3] = tmp;
3679     tmp = _mm_min_ps(array[8], array[12]);
3680     array[12] = _mm_max_ps(array[8], array[12]);
3681     array[8] = tmp;
3682     tmp = _mm_min_ps(array[9], array[13]);
3683     array[13] = _mm_max_ps(array[9], array[13]);
3684     array[9] = tmp;
3685     tmp = _mm_min_ps(array[10], array[14]);
3686     array[14] = _mm_max_ps(array[10], array[14]);
3687     array[10] = tmp;
3688     tmp = _mm_min_ps(array[11], array[15]);
3689     array[15] = _mm_max_ps(array[11], array[15]);
3690     array[11] = tmp;
3691     tmp = _mm_min_ps(array[16], array[20]);
3692     array[20] = _mm_max_ps(array[16], array[20]);
3693     array[16] = tmp;
3694     tmp = _mm_min_ps(array[17], array[21]);
3695     array[21] = _mm_max_ps(array[17], array[21]);
3696     array[17] = tmp;
3697     tmp = _mm_min_ps(array[18], array[22]);
3698     array[22] = _mm_max_ps(array[18], array[22]);
3699     array[18] = tmp;
3700     tmp = _mm_min_ps(array[19], array[23]);
3701     array[23] = _mm_max_ps(array[19], array[23]);
3702     array[19] = tmp;
3703     tmp = _mm_min_ps(array[24], array[28]);
3704     array[28] = _mm_max_ps(array[24], array[28]);
3705     array[24] = tmp;
3706     tmp = _mm_min_ps(array[25], array[29]);
3707     array[29] = _mm_max_ps(array[25], array[29]);
3708     array[25] = tmp;
3709     tmp = _mm_min_ps(array[26], array[30]);
3710     array[30] = _mm_max_ps(array[26], array[30]);
3711     array[26] = tmp;
3712     tmp = _mm_min_ps(array[27], array[31]);
3713     array[31] = _mm_max_ps(array[27], array[31]);
3714     array[27] = tmp;
3715     tmp = _mm_min_ps(array[32], array[36]);
3716     array[36] = _mm_max_ps(array[32], array[36]);
3717     array[32] = tmp;
3718     tmp = _mm_min_ps(array[33], array[37]);
3719     array[37] = _mm_max_ps(array[33], array[37]);
3720     array[33] = tmp;
3721     tmp = _mm_min_ps(array[34], array[38]);
3722     array[38] = _mm_max_ps(array[34], array[38]);
3723     array[34] = tmp;
3724     tmp = _mm_min_ps(array[35], array[39]);
3725     array[39] = _mm_max_ps(array[35], array[39]);
3726     array[35] = tmp;
3727     tmp = _mm_min_ps(array[40], array[44]);
3728     array[44] = _mm_max_ps(array[40], array[44]);
3729     array[40] = tmp;
3730     tmp = _mm_min_ps(array[41], array[45]);
3731     array[45] = _mm_max_ps(array[41], array[45]);
3732     array[41] = tmp;
3733     tmp = _mm_min_ps(array[42], array[46]);
3734     array[46] = _mm_max_ps(array[42], array[46]);
3735     array[42] = tmp;
3736     tmp = _mm_min_ps(array[43], array[47]);
3737     array[47] = _mm_max_ps(array[43], array[47]);
3738     array[43] = tmp;
3739     tmp = _mm_min_ps(array[4], array[32]);
3740     array[32] = _mm_max_ps(array[4], array[32]);
3741     array[4] = tmp;
3742     tmp = _mm_min_ps(array[5], array[33]);
3743     array[33] = _mm_max_ps(array[5], array[33]);
3744     array[5] = tmp;
3745     tmp = _mm_min_ps(array[6], array[34]);
3746     array[34] = _mm_max_ps(array[6], array[34]);
3747     array[6] = tmp;
3748     tmp = _mm_min_ps(array[7], array[35]);
3749     array[35] = _mm_max_ps(array[7], array[35]);
3750     array[7] = tmp;
3751     tmp = _mm_min_ps(array[12], array[40]);
3752     array[40] = _mm_max_ps(array[12], array[40]);
3753     array[12] = tmp;
3754     tmp = _mm_min_ps(array[13], array[41]);
3755     array[41] = _mm_max_ps(array[13], array[41]);
3756     array[13] = tmp;
3757     tmp = _mm_min_ps(array[14], array[42]);
3758     array[42] = _mm_max_ps(array[14], array[42]);
3759     array[14] = tmp;
3760     tmp = _mm_min_ps(array[15], array[43]);
3761     array[43] = _mm_max_ps(array[15], array[43]);
3762     array[15] = tmp;
3763     tmp = _mm_min_ps(array[20], array[48]);
3764     array[48] = _mm_max_ps(array[20], array[48]);
3765     array[20] = tmp;
3766     tmp = _mm_min_ps(array[4], array[16]);
3767     array[16] = _mm_max_ps(array[4], array[16]);
3768     array[4] = tmp;
3769     tmp = _mm_min_ps(array[5], array[17]);
3770     array[17] = _mm_max_ps(array[5], array[17]);
3771     array[5] = tmp;
3772     tmp = _mm_min_ps(array[6], array[18]);
3773     array[18] = _mm_max_ps(array[6], array[18]);
3774     array[6] = tmp;
3775     tmp = _mm_min_ps(array[7], array[19]);
3776     array[19] = _mm_max_ps(array[7], array[19]);
3777     array[7] = tmp;
3778     tmp = _mm_min_ps(array[12], array[24]);
3779     array[24] = _mm_max_ps(array[12], array[24]);
3780     array[12] = tmp;
3781     tmp = _mm_min_ps(array[13], array[25]);
3782     array[25] = _mm_max_ps(array[13], array[25]);
3783     array[13] = tmp;
3784     tmp = _mm_min_ps(array[14], array[26]);
3785     array[26] = _mm_max_ps(array[14], array[26]);
3786     array[14] = tmp;
3787     tmp = _mm_min_ps(array[15], array[27]);
3788     array[27] = _mm_max_ps(array[15], array[27]);
3789     array[15] = tmp;
3790     tmp = _mm_min_ps(array[20], array[32]);
3791     array[32] = _mm_max_ps(array[20], array[32]);
3792     array[20] = tmp;
3793     tmp = _mm_min_ps(array[21], array[33]);
3794     array[33] = _mm_max_ps(array[21], array[33]);
3795     array[21] = tmp;
3796     tmp = _mm_min_ps(array[22], array[34]);
3797     array[34] = _mm_max_ps(array[22], array[34]);
3798     array[22] = tmp;
3799     tmp = _mm_min_ps(array[23], array[35]);
3800     array[35] = _mm_max_ps(array[23], array[35]);
3801     array[23] = tmp;
3802     tmp = _mm_min_ps(array[28], array[40]);
3803     array[40] = _mm_max_ps(array[28], array[40]);
3804     array[28] = tmp;
3805     tmp = _mm_min_ps(array[29], array[41]);
3806     array[41] = _mm_max_ps(array[29], array[41]);
3807     array[29] = tmp;
3808     tmp = _mm_min_ps(array[30], array[42]);
3809     array[42] = _mm_max_ps(array[30], array[42]);
3810     array[30] = tmp;
3811     tmp = _mm_min_ps(array[31], array[43]);
3812     array[43] = _mm_max_ps(array[31], array[43]);
3813     array[31] = tmp;
3814     tmp = _mm_min_ps(array[36], array[48]);
3815     array[48] = _mm_max_ps(array[36], array[48]);
3816     array[36] = tmp;
3817     tmp = _mm_min_ps(array[4], array[8]);
3818     array[8] = _mm_max_ps(array[4], array[8]);
3819     array[4] = tmp;
3820     tmp = _mm_min_ps(array[5], array[9]);
3821     array[9] = _mm_max_ps(array[5], array[9]);
3822     array[5] = tmp;
3823     tmp = _mm_min_ps(array[6], array[10]);
3824     array[10] = _mm_max_ps(array[6], array[10]);
3825     array[6] = tmp;
3826     tmp = _mm_min_ps(array[7], array[11]);
3827     array[11] = _mm_max_ps(array[7], array[11]);
3828     array[7] = tmp;
3829     tmp = _mm_min_ps(array[12], array[16]);
3830     array[16] = _mm_max_ps(array[12], array[16]);
3831     array[12] = tmp;
3832     tmp = _mm_min_ps(array[13], array[17]);
3833     array[17] = _mm_max_ps(array[13], array[17]);
3834     array[13] = tmp;
3835     tmp = _mm_min_ps(array[14], array[18]);
3836     array[18] = _mm_max_ps(array[14], array[18]);
3837     array[14] = tmp;
3838     tmp = _mm_min_ps(array[15], array[19]);
3839     array[19] = _mm_max_ps(array[15], array[19]);
3840     array[15] = tmp;
3841     tmp = _mm_min_ps(array[20], array[24]);
3842     array[24] = _mm_max_ps(array[20], array[24]);
3843     array[20] = tmp;
3844     tmp = _mm_min_ps(array[21], array[25]);
3845     array[25] = _mm_max_ps(array[21], array[25]);
3846     array[21] = tmp;
3847     tmp = _mm_min_ps(array[22], array[26]);
3848     array[26] = _mm_max_ps(array[22], array[26]);
3849     array[22] = tmp;
3850     tmp = _mm_min_ps(array[23], array[27]);
3851     array[27] = _mm_max_ps(array[23], array[27]);
3852     array[23] = tmp;
3853     tmp = _mm_min_ps(array[28], array[32]);
3854     array[32] = _mm_max_ps(array[28], array[32]);
3855     array[28] = tmp;
3856     tmp = _mm_min_ps(array[29], array[33]);
3857     array[33] = _mm_max_ps(array[29], array[33]);
3858     array[29] = tmp;
3859     tmp = _mm_min_ps(array[30], array[34]);
3860     array[34] = _mm_max_ps(array[30], array[34]);
3861     array[30] = tmp;
3862     tmp = _mm_min_ps(array[31], array[35]);
3863     array[35] = _mm_max_ps(array[31], array[35]);
3864     array[31] = tmp;
3865     tmp = _mm_min_ps(array[36], array[40]);
3866     array[40] = _mm_max_ps(array[36], array[40]);
3867     array[36] = tmp;
3868     tmp = _mm_min_ps(array[37], array[41]);
3869     array[41] = _mm_max_ps(array[37], array[41]);
3870     array[37] = tmp;
3871     tmp = _mm_min_ps(array[38], array[42]);
3872     array[42] = _mm_max_ps(array[38], array[42]);
3873     array[38] = tmp;
3874     tmp = _mm_min_ps(array[39], array[43]);
3875     array[43] = _mm_max_ps(array[39], array[43]);
3876     array[39] = tmp;
3877     tmp = _mm_min_ps(array[44], array[48]);
3878     array[48] = _mm_max_ps(array[44], array[48]);
3879     array[44] = tmp;
3880     tmp = _mm_min_ps(array[0], array[2]);
3881     array[2] = _mm_max_ps(array[0], array[2]);
3882     array[0] = tmp;
3883     tmp = _mm_min_ps(array[1], array[3]);
3884     array[3] = _mm_max_ps(array[1], array[3]);
3885     array[1] = tmp;
3886     tmp = _mm_min_ps(array[4], array[6]);
3887     array[6] = _mm_max_ps(array[4], array[6]);
3888     array[4] = tmp;
3889     tmp = _mm_min_ps(array[5], array[7]);
3890     array[7] = _mm_max_ps(array[5], array[7]);
3891     array[5] = tmp;
3892     tmp = _mm_min_ps(array[8], array[10]);
3893     array[10] = _mm_max_ps(array[8], array[10]);
3894     array[8] = tmp;
3895     tmp = _mm_min_ps(array[9], array[11]);
3896     array[11] = _mm_max_ps(array[9], array[11]);
3897     array[9] = tmp;
3898     tmp = _mm_min_ps(array[12], array[14]);
3899     array[14] = _mm_max_ps(array[12], array[14]);
3900     array[12] = tmp;
3901     tmp = _mm_min_ps(array[13], array[15]);
3902     array[15] = _mm_max_ps(array[13], array[15]);
3903     array[13] = tmp;
3904     tmp = _mm_min_ps(array[16], array[18]);
3905     array[18] = _mm_max_ps(array[16], array[18]);
3906     array[16] = tmp;
3907     tmp = _mm_min_ps(array[17], array[19]);
3908     array[19] = _mm_max_ps(array[17], array[19]);
3909     array[17] = tmp;
3910     tmp = _mm_min_ps(array[20], array[22]);
3911     array[22] = _mm_max_ps(array[20], array[22]);
3912     array[20] = tmp;
3913     tmp = _mm_min_ps(array[21], array[23]);
3914     array[23] = _mm_max_ps(array[21], array[23]);
3915     array[21] = tmp;
3916     tmp = _mm_min_ps(array[24], array[26]);
3917     array[26] = _mm_max_ps(array[24], array[26]);
3918     array[24] = tmp;
3919     tmp = _mm_min_ps(array[25], array[27]);
3920     array[27] = _mm_max_ps(array[25], array[27]);
3921     array[25] = tmp;
3922     tmp = _mm_min_ps(array[28], array[30]);
3923     array[30] = _mm_max_ps(array[28], array[30]);
3924     array[28] = tmp;
3925     tmp = _mm_min_ps(array[29], array[31]);
3926     array[31] = _mm_max_ps(array[29], array[31]);
3927     array[29] = tmp;
3928     tmp = _mm_min_ps(array[32], array[34]);
3929     array[34] = _mm_max_ps(array[32], array[34]);
3930     array[32] = tmp;
3931     tmp = _mm_min_ps(array[33], array[35]);
3932     array[35] = _mm_max_ps(array[33], array[35]);
3933     array[33] = tmp;
3934     tmp = _mm_min_ps(array[36], array[38]);
3935     array[38] = _mm_max_ps(array[36], array[38]);
3936     array[36] = tmp;
3937     tmp = _mm_min_ps(array[37], array[39]);
3938     array[39] = _mm_max_ps(array[37], array[39]);
3939     array[37] = tmp;
3940     tmp = _mm_min_ps(array[40], array[42]);
3941     array[42] = _mm_max_ps(array[40], array[42]);
3942     array[40] = tmp;
3943     tmp = _mm_min_ps(array[41], array[43]);
3944     array[43] = _mm_max_ps(array[41], array[43]);
3945     array[41] = tmp;
3946     tmp = _mm_min_ps(array[44], array[46]);
3947     array[46] = _mm_max_ps(array[44], array[46]);
3948     array[44] = tmp;
3949     tmp = _mm_min_ps(array[45], array[47]);
3950     array[47] = _mm_max_ps(array[45], array[47]);
3951     array[45] = tmp;
3952     tmp = _mm_min_ps(array[2], array[32]);
3953     array[32] = _mm_max_ps(array[2], array[32]);
3954     array[2] = tmp;
3955     tmp = _mm_min_ps(array[3], array[33]);
3956     array[33] = _mm_max_ps(array[3], array[33]);
3957     array[3] = tmp;
3958     tmp = _mm_min_ps(array[6], array[36]);
3959     array[36] = _mm_max_ps(array[6], array[36]);
3960     array[6] = tmp;
3961     tmp = _mm_min_ps(array[7], array[37]);
3962     array[37] = _mm_max_ps(array[7], array[37]);
3963     array[7] = tmp;
3964     tmp = _mm_min_ps(array[10], array[40]);
3965     array[40] = _mm_max_ps(array[10], array[40]);
3966     array[10] = tmp;
3967     tmp = _mm_min_ps(array[11], array[41]);
3968     array[41] = _mm_max_ps(array[11], array[41]);
3969     array[11] = tmp;
3970     tmp = _mm_min_ps(array[14], array[44]);
3971     array[44] = _mm_max_ps(array[14], array[44]);
3972     array[14] = tmp;
3973     tmp = _mm_min_ps(array[15], array[45]);
3974     array[45] = _mm_max_ps(array[15], array[45]);
3975     array[15] = tmp;
3976     tmp = _mm_min_ps(array[18], array[48]);
3977     array[48] = _mm_max_ps(array[18], array[48]);
3978     array[18] = tmp;
3979     tmp = _mm_min_ps(array[2], array[16]);
3980     array[16] = _mm_max_ps(array[2], array[16]);
3981     array[2] = tmp;
3982     tmp = _mm_min_ps(array[3], array[17]);
3983     array[17] = _mm_max_ps(array[3], array[17]);
3984     array[3] = tmp;
3985     tmp = _mm_min_ps(array[6], array[20]);
3986     array[20] = _mm_max_ps(array[6], array[20]);
3987     array[6] = tmp;
3988     tmp = _mm_min_ps(array[7], array[21]);
3989     array[21] = _mm_max_ps(array[7], array[21]);
3990     array[7] = tmp;
3991     tmp = _mm_min_ps(array[10], array[24]);
3992     array[24] = _mm_max_ps(array[10], array[24]);
3993     array[10] = tmp;
3994     tmp = _mm_min_ps(array[11], array[25]);
3995     array[25] = _mm_max_ps(array[11], array[25]);
3996     array[11] = tmp;
3997     tmp = _mm_min_ps(array[14], array[28]);
3998     array[28] = _mm_max_ps(array[14], array[28]);
3999     array[14] = tmp;
4000     tmp = _mm_min_ps(array[15], array[29]);
4001     array[29] = _mm_max_ps(array[15], array[29]);
4002     array[15] = tmp;
4003     tmp = _mm_min_ps(array[18], array[32]);
4004     array[32] = _mm_max_ps(array[18], array[32]);
4005     array[18] = tmp;
4006     tmp = _mm_min_ps(array[19], array[33]);
4007     array[33] = _mm_max_ps(array[19], array[33]);
4008     array[19] = tmp;
4009     tmp = _mm_min_ps(array[22], array[36]);
4010     array[36] = _mm_max_ps(array[22], array[36]);
4011     array[22] = tmp;
4012     tmp = _mm_min_ps(array[23], array[37]);
4013     array[37] = _mm_max_ps(array[23], array[37]);
4014     array[23] = tmp;
4015     tmp = _mm_min_ps(array[26], array[40]);
4016     array[40] = _mm_max_ps(array[26], array[40]);
4017     array[26] = tmp;
4018     tmp = _mm_min_ps(array[27], array[41]);
4019     array[41] = _mm_max_ps(array[27], array[41]);
4020     array[27] = tmp;
4021     tmp = _mm_min_ps(array[30], array[44]);
4022     array[44] = _mm_max_ps(array[30], array[44]);
4023     array[30] = tmp;
4024     tmp = _mm_min_ps(array[31], array[45]);
4025     array[45] = _mm_max_ps(array[31], array[45]);
4026     array[31] = tmp;
4027     tmp = _mm_min_ps(array[34], array[48]);
4028     array[48] = _mm_max_ps(array[34], array[48]);
4029     array[34] = tmp;
4030     tmp = _mm_min_ps(array[2], array[8]);
4031     array[8] = _mm_max_ps(array[2], array[8]);
4032     array[2] = tmp;
4033     tmp = _mm_min_ps(array[3], array[9]);
4034     array[9] = _mm_max_ps(array[3], array[9]);
4035     array[3] = tmp;
4036     tmp = _mm_min_ps(array[6], array[12]);
4037     array[12] = _mm_max_ps(array[6], array[12]);
4038     array[6] = tmp;
4039     tmp = _mm_min_ps(array[7], array[13]);
4040     array[13] = _mm_max_ps(array[7], array[13]);
4041     array[7] = tmp;
4042     tmp = _mm_min_ps(array[10], array[16]);
4043     array[16] = _mm_max_ps(array[10], array[16]);
4044     array[10] = tmp;
4045     tmp = _mm_min_ps(array[11], array[17]);
4046     array[17] = _mm_max_ps(array[11], array[17]);
4047     array[11] = tmp;
4048     tmp = _mm_min_ps(array[14], array[20]);
4049     array[20] = _mm_max_ps(array[14], array[20]);
4050     array[14] = tmp;
4051     tmp = _mm_min_ps(array[15], array[21]);
4052     array[21] = _mm_max_ps(array[15], array[21]);
4053     array[15] = tmp;
4054     tmp = _mm_min_ps(array[18], array[24]);
4055     array[24] = _mm_max_ps(array[18], array[24]);
4056     array[18] = tmp;
4057     tmp = _mm_min_ps(array[19], array[25]);
4058     array[25] = _mm_max_ps(array[19], array[25]);
4059     array[19] = tmp;
4060     tmp = _mm_min_ps(array[22], array[28]);
4061     array[28] = _mm_max_ps(array[22], array[28]);
4062     array[22] = tmp;
4063     tmp = _mm_min_ps(array[23], array[29]);
4064     array[29] = _mm_max_ps(array[23], array[29]);
4065     array[23] = tmp;
4066     tmp = _mm_min_ps(array[26], array[32]);
4067     array[32] = _mm_max_ps(array[26], array[32]);
4068     array[26] = tmp;
4069     tmp = _mm_min_ps(array[27], array[33]);
4070     array[33] = _mm_max_ps(array[27], array[33]);
4071     array[27] = tmp;
4072     tmp = _mm_min_ps(array[30], array[36]);
4073     array[36] = _mm_max_ps(array[30], array[36]);
4074     array[30] = tmp;
4075     tmp = _mm_min_ps(array[31], array[37]);
4076     array[37] = _mm_max_ps(array[31], array[37]);
4077     array[31] = tmp;
4078     tmp = _mm_min_ps(array[34], array[40]);
4079     array[40] = _mm_max_ps(array[34], array[40]);
4080     array[34] = tmp;
4081     tmp = _mm_min_ps(array[35], array[41]);
4082     array[41] = _mm_max_ps(array[35], array[41]);
4083     array[35] = tmp;
4084     tmp = _mm_min_ps(array[38], array[44]);
4085     array[44] = _mm_max_ps(array[38], array[44]);
4086     array[38] = tmp;
4087     tmp = _mm_min_ps(array[39], array[45]);
4088     array[45] = _mm_max_ps(array[39], array[45]);
4089     array[39] = tmp;
4090     tmp = _mm_min_ps(array[42], array[48]);
4091     array[48] = _mm_max_ps(array[42], array[48]);
4092     array[42] = tmp;
4093     tmp = _mm_min_ps(array[2], array[4]);
4094     array[4] = _mm_max_ps(array[2], array[4]);
4095     array[2] = tmp;
4096     tmp = _mm_min_ps(array[3], array[5]);
4097     array[5] = _mm_max_ps(array[3], array[5]);
4098     array[3] = tmp;
4099     tmp = _mm_min_ps(array[6], array[8]);
4100     array[8] = _mm_max_ps(array[6], array[8]);
4101     array[6] = tmp;
4102     tmp = _mm_min_ps(array[7], array[9]);
4103     array[9] = _mm_max_ps(array[7], array[9]);
4104     array[7] = tmp;
4105     tmp = _mm_min_ps(array[10], array[12]);
4106     array[12] = _mm_max_ps(array[10], array[12]);
4107     array[10] = tmp;
4108     tmp = _mm_min_ps(array[11], array[13]);
4109     array[13] = _mm_max_ps(array[11], array[13]);
4110     array[11] = tmp;
4111     tmp = _mm_min_ps(array[14], array[16]);
4112     array[16] = _mm_max_ps(array[14], array[16]);
4113     array[14] = tmp;
4114     tmp = _mm_min_ps(array[15], array[17]);
4115     array[17] = _mm_max_ps(array[15], array[17]);
4116     array[15] = tmp;
4117     tmp = _mm_min_ps(array[18], array[20]);
4118     array[20] = _mm_max_ps(array[18], array[20]);
4119     array[18] = tmp;
4120     tmp = _mm_min_ps(array[19], array[21]);
4121     array[21] = _mm_max_ps(array[19], array[21]);
4122     array[19] = tmp;
4123     tmp = _mm_min_ps(array[22], array[24]);
4124     array[24] = _mm_max_ps(array[22], array[24]);
4125     array[22] = tmp;
4126     tmp = _mm_min_ps(array[23], array[25]);
4127     array[25] = _mm_max_ps(array[23], array[25]);
4128     array[23] = tmp;
4129     tmp = _mm_min_ps(array[26], array[28]);
4130     array[28] = _mm_max_ps(array[26], array[28]);
4131     array[26] = tmp;
4132     tmp = _mm_min_ps(array[27], array[29]);
4133     array[29] = _mm_max_ps(array[27], array[29]);
4134     array[27] = tmp;
4135     tmp = _mm_min_ps(array[30], array[32]);
4136     array[32] = _mm_max_ps(array[30], array[32]);
4137     array[30] = tmp;
4138     tmp = _mm_min_ps(array[31], array[33]);
4139     array[33] = _mm_max_ps(array[31], array[33]);
4140     array[31] = tmp;
4141     tmp = _mm_min_ps(array[34], array[36]);
4142     array[36] = _mm_max_ps(array[34], array[36]);
4143     array[34] = tmp;
4144     tmp = _mm_min_ps(array[35], array[37]);
4145     array[37] = _mm_max_ps(array[35], array[37]);
4146     array[35] = tmp;
4147     tmp = _mm_min_ps(array[38], array[40]);
4148     array[40] = _mm_max_ps(array[38], array[40]);
4149     array[38] = tmp;
4150     tmp = _mm_min_ps(array[39], array[41]);
4151     array[41] = _mm_max_ps(array[39], array[41]);
4152     array[39] = tmp;
4153     tmp = _mm_min_ps(array[42], array[44]);
4154     array[44] = _mm_max_ps(array[42], array[44]);
4155     array[42] = tmp;
4156     tmp = _mm_min_ps(array[43], array[45]);
4157     array[45] = _mm_max_ps(array[43], array[45]);
4158     array[43] = tmp;
4159     tmp = _mm_min_ps(array[46], array[48]);
4160     array[48] = _mm_max_ps(array[46], array[48]);
4161     array[46] = tmp;
4162     array[1] = _mm_max_ps(array[0], array[1]);
4163     array[3] = _mm_max_ps(array[2], array[3]);
4164     array[5] = _mm_max_ps(array[4], array[5]);
4165     array[7] = _mm_max_ps(array[6], array[7]);
4166     array[9] = _mm_max_ps(array[8], array[9]);
4167     array[11] = _mm_max_ps(array[10], array[11]);
4168     array[13] = _mm_max_ps(array[12], array[13]);
4169     array[15] = _mm_max_ps(array[14], array[15]);
4170     array[17] = _mm_max_ps(array[16], array[17]);
4171     array[19] = _mm_max_ps(array[18], array[19]);
4172     array[21] = _mm_max_ps(array[20], array[21]);
4173     array[23] = _mm_max_ps(array[22], array[23]);
4174     array[24] = _mm_min_ps(array[24], array[25]);
4175     array[26] = _mm_min_ps(array[26], array[27]);
4176     array[28] = _mm_min_ps(array[28], array[29]);
4177     array[30] = _mm_min_ps(array[30], array[31]);
4178     array[32] = _mm_min_ps(array[32], array[33]);
4179     array[34] = _mm_min_ps(array[34], array[35]);
4180     array[36] = _mm_min_ps(array[36], array[37]);
4181     array[38] = _mm_min_ps(array[38], array[39]);
4182     array[40] = _mm_min_ps(array[40], array[41]);
4183     array[42] = _mm_min_ps(array[42], array[43]);
4184     array[44] = _mm_min_ps(array[44], array[45]);
4185     array[46] = _mm_min_ps(array[46], array[47]);
4186     array[32] = _mm_max_ps(array[1], array[32]);
4187     array[34] = _mm_max_ps(array[3], array[34]);
4188     array[36] = _mm_max_ps(array[5], array[36]);
4189     array[38] = _mm_max_ps(array[7], array[38]);
4190     array[9] = _mm_min_ps(array[9], array[40]);
4191     array[11] = _mm_min_ps(array[11], array[42]);
4192     array[13] = _mm_min_ps(array[13], array[44]);
4193     array[15] = _mm_min_ps(array[15], array[46]);
4194     array[17] = _mm_min_ps(array[17], array[48]);
4195     array[24] = _mm_max_ps(array[9], array[24]);
4196     array[26] = _mm_max_ps(array[11], array[26]);
4197     array[28] = _mm_max_ps(array[13], array[28]);
4198     array[30] = _mm_max_ps(array[15], array[30]);
4199     array[17] = _mm_min_ps(array[17], array[32]);
4200     array[19] = _mm_min_ps(array[19], array[34]);
4201     array[21] = _mm_min_ps(array[21], array[36]);
4202     array[23] = _mm_min_ps(array[23], array[38]);
4203     array[24] = _mm_max_ps(array[17], array[24]);
4204     array[26] = _mm_max_ps(array[19], array[26]);
4205     array[21] = _mm_min_ps(array[21], array[28]);
4206     array[23] = _mm_min_ps(array[23], array[30]);
4207     array[24] = _mm_max_ps(array[21], array[24]);
4208     array[23] = _mm_min_ps(array[23], array[26]);
4209     return _mm_max_ps(array[23], array[24]);
4210 }
4211 
median9x9sse(__m128 * array)4212 __m128 median9x9sse(__m128* array)
4213 {
4214     __m128 tmp = _mm_min_ps(array[0], array[64]);
4215     array[64] = _mm_max_ps(array[0], array[64]);
4216     array[0] = tmp;
4217     tmp = _mm_min_ps(array[1], array[65]);
4218     array[65] = _mm_max_ps(array[1], array[65]);
4219     array[1] = tmp;
4220     tmp = _mm_min_ps(array[2], array[66]);
4221     array[66] = _mm_max_ps(array[2], array[66]);
4222     array[2] = tmp;
4223     tmp = _mm_min_ps(array[3], array[67]);
4224     array[67] = _mm_max_ps(array[3], array[67]);
4225     array[3] = tmp;
4226     tmp = _mm_min_ps(array[4], array[68]);
4227     array[68] = _mm_max_ps(array[4], array[68]);
4228     array[4] = tmp;
4229     tmp = _mm_min_ps(array[5], array[69]);
4230     array[69] = _mm_max_ps(array[5], array[69]);
4231     array[5] = tmp;
4232     tmp = _mm_min_ps(array[6], array[70]);
4233     array[70] = _mm_max_ps(array[6], array[70]);
4234     array[6] = tmp;
4235     tmp = _mm_min_ps(array[7], array[71]);
4236     array[71] = _mm_max_ps(array[7], array[71]);
4237     array[7] = tmp;
4238     tmp = _mm_min_ps(array[8], array[72]);
4239     array[72] = _mm_max_ps(array[8], array[72]);
4240     array[8] = tmp;
4241     tmp = _mm_min_ps(array[9], array[73]);
4242     array[73] = _mm_max_ps(array[9], array[73]);
4243     array[9] = tmp;
4244     tmp = _mm_min_ps(array[10], array[74]);
4245     array[74] = _mm_max_ps(array[10], array[74]);
4246     array[10] = tmp;
4247     tmp = _mm_min_ps(array[11], array[75]);
4248     array[75] = _mm_max_ps(array[11], array[75]);
4249     array[11] = tmp;
4250     tmp = _mm_min_ps(array[12], array[76]);
4251     array[76] = _mm_max_ps(array[12], array[76]);
4252     array[12] = tmp;
4253     tmp = _mm_min_ps(array[13], array[77]);
4254     array[77] = _mm_max_ps(array[13], array[77]);
4255     array[13] = tmp;
4256     tmp = _mm_min_ps(array[14], array[78]);
4257     array[78] = _mm_max_ps(array[14], array[78]);
4258     array[14] = tmp;
4259     tmp = _mm_min_ps(array[15], array[79]);
4260     array[79] = _mm_max_ps(array[15], array[79]);
4261     array[15] = tmp;
4262     tmp = _mm_min_ps(array[16], array[80]);
4263     array[80] = _mm_max_ps(array[16], array[80]);
4264     array[16] = tmp;
4265     tmp = _mm_min_ps(array[0], array[32]);
4266     array[32] = _mm_max_ps(array[0], array[32]);
4267     array[0] = tmp;
4268     tmp = _mm_min_ps(array[1], array[33]);
4269     array[33] = _mm_max_ps(array[1], array[33]);
4270     array[1] = tmp;
4271     tmp = _mm_min_ps(array[2], array[34]);
4272     array[34] = _mm_max_ps(array[2], array[34]);
4273     array[2] = tmp;
4274     tmp = _mm_min_ps(array[3], array[35]);
4275     array[35] = _mm_max_ps(array[3], array[35]);
4276     array[3] = tmp;
4277     tmp = _mm_min_ps(array[4], array[36]);
4278     array[36] = _mm_max_ps(array[4], array[36]);
4279     array[4] = tmp;
4280     tmp = _mm_min_ps(array[5], array[37]);
4281     array[37] = _mm_max_ps(array[5], array[37]);
4282     array[5] = tmp;
4283     tmp = _mm_min_ps(array[6], array[38]);
4284     array[38] = _mm_max_ps(array[6], array[38]);
4285     array[6] = tmp;
4286     tmp = _mm_min_ps(array[7], array[39]);
4287     array[39] = _mm_max_ps(array[7], array[39]);
4288     array[7] = tmp;
4289     tmp = _mm_min_ps(array[8], array[40]);
4290     array[40] = _mm_max_ps(array[8], array[40]);
4291     array[8] = tmp;
4292     tmp = _mm_min_ps(array[9], array[41]);
4293     array[41] = _mm_max_ps(array[9], array[41]);
4294     array[9] = tmp;
4295     tmp = _mm_min_ps(array[10], array[42]);
4296     array[42] = _mm_max_ps(array[10], array[42]);
4297     array[10] = tmp;
4298     tmp = _mm_min_ps(array[11], array[43]);
4299     array[43] = _mm_max_ps(array[11], array[43]);
4300     array[11] = tmp;
4301     tmp = _mm_min_ps(array[12], array[44]);
4302     array[44] = _mm_max_ps(array[12], array[44]);
4303     array[12] = tmp;
4304     tmp = _mm_min_ps(array[13], array[45]);
4305     array[45] = _mm_max_ps(array[13], array[45]);
4306     array[13] = tmp;
4307     tmp = _mm_min_ps(array[14], array[46]);
4308     array[46] = _mm_max_ps(array[14], array[46]);
4309     array[14] = tmp;
4310     tmp = _mm_min_ps(array[15], array[47]);
4311     array[47] = _mm_max_ps(array[15], array[47]);
4312     array[15] = tmp;
4313     tmp = _mm_min_ps(array[16], array[48]);
4314     array[48] = _mm_max_ps(array[16], array[48]);
4315     array[16] = tmp;
4316     tmp = _mm_min_ps(array[17], array[49]);
4317     array[49] = _mm_max_ps(array[17], array[49]);
4318     array[17] = tmp;
4319     tmp = _mm_min_ps(array[18], array[50]);
4320     array[50] = _mm_max_ps(array[18], array[50]);
4321     array[18] = tmp;
4322     tmp = _mm_min_ps(array[19], array[51]);
4323     array[51] = _mm_max_ps(array[19], array[51]);
4324     array[19] = tmp;
4325     tmp = _mm_min_ps(array[20], array[52]);
4326     array[52] = _mm_max_ps(array[20], array[52]);
4327     array[20] = tmp;
4328     tmp = _mm_min_ps(array[21], array[53]);
4329     array[53] = _mm_max_ps(array[21], array[53]);
4330     array[21] = tmp;
4331     tmp = _mm_min_ps(array[22], array[54]);
4332     array[54] = _mm_max_ps(array[22], array[54]);
4333     array[22] = tmp;
4334     tmp = _mm_min_ps(array[23], array[55]);
4335     array[55] = _mm_max_ps(array[23], array[55]);
4336     array[23] = tmp;
4337     tmp = _mm_min_ps(array[24], array[56]);
4338     array[56] = _mm_max_ps(array[24], array[56]);
4339     array[24] = tmp;
4340     tmp = _mm_min_ps(array[25], array[57]);
4341     array[57] = _mm_max_ps(array[25], array[57]);
4342     array[25] = tmp;
4343     tmp = _mm_min_ps(array[26], array[58]);
4344     array[58] = _mm_max_ps(array[26], array[58]);
4345     array[26] = tmp;
4346     tmp = _mm_min_ps(array[27], array[59]);
4347     array[59] = _mm_max_ps(array[27], array[59]);
4348     array[27] = tmp;
4349     tmp = _mm_min_ps(array[28], array[60]);
4350     array[60] = _mm_max_ps(array[28], array[60]);
4351     array[28] = tmp;
4352     tmp = _mm_min_ps(array[29], array[61]);
4353     array[61] = _mm_max_ps(array[29], array[61]);
4354     array[29] = tmp;
4355     tmp = _mm_min_ps(array[30], array[62]);
4356     array[62] = _mm_max_ps(array[30], array[62]);
4357     array[30] = tmp;
4358     tmp = _mm_min_ps(array[31], array[63]);
4359     array[63] = _mm_max_ps(array[31], array[63]);
4360     array[31] = tmp;
4361     tmp = _mm_min_ps(array[32], array[64]);
4362     array[64] = _mm_max_ps(array[32], array[64]);
4363     array[32] = tmp;
4364     tmp = _mm_min_ps(array[33], array[65]);
4365     array[65] = _mm_max_ps(array[33], array[65]);
4366     array[33] = tmp;
4367     tmp = _mm_min_ps(array[34], array[66]);
4368     array[66] = _mm_max_ps(array[34], array[66]);
4369     array[34] = tmp;
4370     tmp = _mm_min_ps(array[35], array[67]);
4371     array[67] = _mm_max_ps(array[35], array[67]);
4372     array[35] = tmp;
4373     tmp = _mm_min_ps(array[36], array[68]);
4374     array[68] = _mm_max_ps(array[36], array[68]);
4375     array[36] = tmp;
4376     tmp = _mm_min_ps(array[37], array[69]);
4377     array[69] = _mm_max_ps(array[37], array[69]);
4378     array[37] = tmp;
4379     tmp = _mm_min_ps(array[38], array[70]);
4380     array[70] = _mm_max_ps(array[38], array[70]);
4381     array[38] = tmp;
4382     tmp = _mm_min_ps(array[39], array[71]);
4383     array[71] = _mm_max_ps(array[39], array[71]);
4384     array[39] = tmp;
4385     tmp = _mm_min_ps(array[40], array[72]);
4386     array[72] = _mm_max_ps(array[40], array[72]);
4387     array[40] = tmp;
4388     tmp = _mm_min_ps(array[41], array[73]);
4389     array[73] = _mm_max_ps(array[41], array[73]);
4390     array[41] = tmp;
4391     tmp = _mm_min_ps(array[42], array[74]);
4392     array[74] = _mm_max_ps(array[42], array[74]);
4393     array[42] = tmp;
4394     tmp = _mm_min_ps(array[43], array[75]);
4395     array[75] = _mm_max_ps(array[43], array[75]);
4396     array[43] = tmp;
4397     tmp = _mm_min_ps(array[44], array[76]);
4398     array[76] = _mm_max_ps(array[44], array[76]);
4399     array[44] = tmp;
4400     tmp = _mm_min_ps(array[45], array[77]);
4401     array[77] = _mm_max_ps(array[45], array[77]);
4402     array[45] = tmp;
4403     tmp = _mm_min_ps(array[46], array[78]);
4404     array[78] = _mm_max_ps(array[46], array[78]);
4405     array[46] = tmp;
4406     tmp = _mm_min_ps(array[47], array[79]);
4407     array[79] = _mm_max_ps(array[47], array[79]);
4408     array[47] = tmp;
4409     tmp = _mm_min_ps(array[48], array[80]);
4410     array[80] = _mm_max_ps(array[48], array[80]);
4411     array[48] = tmp;
4412     tmp = _mm_min_ps(array[0], array[16]);
4413     array[16] = _mm_max_ps(array[0], array[16]);
4414     array[0] = tmp;
4415     tmp = _mm_min_ps(array[1], array[17]);
4416     array[17] = _mm_max_ps(array[1], array[17]);
4417     array[1] = tmp;
4418     tmp = _mm_min_ps(array[2], array[18]);
4419     array[18] = _mm_max_ps(array[2], array[18]);
4420     array[2] = tmp;
4421     tmp = _mm_min_ps(array[3], array[19]);
4422     array[19] = _mm_max_ps(array[3], array[19]);
4423     array[3] = tmp;
4424     tmp = _mm_min_ps(array[4], array[20]);
4425     array[20] = _mm_max_ps(array[4], array[20]);
4426     array[4] = tmp;
4427     tmp = _mm_min_ps(array[5], array[21]);
4428     array[21] = _mm_max_ps(array[5], array[21]);
4429     array[5] = tmp;
4430     tmp = _mm_min_ps(array[6], array[22]);
4431     array[22] = _mm_max_ps(array[6], array[22]);
4432     array[6] = tmp;
4433     tmp = _mm_min_ps(array[7], array[23]);
4434     array[23] = _mm_max_ps(array[7], array[23]);
4435     array[7] = tmp;
4436     tmp = _mm_min_ps(array[8], array[24]);
4437     array[24] = _mm_max_ps(array[8], array[24]);
4438     array[8] = tmp;
4439     tmp = _mm_min_ps(array[9], array[25]);
4440     array[25] = _mm_max_ps(array[9], array[25]);
4441     array[9] = tmp;
4442     tmp = _mm_min_ps(array[10], array[26]);
4443     array[26] = _mm_max_ps(array[10], array[26]);
4444     array[10] = tmp;
4445     tmp = _mm_min_ps(array[11], array[27]);
4446     array[27] = _mm_max_ps(array[11], array[27]);
4447     array[11] = tmp;
4448     tmp = _mm_min_ps(array[12], array[28]);
4449     array[28] = _mm_max_ps(array[12], array[28]);
4450     array[12] = tmp;
4451     tmp = _mm_min_ps(array[13], array[29]);
4452     array[29] = _mm_max_ps(array[13], array[29]);
4453     array[13] = tmp;
4454     tmp = _mm_min_ps(array[14], array[30]);
4455     array[30] = _mm_max_ps(array[14], array[30]);
4456     array[14] = tmp;
4457     tmp = _mm_min_ps(array[15], array[31]);
4458     array[31] = _mm_max_ps(array[15], array[31]);
4459     array[15] = tmp;
4460     tmp = _mm_min_ps(array[32], array[48]);
4461     array[48] = _mm_max_ps(array[32], array[48]);
4462     array[32] = tmp;
4463     tmp = _mm_min_ps(array[33], array[49]);
4464     array[49] = _mm_max_ps(array[33], array[49]);
4465     array[33] = tmp;
4466     tmp = _mm_min_ps(array[34], array[50]);
4467     array[50] = _mm_max_ps(array[34], array[50]);
4468     array[34] = tmp;
4469     tmp = _mm_min_ps(array[35], array[51]);
4470     array[51] = _mm_max_ps(array[35], array[51]);
4471     array[35] = tmp;
4472     tmp = _mm_min_ps(array[36], array[52]);
4473     array[52] = _mm_max_ps(array[36], array[52]);
4474     array[36] = tmp;
4475     tmp = _mm_min_ps(array[37], array[53]);
4476     array[53] = _mm_max_ps(array[37], array[53]);
4477     array[37] = tmp;
4478     tmp = _mm_min_ps(array[38], array[54]);
4479     array[54] = _mm_max_ps(array[38], array[54]);
4480     array[38] = tmp;
4481     tmp = _mm_min_ps(array[39], array[55]);
4482     array[55] = _mm_max_ps(array[39], array[55]);
4483     array[39] = tmp;
4484     tmp = _mm_min_ps(array[40], array[56]);
4485     array[56] = _mm_max_ps(array[40], array[56]);
4486     array[40] = tmp;
4487     tmp = _mm_min_ps(array[41], array[57]);
4488     array[57] = _mm_max_ps(array[41], array[57]);
4489     array[41] = tmp;
4490     tmp = _mm_min_ps(array[42], array[58]);
4491     array[58] = _mm_max_ps(array[42], array[58]);
4492     array[42] = tmp;
4493     tmp = _mm_min_ps(array[43], array[59]);
4494     array[59] = _mm_max_ps(array[43], array[59]);
4495     array[43] = tmp;
4496     tmp = _mm_min_ps(array[44], array[60]);
4497     array[60] = _mm_max_ps(array[44], array[60]);
4498     array[44] = tmp;
4499     tmp = _mm_min_ps(array[45], array[61]);
4500     array[61] = _mm_max_ps(array[45], array[61]);
4501     array[45] = tmp;
4502     tmp = _mm_min_ps(array[46], array[62]);
4503     array[62] = _mm_max_ps(array[46], array[62]);
4504     array[46] = tmp;
4505     tmp = _mm_min_ps(array[47], array[63]);
4506     array[63] = _mm_max_ps(array[47], array[63]);
4507     array[47] = tmp;
4508     tmp = _mm_min_ps(array[64], array[80]);
4509     array[80] = _mm_max_ps(array[64], array[80]);
4510     array[64] = tmp;
4511     tmp = _mm_min_ps(array[16], array[64]);
4512     array[64] = _mm_max_ps(array[16], array[64]);
4513     array[16] = tmp;
4514     tmp = _mm_min_ps(array[17], array[65]);
4515     array[65] = _mm_max_ps(array[17], array[65]);
4516     array[17] = tmp;
4517     tmp = _mm_min_ps(array[18], array[66]);
4518     array[66] = _mm_max_ps(array[18], array[66]);
4519     array[18] = tmp;
4520     tmp = _mm_min_ps(array[19], array[67]);
4521     array[67] = _mm_max_ps(array[19], array[67]);
4522     array[19] = tmp;
4523     tmp = _mm_min_ps(array[20], array[68]);
4524     array[68] = _mm_max_ps(array[20], array[68]);
4525     array[20] = tmp;
4526     tmp = _mm_min_ps(array[21], array[69]);
4527     array[69] = _mm_max_ps(array[21], array[69]);
4528     array[21] = tmp;
4529     tmp = _mm_min_ps(array[22], array[70]);
4530     array[70] = _mm_max_ps(array[22], array[70]);
4531     array[22] = tmp;
4532     tmp = _mm_min_ps(array[23], array[71]);
4533     array[71] = _mm_max_ps(array[23], array[71]);
4534     array[23] = tmp;
4535     tmp = _mm_min_ps(array[24], array[72]);
4536     array[72] = _mm_max_ps(array[24], array[72]);
4537     array[24] = tmp;
4538     tmp = _mm_min_ps(array[25], array[73]);
4539     array[73] = _mm_max_ps(array[25], array[73]);
4540     array[25] = tmp;
4541     tmp = _mm_min_ps(array[26], array[74]);
4542     array[74] = _mm_max_ps(array[26], array[74]);
4543     array[26] = tmp;
4544     tmp = _mm_min_ps(array[27], array[75]);
4545     array[75] = _mm_max_ps(array[27], array[75]);
4546     array[27] = tmp;
4547     tmp = _mm_min_ps(array[28], array[76]);
4548     array[76] = _mm_max_ps(array[28], array[76]);
4549     array[28] = tmp;
4550     tmp = _mm_min_ps(array[29], array[77]);
4551     array[77] = _mm_max_ps(array[29], array[77]);
4552     array[29] = tmp;
4553     tmp = _mm_min_ps(array[30], array[78]);
4554     array[78] = _mm_max_ps(array[30], array[78]);
4555     array[30] = tmp;
4556     tmp = _mm_min_ps(array[31], array[79]);
4557     array[79] = _mm_max_ps(array[31], array[79]);
4558     array[31] = tmp;
4559     tmp = _mm_min_ps(array[16], array[32]);
4560     array[32] = _mm_max_ps(array[16], array[32]);
4561     array[16] = tmp;
4562     tmp = _mm_min_ps(array[17], array[33]);
4563     array[33] = _mm_max_ps(array[17], array[33]);
4564     array[17] = tmp;
4565     tmp = _mm_min_ps(array[18], array[34]);
4566     array[34] = _mm_max_ps(array[18], array[34]);
4567     array[18] = tmp;
4568     tmp = _mm_min_ps(array[19], array[35]);
4569     array[35] = _mm_max_ps(array[19], array[35]);
4570     array[19] = tmp;
4571     tmp = _mm_min_ps(array[20], array[36]);
4572     array[36] = _mm_max_ps(array[20], array[36]);
4573     array[20] = tmp;
4574     tmp = _mm_min_ps(array[21], array[37]);
4575     array[37] = _mm_max_ps(array[21], array[37]);
4576     array[21] = tmp;
4577     tmp = _mm_min_ps(array[22], array[38]);
4578     array[38] = _mm_max_ps(array[22], array[38]);
4579     array[22] = tmp;
4580     tmp = _mm_min_ps(array[23], array[39]);
4581     array[39] = _mm_max_ps(array[23], array[39]);
4582     array[23] = tmp;
4583     tmp = _mm_min_ps(array[24], array[40]);
4584     array[40] = _mm_max_ps(array[24], array[40]);
4585     array[24] = tmp;
4586     tmp = _mm_min_ps(array[25], array[41]);
4587     array[41] = _mm_max_ps(array[25], array[41]);
4588     array[25] = tmp;
4589     tmp = _mm_min_ps(array[26], array[42]);
4590     array[42] = _mm_max_ps(array[26], array[42]);
4591     array[26] = tmp;
4592     tmp = _mm_min_ps(array[27], array[43]);
4593     array[43] = _mm_max_ps(array[27], array[43]);
4594     array[27] = tmp;
4595     tmp = _mm_min_ps(array[28], array[44]);
4596     array[44] = _mm_max_ps(array[28], array[44]);
4597     array[28] = tmp;
4598     tmp = _mm_min_ps(array[29], array[45]);
4599     array[45] = _mm_max_ps(array[29], array[45]);
4600     array[29] = tmp;
4601     tmp = _mm_min_ps(array[30], array[46]);
4602     array[46] = _mm_max_ps(array[30], array[46]);
4603     array[30] = tmp;
4604     tmp = _mm_min_ps(array[31], array[47]);
4605     array[47] = _mm_max_ps(array[31], array[47]);
4606     array[31] = tmp;
4607     tmp = _mm_min_ps(array[48], array[64]);
4608     array[64] = _mm_max_ps(array[48], array[64]);
4609     array[48] = tmp;
4610     tmp = _mm_min_ps(array[49], array[65]);
4611     array[65] = _mm_max_ps(array[49], array[65]);
4612     array[49] = tmp;
4613     tmp = _mm_min_ps(array[50], array[66]);
4614     array[66] = _mm_max_ps(array[50], array[66]);
4615     array[50] = tmp;
4616     tmp = _mm_min_ps(array[51], array[67]);
4617     array[67] = _mm_max_ps(array[51], array[67]);
4618     array[51] = tmp;
4619     tmp = _mm_min_ps(array[52], array[68]);
4620     array[68] = _mm_max_ps(array[52], array[68]);
4621     array[52] = tmp;
4622     tmp = _mm_min_ps(array[53], array[69]);
4623     array[69] = _mm_max_ps(array[53], array[69]);
4624     array[53] = tmp;
4625     tmp = _mm_min_ps(array[54], array[70]);
4626     array[70] = _mm_max_ps(array[54], array[70]);
4627     array[54] = tmp;
4628     tmp = _mm_min_ps(array[55], array[71]);
4629     array[71] = _mm_max_ps(array[55], array[71]);
4630     array[55] = tmp;
4631     tmp = _mm_min_ps(array[56], array[72]);
4632     array[72] = _mm_max_ps(array[56], array[72]);
4633     array[56] = tmp;
4634     tmp = _mm_min_ps(array[57], array[73]);
4635     array[73] = _mm_max_ps(array[57], array[73]);
4636     array[57] = tmp;
4637     tmp = _mm_min_ps(array[58], array[74]);
4638     array[74] = _mm_max_ps(array[58], array[74]);
4639     array[58] = tmp;
4640     tmp = _mm_min_ps(array[59], array[75]);
4641     array[75] = _mm_max_ps(array[59], array[75]);
4642     array[59] = tmp;
4643     tmp = _mm_min_ps(array[60], array[76]);
4644     array[76] = _mm_max_ps(array[60], array[76]);
4645     array[60] = tmp;
4646     tmp = _mm_min_ps(array[61], array[77]);
4647     array[77] = _mm_max_ps(array[61], array[77]);
4648     array[61] = tmp;
4649     tmp = _mm_min_ps(array[62], array[78]);
4650     array[78] = _mm_max_ps(array[62], array[78]);
4651     array[62] = tmp;
4652     tmp = _mm_min_ps(array[63], array[79]);
4653     array[79] = _mm_max_ps(array[63], array[79]);
4654     array[63] = tmp;
4655     tmp = _mm_min_ps(array[0], array[8]);
4656     array[8] = _mm_max_ps(array[0], array[8]);
4657     array[0] = tmp;
4658     tmp = _mm_min_ps(array[1], array[9]);
4659     array[9] = _mm_max_ps(array[1], array[9]);
4660     array[1] = tmp;
4661     tmp = _mm_min_ps(array[2], array[10]);
4662     array[10] = _mm_max_ps(array[2], array[10]);
4663     array[2] = tmp;
4664     tmp = _mm_min_ps(array[3], array[11]);
4665     array[11] = _mm_max_ps(array[3], array[11]);
4666     array[3] = tmp;
4667     tmp = _mm_min_ps(array[4], array[12]);
4668     array[12] = _mm_max_ps(array[4], array[12]);
4669     array[4] = tmp;
4670     tmp = _mm_min_ps(array[5], array[13]);
4671     array[13] = _mm_max_ps(array[5], array[13]);
4672     array[5] = tmp;
4673     tmp = _mm_min_ps(array[6], array[14]);
4674     array[14] = _mm_max_ps(array[6], array[14]);
4675     array[6] = tmp;
4676     tmp = _mm_min_ps(array[7], array[15]);
4677     array[15] = _mm_max_ps(array[7], array[15]);
4678     array[7] = tmp;
4679     tmp = _mm_min_ps(array[16], array[24]);
4680     array[24] = _mm_max_ps(array[16], array[24]);
4681     array[16] = tmp;
4682     tmp = _mm_min_ps(array[17], array[25]);
4683     array[25] = _mm_max_ps(array[17], array[25]);
4684     array[17] = tmp;
4685     tmp = _mm_min_ps(array[18], array[26]);
4686     array[26] = _mm_max_ps(array[18], array[26]);
4687     array[18] = tmp;
4688     tmp = _mm_min_ps(array[19], array[27]);
4689     array[27] = _mm_max_ps(array[19], array[27]);
4690     array[19] = tmp;
4691     tmp = _mm_min_ps(array[20], array[28]);
4692     array[28] = _mm_max_ps(array[20], array[28]);
4693     array[20] = tmp;
4694     tmp = _mm_min_ps(array[21], array[29]);
4695     array[29] = _mm_max_ps(array[21], array[29]);
4696     array[21] = tmp;
4697     tmp = _mm_min_ps(array[22], array[30]);
4698     array[30] = _mm_max_ps(array[22], array[30]);
4699     array[22] = tmp;
4700     tmp = _mm_min_ps(array[23], array[31]);
4701     array[31] = _mm_max_ps(array[23], array[31]);
4702     array[23] = tmp;
4703     tmp = _mm_min_ps(array[32], array[40]);
4704     array[40] = _mm_max_ps(array[32], array[40]);
4705     array[32] = tmp;
4706     tmp = _mm_min_ps(array[33], array[41]);
4707     array[41] = _mm_max_ps(array[33], array[41]);
4708     array[33] = tmp;
4709     tmp = _mm_min_ps(array[34], array[42]);
4710     array[42] = _mm_max_ps(array[34], array[42]);
4711     array[34] = tmp;
4712     tmp = _mm_min_ps(array[35], array[43]);
4713     array[43] = _mm_max_ps(array[35], array[43]);
4714     array[35] = tmp;
4715     tmp = _mm_min_ps(array[36], array[44]);
4716     array[44] = _mm_max_ps(array[36], array[44]);
4717     array[36] = tmp;
4718     tmp = _mm_min_ps(array[37], array[45]);
4719     array[45] = _mm_max_ps(array[37], array[45]);
4720     array[37] = tmp;
4721     tmp = _mm_min_ps(array[38], array[46]);
4722     array[46] = _mm_max_ps(array[38], array[46]);
4723     array[38] = tmp;
4724     tmp = _mm_min_ps(array[39], array[47]);
4725     array[47] = _mm_max_ps(array[39], array[47]);
4726     array[39] = tmp;
4727     tmp = _mm_min_ps(array[48], array[56]);
4728     array[56] = _mm_max_ps(array[48], array[56]);
4729     array[48] = tmp;
4730     tmp = _mm_min_ps(array[49], array[57]);
4731     array[57] = _mm_max_ps(array[49], array[57]);
4732     array[49] = tmp;
4733     tmp = _mm_min_ps(array[50], array[58]);
4734     array[58] = _mm_max_ps(array[50], array[58]);
4735     array[50] = tmp;
4736     tmp = _mm_min_ps(array[51], array[59]);
4737     array[59] = _mm_max_ps(array[51], array[59]);
4738     array[51] = tmp;
4739     tmp = _mm_min_ps(array[52], array[60]);
4740     array[60] = _mm_max_ps(array[52], array[60]);
4741     array[52] = tmp;
4742     tmp = _mm_min_ps(array[53], array[61]);
4743     array[61] = _mm_max_ps(array[53], array[61]);
4744     array[53] = tmp;
4745     tmp = _mm_min_ps(array[54], array[62]);
4746     array[62] = _mm_max_ps(array[54], array[62]);
4747     array[54] = tmp;
4748     tmp = _mm_min_ps(array[55], array[63]);
4749     array[63] = _mm_max_ps(array[55], array[63]);
4750     array[55] = tmp;
4751     tmp = _mm_min_ps(array[64], array[72]);
4752     array[72] = _mm_max_ps(array[64], array[72]);
4753     array[64] = tmp;
4754     tmp = _mm_min_ps(array[65], array[73]);
4755     array[73] = _mm_max_ps(array[65], array[73]);
4756     array[65] = tmp;
4757     tmp = _mm_min_ps(array[66], array[74]);
4758     array[74] = _mm_max_ps(array[66], array[74]);
4759     array[66] = tmp;
4760     tmp = _mm_min_ps(array[67], array[75]);
4761     array[75] = _mm_max_ps(array[67], array[75]);
4762     array[67] = tmp;
4763     tmp = _mm_min_ps(array[68], array[76]);
4764     array[76] = _mm_max_ps(array[68], array[76]);
4765     array[68] = tmp;
4766     tmp = _mm_min_ps(array[69], array[77]);
4767     array[77] = _mm_max_ps(array[69], array[77]);
4768     array[69] = tmp;
4769     tmp = _mm_min_ps(array[70], array[78]);
4770     array[78] = _mm_max_ps(array[70], array[78]);
4771     array[70] = tmp;
4772     tmp = _mm_min_ps(array[71], array[79]);
4773     array[79] = _mm_max_ps(array[71], array[79]);
4774     array[71] = tmp;
4775     tmp = _mm_min_ps(array[8], array[64]);
4776     array[64] = _mm_max_ps(array[8], array[64]);
4777     array[8] = tmp;
4778     tmp = _mm_min_ps(array[9], array[65]);
4779     array[65] = _mm_max_ps(array[9], array[65]);
4780     array[9] = tmp;
4781     tmp = _mm_min_ps(array[10], array[66]);
4782     array[66] = _mm_max_ps(array[10], array[66]);
4783     array[10] = tmp;
4784     tmp = _mm_min_ps(array[11], array[67]);
4785     array[67] = _mm_max_ps(array[11], array[67]);
4786     array[11] = tmp;
4787     tmp = _mm_min_ps(array[12], array[68]);
4788     array[68] = _mm_max_ps(array[12], array[68]);
4789     array[12] = tmp;
4790     tmp = _mm_min_ps(array[13], array[69]);
4791     array[69] = _mm_max_ps(array[13], array[69]);
4792     array[13] = tmp;
4793     tmp = _mm_min_ps(array[14], array[70]);
4794     array[70] = _mm_max_ps(array[14], array[70]);
4795     array[14] = tmp;
4796     tmp = _mm_min_ps(array[15], array[71]);
4797     array[71] = _mm_max_ps(array[15], array[71]);
4798     array[15] = tmp;
4799     tmp = _mm_min_ps(array[24], array[80]);
4800     array[80] = _mm_max_ps(array[24], array[80]);
4801     array[24] = tmp;
4802     tmp = _mm_min_ps(array[8], array[32]);
4803     array[32] = _mm_max_ps(array[8], array[32]);
4804     array[8] = tmp;
4805     tmp = _mm_min_ps(array[9], array[33]);
4806     array[33] = _mm_max_ps(array[9], array[33]);
4807     array[9] = tmp;
4808     tmp = _mm_min_ps(array[10], array[34]);
4809     array[34] = _mm_max_ps(array[10], array[34]);
4810     array[10] = tmp;
4811     tmp = _mm_min_ps(array[11], array[35]);
4812     array[35] = _mm_max_ps(array[11], array[35]);
4813     array[11] = tmp;
4814     tmp = _mm_min_ps(array[12], array[36]);
4815     array[36] = _mm_max_ps(array[12], array[36]);
4816     array[12] = tmp;
4817     tmp = _mm_min_ps(array[13], array[37]);
4818     array[37] = _mm_max_ps(array[13], array[37]);
4819     array[13] = tmp;
4820     tmp = _mm_min_ps(array[14], array[38]);
4821     array[38] = _mm_max_ps(array[14], array[38]);
4822     array[14] = tmp;
4823     tmp = _mm_min_ps(array[15], array[39]);
4824     array[39] = _mm_max_ps(array[15], array[39]);
4825     array[15] = tmp;
4826     tmp = _mm_min_ps(array[24], array[48]);
4827     array[48] = _mm_max_ps(array[24], array[48]);
4828     array[24] = tmp;
4829     tmp = _mm_min_ps(array[25], array[49]);
4830     array[49] = _mm_max_ps(array[25], array[49]);
4831     array[25] = tmp;
4832     tmp = _mm_min_ps(array[26], array[50]);
4833     array[50] = _mm_max_ps(array[26], array[50]);
4834     array[26] = tmp;
4835     tmp = _mm_min_ps(array[27], array[51]);
4836     array[51] = _mm_max_ps(array[27], array[51]);
4837     array[27] = tmp;
4838     tmp = _mm_min_ps(array[28], array[52]);
4839     array[52] = _mm_max_ps(array[28], array[52]);
4840     array[28] = tmp;
4841     tmp = _mm_min_ps(array[29], array[53]);
4842     array[53] = _mm_max_ps(array[29], array[53]);
4843     array[29] = tmp;
4844     tmp = _mm_min_ps(array[30], array[54]);
4845     array[54] = _mm_max_ps(array[30], array[54]);
4846     array[30] = tmp;
4847     tmp = _mm_min_ps(array[31], array[55]);
4848     array[55] = _mm_max_ps(array[31], array[55]);
4849     array[31] = tmp;
4850     tmp = _mm_min_ps(array[40], array[64]);
4851     array[64] = _mm_max_ps(array[40], array[64]);
4852     array[40] = tmp;
4853     tmp = _mm_min_ps(array[41], array[65]);
4854     array[65] = _mm_max_ps(array[41], array[65]);
4855     array[41] = tmp;
4856     tmp = _mm_min_ps(array[42], array[66]);
4857     array[66] = _mm_max_ps(array[42], array[66]);
4858     array[42] = tmp;
4859     tmp = _mm_min_ps(array[43], array[67]);
4860     array[67] = _mm_max_ps(array[43], array[67]);
4861     array[43] = tmp;
4862     tmp = _mm_min_ps(array[44], array[68]);
4863     array[68] = _mm_max_ps(array[44], array[68]);
4864     array[44] = tmp;
4865     tmp = _mm_min_ps(array[45], array[69]);
4866     array[69] = _mm_max_ps(array[45], array[69]);
4867     array[45] = tmp;
4868     tmp = _mm_min_ps(array[46], array[70]);
4869     array[70] = _mm_max_ps(array[46], array[70]);
4870     array[46] = tmp;
4871     tmp = _mm_min_ps(array[47], array[71]);
4872     array[71] = _mm_max_ps(array[47], array[71]);
4873     array[47] = tmp;
4874     tmp = _mm_min_ps(array[56], array[80]);
4875     array[80] = _mm_max_ps(array[56], array[80]);
4876     array[56] = tmp;
4877     tmp = _mm_min_ps(array[8], array[16]);
4878     array[16] = _mm_max_ps(array[8], array[16]);
4879     array[8] = tmp;
4880     tmp = _mm_min_ps(array[9], array[17]);
4881     array[17] = _mm_max_ps(array[9], array[17]);
4882     array[9] = tmp;
4883     tmp = _mm_min_ps(array[10], array[18]);
4884     array[18] = _mm_max_ps(array[10], array[18]);
4885     array[10] = tmp;
4886     tmp = _mm_min_ps(array[11], array[19]);
4887     array[19] = _mm_max_ps(array[11], array[19]);
4888     array[11] = tmp;
4889     tmp = _mm_min_ps(array[12], array[20]);
4890     array[20] = _mm_max_ps(array[12], array[20]);
4891     array[12] = tmp;
4892     tmp = _mm_min_ps(array[13], array[21]);
4893     array[21] = _mm_max_ps(array[13], array[21]);
4894     array[13] = tmp;
4895     tmp = _mm_min_ps(array[14], array[22]);
4896     array[22] = _mm_max_ps(array[14], array[22]);
4897     array[14] = tmp;
4898     tmp = _mm_min_ps(array[15], array[23]);
4899     array[23] = _mm_max_ps(array[15], array[23]);
4900     array[15] = tmp;
4901     tmp = _mm_min_ps(array[24], array[32]);
4902     array[32] = _mm_max_ps(array[24], array[32]);
4903     array[24] = tmp;
4904     tmp = _mm_min_ps(array[25], array[33]);
4905     array[33] = _mm_max_ps(array[25], array[33]);
4906     array[25] = tmp;
4907     tmp = _mm_min_ps(array[26], array[34]);
4908     array[34] = _mm_max_ps(array[26], array[34]);
4909     array[26] = tmp;
4910     tmp = _mm_min_ps(array[27], array[35]);
4911     array[35] = _mm_max_ps(array[27], array[35]);
4912     array[27] = tmp;
4913     tmp = _mm_min_ps(array[28], array[36]);
4914     array[36] = _mm_max_ps(array[28], array[36]);
4915     array[28] = tmp;
4916     tmp = _mm_min_ps(array[29], array[37]);
4917     array[37] = _mm_max_ps(array[29], array[37]);
4918     array[29] = tmp;
4919     tmp = _mm_min_ps(array[30], array[38]);
4920     array[38] = _mm_max_ps(array[30], array[38]);
4921     array[30] = tmp;
4922     tmp = _mm_min_ps(array[31], array[39]);
4923     array[39] = _mm_max_ps(array[31], array[39]);
4924     array[31] = tmp;
4925     tmp = _mm_min_ps(array[40], array[48]);
4926     array[48] = _mm_max_ps(array[40], array[48]);
4927     array[40] = tmp;
4928     tmp = _mm_min_ps(array[41], array[49]);
4929     array[49] = _mm_max_ps(array[41], array[49]);
4930     array[41] = tmp;
4931     tmp = _mm_min_ps(array[42], array[50]);
4932     array[50] = _mm_max_ps(array[42], array[50]);
4933     array[42] = tmp;
4934     tmp = _mm_min_ps(array[43], array[51]);
4935     array[51] = _mm_max_ps(array[43], array[51]);
4936     array[43] = tmp;
4937     tmp = _mm_min_ps(array[44], array[52]);
4938     array[52] = _mm_max_ps(array[44], array[52]);
4939     array[44] = tmp;
4940     tmp = _mm_min_ps(array[45], array[53]);
4941     array[53] = _mm_max_ps(array[45], array[53]);
4942     array[45] = tmp;
4943     tmp = _mm_min_ps(array[46], array[54]);
4944     array[54] = _mm_max_ps(array[46], array[54]);
4945     array[46] = tmp;
4946     tmp = _mm_min_ps(array[47], array[55]);
4947     array[55] = _mm_max_ps(array[47], array[55]);
4948     array[47] = tmp;
4949     tmp = _mm_min_ps(array[56], array[64]);
4950     array[64] = _mm_max_ps(array[56], array[64]);
4951     array[56] = tmp;
4952     tmp = _mm_min_ps(array[57], array[65]);
4953     array[65] = _mm_max_ps(array[57], array[65]);
4954     array[57] = tmp;
4955     tmp = _mm_min_ps(array[58], array[66]);
4956     array[66] = _mm_max_ps(array[58], array[66]);
4957     array[58] = tmp;
4958     tmp = _mm_min_ps(array[59], array[67]);
4959     array[67] = _mm_max_ps(array[59], array[67]);
4960     array[59] = tmp;
4961     tmp = _mm_min_ps(array[60], array[68]);
4962     array[68] = _mm_max_ps(array[60], array[68]);
4963     array[60] = tmp;
4964     tmp = _mm_min_ps(array[61], array[69]);
4965     array[69] = _mm_max_ps(array[61], array[69]);
4966     array[61] = tmp;
4967     tmp = _mm_min_ps(array[62], array[70]);
4968     array[70] = _mm_max_ps(array[62], array[70]);
4969     array[62] = tmp;
4970     tmp = _mm_min_ps(array[63], array[71]);
4971     array[71] = _mm_max_ps(array[63], array[71]);
4972     array[63] = tmp;
4973     tmp = _mm_min_ps(array[72], array[80]);
4974     array[80] = _mm_max_ps(array[72], array[80]);
4975     array[72] = tmp;
4976     tmp = _mm_min_ps(array[0], array[4]);
4977     array[4] = _mm_max_ps(array[0], array[4]);
4978     array[0] = tmp;
4979     tmp = _mm_min_ps(array[1], array[5]);
4980     array[5] = _mm_max_ps(array[1], array[5]);
4981     array[1] = tmp;
4982     tmp = _mm_min_ps(array[2], array[6]);
4983     array[6] = _mm_max_ps(array[2], array[6]);
4984     array[2] = tmp;
4985     tmp = _mm_min_ps(array[3], array[7]);
4986     array[7] = _mm_max_ps(array[3], array[7]);
4987     array[3] = tmp;
4988     tmp = _mm_min_ps(array[8], array[12]);
4989     array[12] = _mm_max_ps(array[8], array[12]);
4990     array[8] = tmp;
4991     tmp = _mm_min_ps(array[9], array[13]);
4992     array[13] = _mm_max_ps(array[9], array[13]);
4993     array[9] = tmp;
4994     tmp = _mm_min_ps(array[10], array[14]);
4995     array[14] = _mm_max_ps(array[10], array[14]);
4996     array[10] = tmp;
4997     tmp = _mm_min_ps(array[11], array[15]);
4998     array[15] = _mm_max_ps(array[11], array[15]);
4999     array[11] = tmp;
5000     tmp = _mm_min_ps(array[16], array[20]);
5001     array[20] = _mm_max_ps(array[16], array[20]);
5002     array[16] = tmp;
5003     tmp = _mm_min_ps(array[17], array[21]);
5004     array[21] = _mm_max_ps(array[17], array[21]);
5005     array[17] = tmp;
5006     tmp = _mm_min_ps(array[18], array[22]);
5007     array[22] = _mm_max_ps(array[18], array[22]);
5008     array[18] = tmp;
5009     tmp = _mm_min_ps(array[19], array[23]);
5010     array[23] = _mm_max_ps(array[19], array[23]);
5011     array[19] = tmp;
5012     tmp = _mm_min_ps(array[24], array[28]);
5013     array[28] = _mm_max_ps(array[24], array[28]);
5014     array[24] = tmp;
5015     tmp = _mm_min_ps(array[25], array[29]);
5016     array[29] = _mm_max_ps(array[25], array[29]);
5017     array[25] = tmp;
5018     tmp = _mm_min_ps(array[26], array[30]);
5019     array[30] = _mm_max_ps(array[26], array[30]);
5020     array[26] = tmp;
5021     tmp = _mm_min_ps(array[27], array[31]);
5022     array[31] = _mm_max_ps(array[27], array[31]);
5023     array[27] = tmp;
5024     tmp = _mm_min_ps(array[32], array[36]);
5025     array[36] = _mm_max_ps(array[32], array[36]);
5026     array[32] = tmp;
5027     tmp = _mm_min_ps(array[33], array[37]);
5028     array[37] = _mm_max_ps(array[33], array[37]);
5029     array[33] = tmp;
5030     tmp = _mm_min_ps(array[34], array[38]);
5031     array[38] = _mm_max_ps(array[34], array[38]);
5032     array[34] = tmp;
5033     tmp = _mm_min_ps(array[35], array[39]);
5034     array[39] = _mm_max_ps(array[35], array[39]);
5035     array[35] = tmp;
5036     tmp = _mm_min_ps(array[40], array[44]);
5037     array[44] = _mm_max_ps(array[40], array[44]);
5038     array[40] = tmp;
5039     tmp = _mm_min_ps(array[41], array[45]);
5040     array[45] = _mm_max_ps(array[41], array[45]);
5041     array[41] = tmp;
5042     tmp = _mm_min_ps(array[42], array[46]);
5043     array[46] = _mm_max_ps(array[42], array[46]);
5044     array[42] = tmp;
5045     tmp = _mm_min_ps(array[43], array[47]);
5046     array[47] = _mm_max_ps(array[43], array[47]);
5047     array[43] = tmp;
5048     tmp = _mm_min_ps(array[48], array[52]);
5049     array[52] = _mm_max_ps(array[48], array[52]);
5050     array[48] = tmp;
5051     tmp = _mm_min_ps(array[49], array[53]);
5052     array[53] = _mm_max_ps(array[49], array[53]);
5053     array[49] = tmp;
5054     tmp = _mm_min_ps(array[50], array[54]);
5055     array[54] = _mm_max_ps(array[50], array[54]);
5056     array[50] = tmp;
5057     tmp = _mm_min_ps(array[51], array[55]);
5058     array[55] = _mm_max_ps(array[51], array[55]);
5059     array[51] = tmp;
5060     tmp = _mm_min_ps(array[56], array[60]);
5061     array[60] = _mm_max_ps(array[56], array[60]);
5062     array[56] = tmp;
5063     tmp = _mm_min_ps(array[57], array[61]);
5064     array[61] = _mm_max_ps(array[57], array[61]);
5065     array[57] = tmp;
5066     tmp = _mm_min_ps(array[58], array[62]);
5067     array[62] = _mm_max_ps(array[58], array[62]);
5068     array[58] = tmp;
5069     tmp = _mm_min_ps(array[59], array[63]);
5070     array[63] = _mm_max_ps(array[59], array[63]);
5071     array[59] = tmp;
5072     tmp = _mm_min_ps(array[64], array[68]);
5073     array[68] = _mm_max_ps(array[64], array[68]);
5074     array[64] = tmp;
5075     tmp = _mm_min_ps(array[65], array[69]);
5076     array[69] = _mm_max_ps(array[65], array[69]);
5077     array[65] = tmp;
5078     tmp = _mm_min_ps(array[66], array[70]);
5079     array[70] = _mm_max_ps(array[66], array[70]);
5080     array[66] = tmp;
5081     tmp = _mm_min_ps(array[67], array[71]);
5082     array[71] = _mm_max_ps(array[67], array[71]);
5083     array[67] = tmp;
5084     tmp = _mm_min_ps(array[72], array[76]);
5085     array[76] = _mm_max_ps(array[72], array[76]);
5086     array[72] = tmp;
5087     tmp = _mm_min_ps(array[73], array[77]);
5088     array[77] = _mm_max_ps(array[73], array[77]);
5089     array[73] = tmp;
5090     tmp = _mm_min_ps(array[74], array[78]);
5091     array[78] = _mm_max_ps(array[74], array[78]);
5092     array[74] = tmp;
5093     tmp = _mm_min_ps(array[75], array[79]);
5094     array[79] = _mm_max_ps(array[75], array[79]);
5095     array[75] = tmp;
5096     tmp = _mm_min_ps(array[4], array[64]);
5097     array[64] = _mm_max_ps(array[4], array[64]);
5098     array[4] = tmp;
5099     tmp = _mm_min_ps(array[5], array[65]);
5100     array[65] = _mm_max_ps(array[5], array[65]);
5101     array[5] = tmp;
5102     tmp = _mm_min_ps(array[6], array[66]);
5103     array[66] = _mm_max_ps(array[6], array[66]);
5104     array[6] = tmp;
5105     tmp = _mm_min_ps(array[7], array[67]);
5106     array[67] = _mm_max_ps(array[7], array[67]);
5107     array[7] = tmp;
5108     tmp = _mm_min_ps(array[12], array[72]);
5109     array[72] = _mm_max_ps(array[12], array[72]);
5110     array[12] = tmp;
5111     tmp = _mm_min_ps(array[13], array[73]);
5112     array[73] = _mm_max_ps(array[13], array[73]);
5113     array[13] = tmp;
5114     tmp = _mm_min_ps(array[14], array[74]);
5115     array[74] = _mm_max_ps(array[14], array[74]);
5116     array[14] = tmp;
5117     tmp = _mm_min_ps(array[15], array[75]);
5118     array[75] = _mm_max_ps(array[15], array[75]);
5119     array[15] = tmp;
5120     tmp = _mm_min_ps(array[20], array[80]);
5121     array[80] = _mm_max_ps(array[20], array[80]);
5122     array[20] = tmp;
5123     tmp = _mm_min_ps(array[4], array[32]);
5124     array[32] = _mm_max_ps(array[4], array[32]);
5125     array[4] = tmp;
5126     tmp = _mm_min_ps(array[5], array[33]);
5127     array[33] = _mm_max_ps(array[5], array[33]);
5128     array[5] = tmp;
5129     tmp = _mm_min_ps(array[6], array[34]);
5130     array[34] = _mm_max_ps(array[6], array[34]);
5131     array[6] = tmp;
5132     tmp = _mm_min_ps(array[7], array[35]);
5133     array[35] = _mm_max_ps(array[7], array[35]);
5134     array[7] = tmp;
5135     tmp = _mm_min_ps(array[12], array[40]);
5136     array[40] = _mm_max_ps(array[12], array[40]);
5137     array[12] = tmp;
5138     tmp = _mm_min_ps(array[13], array[41]);
5139     array[41] = _mm_max_ps(array[13], array[41]);
5140     array[13] = tmp;
5141     tmp = _mm_min_ps(array[14], array[42]);
5142     array[42] = _mm_max_ps(array[14], array[42]);
5143     array[14] = tmp;
5144     tmp = _mm_min_ps(array[15], array[43]);
5145     array[43] = _mm_max_ps(array[15], array[43]);
5146     array[15] = tmp;
5147     tmp = _mm_min_ps(array[20], array[48]);
5148     array[48] = _mm_max_ps(array[20], array[48]);
5149     array[20] = tmp;
5150     tmp = _mm_min_ps(array[21], array[49]);
5151     array[49] = _mm_max_ps(array[21], array[49]);
5152     array[21] = tmp;
5153     tmp = _mm_min_ps(array[22], array[50]);
5154     array[50] = _mm_max_ps(array[22], array[50]);
5155     array[22] = tmp;
5156     tmp = _mm_min_ps(array[23], array[51]);
5157     array[51] = _mm_max_ps(array[23], array[51]);
5158     array[23] = tmp;
5159     tmp = _mm_min_ps(array[28], array[56]);
5160     array[56] = _mm_max_ps(array[28], array[56]);
5161     array[28] = tmp;
5162     tmp = _mm_min_ps(array[29], array[57]);
5163     array[57] = _mm_max_ps(array[29], array[57]);
5164     array[29] = tmp;
5165     tmp = _mm_min_ps(array[30], array[58]);
5166     array[58] = _mm_max_ps(array[30], array[58]);
5167     array[30] = tmp;
5168     tmp = _mm_min_ps(array[31], array[59]);
5169     array[59] = _mm_max_ps(array[31], array[59]);
5170     array[31] = tmp;
5171     tmp = _mm_min_ps(array[36], array[64]);
5172     array[64] = _mm_max_ps(array[36], array[64]);
5173     array[36] = tmp;
5174     tmp = _mm_min_ps(array[37], array[65]);
5175     array[65] = _mm_max_ps(array[37], array[65]);
5176     array[37] = tmp;
5177     tmp = _mm_min_ps(array[38], array[66]);
5178     array[66] = _mm_max_ps(array[38], array[66]);
5179     array[38] = tmp;
5180     tmp = _mm_min_ps(array[39], array[67]);
5181     array[67] = _mm_max_ps(array[39], array[67]);
5182     array[39] = tmp;
5183     tmp = _mm_min_ps(array[44], array[72]);
5184     array[72] = _mm_max_ps(array[44], array[72]);
5185     array[44] = tmp;
5186     tmp = _mm_min_ps(array[45], array[73]);
5187     array[73] = _mm_max_ps(array[45], array[73]);
5188     array[45] = tmp;
5189     tmp = _mm_min_ps(array[46], array[74]);
5190     array[74] = _mm_max_ps(array[46], array[74]);
5191     array[46] = tmp;
5192     tmp = _mm_min_ps(array[47], array[75]);
5193     array[75] = _mm_max_ps(array[47], array[75]);
5194     array[47] = tmp;
5195     tmp = _mm_min_ps(array[52], array[80]);
5196     array[80] = _mm_max_ps(array[52], array[80]);
5197     array[52] = tmp;
5198     tmp = _mm_min_ps(array[4], array[16]);
5199     array[16] = _mm_max_ps(array[4], array[16]);
5200     array[4] = tmp;
5201     tmp = _mm_min_ps(array[5], array[17]);
5202     array[17] = _mm_max_ps(array[5], array[17]);
5203     array[5] = tmp;
5204     tmp = _mm_min_ps(array[6], array[18]);
5205     array[18] = _mm_max_ps(array[6], array[18]);
5206     array[6] = tmp;
5207     tmp = _mm_min_ps(array[7], array[19]);
5208     array[19] = _mm_max_ps(array[7], array[19]);
5209     array[7] = tmp;
5210     tmp = _mm_min_ps(array[12], array[24]);
5211     array[24] = _mm_max_ps(array[12], array[24]);
5212     array[12] = tmp;
5213     tmp = _mm_min_ps(array[13], array[25]);
5214     array[25] = _mm_max_ps(array[13], array[25]);
5215     array[13] = tmp;
5216     tmp = _mm_min_ps(array[14], array[26]);
5217     array[26] = _mm_max_ps(array[14], array[26]);
5218     array[14] = tmp;
5219     tmp = _mm_min_ps(array[15], array[27]);
5220     array[27] = _mm_max_ps(array[15], array[27]);
5221     array[15] = tmp;
5222     tmp = _mm_min_ps(array[20], array[32]);
5223     array[32] = _mm_max_ps(array[20], array[32]);
5224     array[20] = tmp;
5225     tmp = _mm_min_ps(array[21], array[33]);
5226     array[33] = _mm_max_ps(array[21], array[33]);
5227     array[21] = tmp;
5228     tmp = _mm_min_ps(array[22], array[34]);
5229     array[34] = _mm_max_ps(array[22], array[34]);
5230     array[22] = tmp;
5231     tmp = _mm_min_ps(array[23], array[35]);
5232     array[35] = _mm_max_ps(array[23], array[35]);
5233     array[23] = tmp;
5234     tmp = _mm_min_ps(array[28], array[40]);
5235     array[40] = _mm_max_ps(array[28], array[40]);
5236     array[28] = tmp;
5237     tmp = _mm_min_ps(array[29], array[41]);
5238     array[41] = _mm_max_ps(array[29], array[41]);
5239     array[29] = tmp;
5240     tmp = _mm_min_ps(array[30], array[42]);
5241     array[42] = _mm_max_ps(array[30], array[42]);
5242     array[30] = tmp;
5243     tmp = _mm_min_ps(array[31], array[43]);
5244     array[43] = _mm_max_ps(array[31], array[43]);
5245     array[31] = tmp;
5246     tmp = _mm_min_ps(array[36], array[48]);
5247     array[48] = _mm_max_ps(array[36], array[48]);
5248     array[36] = tmp;
5249     tmp = _mm_min_ps(array[37], array[49]);
5250     array[49] = _mm_max_ps(array[37], array[49]);
5251     array[37] = tmp;
5252     tmp = _mm_min_ps(array[38], array[50]);
5253     array[50] = _mm_max_ps(array[38], array[50]);
5254     array[38] = tmp;
5255     tmp = _mm_min_ps(array[39], array[51]);
5256     array[51] = _mm_max_ps(array[39], array[51]);
5257     array[39] = tmp;
5258     tmp = _mm_min_ps(array[44], array[56]);
5259     array[56] = _mm_max_ps(array[44], array[56]);
5260     array[44] = tmp;
5261     tmp = _mm_min_ps(array[45], array[57]);
5262     array[57] = _mm_max_ps(array[45], array[57]);
5263     array[45] = tmp;
5264     tmp = _mm_min_ps(array[46], array[58]);
5265     array[58] = _mm_max_ps(array[46], array[58]);
5266     array[46] = tmp;
5267     tmp = _mm_min_ps(array[47], array[59]);
5268     array[59] = _mm_max_ps(array[47], array[59]);
5269     array[47] = tmp;
5270     tmp = _mm_min_ps(array[52], array[64]);
5271     array[64] = _mm_max_ps(array[52], array[64]);
5272     array[52] = tmp;
5273     tmp = _mm_min_ps(array[53], array[65]);
5274     array[65] = _mm_max_ps(array[53], array[65]);
5275     array[53] = tmp;
5276     tmp = _mm_min_ps(array[54], array[66]);
5277     array[66] = _mm_max_ps(array[54], array[66]);
5278     array[54] = tmp;
5279     tmp = _mm_min_ps(array[55], array[67]);
5280     array[67] = _mm_max_ps(array[55], array[67]);
5281     array[55] = tmp;
5282     tmp = _mm_min_ps(array[60], array[72]);
5283     array[72] = _mm_max_ps(array[60], array[72]);
5284     array[60] = tmp;
5285     tmp = _mm_min_ps(array[61], array[73]);
5286     array[73] = _mm_max_ps(array[61], array[73]);
5287     array[61] = tmp;
5288     tmp = _mm_min_ps(array[62], array[74]);
5289     array[74] = _mm_max_ps(array[62], array[74]);
5290     array[62] = tmp;
5291     tmp = _mm_min_ps(array[63], array[75]);
5292     array[75] = _mm_max_ps(array[63], array[75]);
5293     array[63] = tmp;
5294     tmp = _mm_min_ps(array[68], array[80]);
5295     array[80] = _mm_max_ps(array[68], array[80]);
5296     array[68] = tmp;
5297     tmp = _mm_min_ps(array[4], array[8]);
5298     array[8] = _mm_max_ps(array[4], array[8]);
5299     array[4] = tmp;
5300     tmp = _mm_min_ps(array[5], array[9]);
5301     array[9] = _mm_max_ps(array[5], array[9]);
5302     array[5] = tmp;
5303     tmp = _mm_min_ps(array[6], array[10]);
5304     array[10] = _mm_max_ps(array[6], array[10]);
5305     array[6] = tmp;
5306     tmp = _mm_min_ps(array[7], array[11]);
5307     array[11] = _mm_max_ps(array[7], array[11]);
5308     array[7] = tmp;
5309     tmp = _mm_min_ps(array[12], array[16]);
5310     array[16] = _mm_max_ps(array[12], array[16]);
5311     array[12] = tmp;
5312     tmp = _mm_min_ps(array[13], array[17]);
5313     array[17] = _mm_max_ps(array[13], array[17]);
5314     array[13] = tmp;
5315     tmp = _mm_min_ps(array[14], array[18]);
5316     array[18] = _mm_max_ps(array[14], array[18]);
5317     array[14] = tmp;
5318     tmp = _mm_min_ps(array[15], array[19]);
5319     array[19] = _mm_max_ps(array[15], array[19]);
5320     array[15] = tmp;
5321     tmp = _mm_min_ps(array[20], array[24]);
5322     array[24] = _mm_max_ps(array[20], array[24]);
5323     array[20] = tmp;
5324     tmp = _mm_min_ps(array[21], array[25]);
5325     array[25] = _mm_max_ps(array[21], array[25]);
5326     array[21] = tmp;
5327     tmp = _mm_min_ps(array[22], array[26]);
5328     array[26] = _mm_max_ps(array[22], array[26]);
5329     array[22] = tmp;
5330     tmp = _mm_min_ps(array[23], array[27]);
5331     array[27] = _mm_max_ps(array[23], array[27]);
5332     array[23] = tmp;
5333     tmp = _mm_min_ps(array[28], array[32]);
5334     array[32] = _mm_max_ps(array[28], array[32]);
5335     array[28] = tmp;
5336     tmp = _mm_min_ps(array[29], array[33]);
5337     array[33] = _mm_max_ps(array[29], array[33]);
5338     array[29] = tmp;
5339     tmp = _mm_min_ps(array[30], array[34]);
5340     array[34] = _mm_max_ps(array[30], array[34]);
5341     array[30] = tmp;
5342     tmp = _mm_min_ps(array[31], array[35]);
5343     array[35] = _mm_max_ps(array[31], array[35]);
5344     array[31] = tmp;
5345     tmp = _mm_min_ps(array[36], array[40]);
5346     array[40] = _mm_max_ps(array[36], array[40]);
5347     array[36] = tmp;
5348     tmp = _mm_min_ps(array[37], array[41]);
5349     array[41] = _mm_max_ps(array[37], array[41]);
5350     array[37] = tmp;
5351     tmp = _mm_min_ps(array[38], array[42]);
5352     array[42] = _mm_max_ps(array[38], array[42]);
5353     array[38] = tmp;
5354     tmp = _mm_min_ps(array[39], array[43]);
5355     array[43] = _mm_max_ps(array[39], array[43]);
5356     array[39] = tmp;
5357     tmp = _mm_min_ps(array[44], array[48]);
5358     array[48] = _mm_max_ps(array[44], array[48]);
5359     array[44] = tmp;
5360     tmp = _mm_min_ps(array[45], array[49]);
5361     array[49] = _mm_max_ps(array[45], array[49]);
5362     array[45] = tmp;
5363     tmp = _mm_min_ps(array[46], array[50]);
5364     array[50] = _mm_max_ps(array[46], array[50]);
5365     array[46] = tmp;
5366     tmp = _mm_min_ps(array[47], array[51]);
5367     array[51] = _mm_max_ps(array[47], array[51]);
5368     array[47] = tmp;
5369     tmp = _mm_min_ps(array[52], array[56]);
5370     array[56] = _mm_max_ps(array[52], array[56]);
5371     array[52] = tmp;
5372     tmp = _mm_min_ps(array[53], array[57]);
5373     array[57] = _mm_max_ps(array[53], array[57]);
5374     array[53] = tmp;
5375     tmp = _mm_min_ps(array[54], array[58]);
5376     array[58] = _mm_max_ps(array[54], array[58]);
5377     array[54] = tmp;
5378     tmp = _mm_min_ps(array[55], array[59]);
5379     array[59] = _mm_max_ps(array[55], array[59]);
5380     array[55] = tmp;
5381     tmp = _mm_min_ps(array[60], array[64]);
5382     array[64] = _mm_max_ps(array[60], array[64]);
5383     array[60] = tmp;
5384     tmp = _mm_min_ps(array[61], array[65]);
5385     array[65] = _mm_max_ps(array[61], array[65]);
5386     array[61] = tmp;
5387     tmp = _mm_min_ps(array[62], array[66]);
5388     array[66] = _mm_max_ps(array[62], array[66]);
5389     array[62] = tmp;
5390     tmp = _mm_min_ps(array[63], array[67]);
5391     array[67] = _mm_max_ps(array[63], array[67]);
5392     array[63] = tmp;
5393     tmp = _mm_min_ps(array[68], array[72]);
5394     array[72] = _mm_max_ps(array[68], array[72]);
5395     array[68] = tmp;
5396     tmp = _mm_min_ps(array[69], array[73]);
5397     array[73] = _mm_max_ps(array[69], array[73]);
5398     array[69] = tmp;
5399     tmp = _mm_min_ps(array[70], array[74]);
5400     array[74] = _mm_max_ps(array[70], array[74]);
5401     array[70] = tmp;
5402     tmp = _mm_min_ps(array[71], array[75]);
5403     array[75] = _mm_max_ps(array[71], array[75]);
5404     array[71] = tmp;
5405     tmp = _mm_min_ps(array[76], array[80]);
5406     array[80] = _mm_max_ps(array[76], array[80]);
5407     array[76] = tmp;
5408     tmp = _mm_min_ps(array[0], array[2]);
5409     array[2] = _mm_max_ps(array[0], array[2]);
5410     array[0] = tmp;
5411     tmp = _mm_min_ps(array[1], array[3]);
5412     array[3] = _mm_max_ps(array[1], array[3]);
5413     array[1] = tmp;
5414     tmp = _mm_min_ps(array[4], array[6]);
5415     array[6] = _mm_max_ps(array[4], array[6]);
5416     array[4] = tmp;
5417     tmp = _mm_min_ps(array[5], array[7]);
5418     array[7] = _mm_max_ps(array[5], array[7]);
5419     array[5] = tmp;
5420     tmp = _mm_min_ps(array[8], array[10]);
5421     array[10] = _mm_max_ps(array[8], array[10]);
5422     array[8] = tmp;
5423     tmp = _mm_min_ps(array[9], array[11]);
5424     array[11] = _mm_max_ps(array[9], array[11]);
5425     array[9] = tmp;
5426     tmp = _mm_min_ps(array[12], array[14]);
5427     array[14] = _mm_max_ps(array[12], array[14]);
5428     array[12] = tmp;
5429     tmp = _mm_min_ps(array[13], array[15]);
5430     array[15] = _mm_max_ps(array[13], array[15]);
5431     array[13] = tmp;
5432     tmp = _mm_min_ps(array[16], array[18]);
5433     array[18] = _mm_max_ps(array[16], array[18]);
5434     array[16] = tmp;
5435     tmp = _mm_min_ps(array[17], array[19]);
5436     array[19] = _mm_max_ps(array[17], array[19]);
5437     array[17] = tmp;
5438     tmp = _mm_min_ps(array[20], array[22]);
5439     array[22] = _mm_max_ps(array[20], array[22]);
5440     array[20] = tmp;
5441     tmp = _mm_min_ps(array[21], array[23]);
5442     array[23] = _mm_max_ps(array[21], array[23]);
5443     array[21] = tmp;
5444     tmp = _mm_min_ps(array[24], array[26]);
5445     array[26] = _mm_max_ps(array[24], array[26]);
5446     array[24] = tmp;
5447     tmp = _mm_min_ps(array[25], array[27]);
5448     array[27] = _mm_max_ps(array[25], array[27]);
5449     array[25] = tmp;
5450     tmp = _mm_min_ps(array[28], array[30]);
5451     array[30] = _mm_max_ps(array[28], array[30]);
5452     array[28] = tmp;
5453     tmp = _mm_min_ps(array[29], array[31]);
5454     array[31] = _mm_max_ps(array[29], array[31]);
5455     array[29] = tmp;
5456     tmp = _mm_min_ps(array[32], array[34]);
5457     array[34] = _mm_max_ps(array[32], array[34]);
5458     array[32] = tmp;
5459     tmp = _mm_min_ps(array[33], array[35]);
5460     array[35] = _mm_max_ps(array[33], array[35]);
5461     array[33] = tmp;
5462     tmp = _mm_min_ps(array[36], array[38]);
5463     array[38] = _mm_max_ps(array[36], array[38]);
5464     array[36] = tmp;
5465     tmp = _mm_min_ps(array[37], array[39]);
5466     array[39] = _mm_max_ps(array[37], array[39]);
5467     array[37] = tmp;
5468     tmp = _mm_min_ps(array[40], array[42]);
5469     array[42] = _mm_max_ps(array[40], array[42]);
5470     array[40] = tmp;
5471     tmp = _mm_min_ps(array[41], array[43]);
5472     array[43] = _mm_max_ps(array[41], array[43]);
5473     array[41] = tmp;
5474     tmp = _mm_min_ps(array[44], array[46]);
5475     array[46] = _mm_max_ps(array[44], array[46]);
5476     array[44] = tmp;
5477     tmp = _mm_min_ps(array[45], array[47]);
5478     array[47] = _mm_max_ps(array[45], array[47]);
5479     array[45] = tmp;
5480     tmp = _mm_min_ps(array[48], array[50]);
5481     array[50] = _mm_max_ps(array[48], array[50]);
5482     array[48] = tmp;
5483     tmp = _mm_min_ps(array[49], array[51]);
5484     array[51] = _mm_max_ps(array[49], array[51]);
5485     array[49] = tmp;
5486     tmp = _mm_min_ps(array[52], array[54]);
5487     array[54] = _mm_max_ps(array[52], array[54]);
5488     array[52] = tmp;
5489     tmp = _mm_min_ps(array[53], array[55]);
5490     array[55] = _mm_max_ps(array[53], array[55]);
5491     array[53] = tmp;
5492     tmp = _mm_min_ps(array[56], array[58]);
5493     array[58] = _mm_max_ps(array[56], array[58]);
5494     array[56] = tmp;
5495     tmp = _mm_min_ps(array[57], array[59]);
5496     array[59] = _mm_max_ps(array[57], array[59]);
5497     array[57] = tmp;
5498     tmp = _mm_min_ps(array[60], array[62]);
5499     array[62] = _mm_max_ps(array[60], array[62]);
5500     array[60] = tmp;
5501     tmp = _mm_min_ps(array[61], array[63]);
5502     array[63] = _mm_max_ps(array[61], array[63]);
5503     array[61] = tmp;
5504     tmp = _mm_min_ps(array[64], array[66]);
5505     array[66] = _mm_max_ps(array[64], array[66]);
5506     array[64] = tmp;
5507     tmp = _mm_min_ps(array[65], array[67]);
5508     array[67] = _mm_max_ps(array[65], array[67]);
5509     array[65] = tmp;
5510     tmp = _mm_min_ps(array[68], array[70]);
5511     array[70] = _mm_max_ps(array[68], array[70]);
5512     array[68] = tmp;
5513     tmp = _mm_min_ps(array[69], array[71]);
5514     array[71] = _mm_max_ps(array[69], array[71]);
5515     array[69] = tmp;
5516     tmp = _mm_min_ps(array[72], array[74]);
5517     array[74] = _mm_max_ps(array[72], array[74]);
5518     array[72] = tmp;
5519     tmp = _mm_min_ps(array[73], array[75]);
5520     array[75] = _mm_max_ps(array[73], array[75]);
5521     array[73] = tmp;
5522     tmp = _mm_min_ps(array[76], array[78]);
5523     array[78] = _mm_max_ps(array[76], array[78]);
5524     array[76] = tmp;
5525     tmp = _mm_min_ps(array[77], array[79]);
5526     array[79] = _mm_max_ps(array[77], array[79]);
5527     array[77] = tmp;
5528     tmp = _mm_min_ps(array[2], array[64]);
5529     array[64] = _mm_max_ps(array[2], array[64]);
5530     array[2] = tmp;
5531     tmp = _mm_min_ps(array[3], array[65]);
5532     array[65] = _mm_max_ps(array[3], array[65]);
5533     array[3] = tmp;
5534     tmp = _mm_min_ps(array[6], array[68]);
5535     array[68] = _mm_max_ps(array[6], array[68]);
5536     array[6] = tmp;
5537     tmp = _mm_min_ps(array[7], array[69]);
5538     array[69] = _mm_max_ps(array[7], array[69]);
5539     array[7] = tmp;
5540     tmp = _mm_min_ps(array[10], array[72]);
5541     array[72] = _mm_max_ps(array[10], array[72]);
5542     array[10] = tmp;
5543     tmp = _mm_min_ps(array[11], array[73]);
5544     array[73] = _mm_max_ps(array[11], array[73]);
5545     array[11] = tmp;
5546     tmp = _mm_min_ps(array[14], array[76]);
5547     array[76] = _mm_max_ps(array[14], array[76]);
5548     array[14] = tmp;
5549     tmp = _mm_min_ps(array[15], array[77]);
5550     array[77] = _mm_max_ps(array[15], array[77]);
5551     array[15] = tmp;
5552     tmp = _mm_min_ps(array[18], array[80]);
5553     array[80] = _mm_max_ps(array[18], array[80]);
5554     array[18] = tmp;
5555     tmp = _mm_min_ps(array[2], array[32]);
5556     array[32] = _mm_max_ps(array[2], array[32]);
5557     array[2] = tmp;
5558     tmp = _mm_min_ps(array[3], array[33]);
5559     array[33] = _mm_max_ps(array[3], array[33]);
5560     array[3] = tmp;
5561     tmp = _mm_min_ps(array[6], array[36]);
5562     array[36] = _mm_max_ps(array[6], array[36]);
5563     array[6] = tmp;
5564     tmp = _mm_min_ps(array[7], array[37]);
5565     array[37] = _mm_max_ps(array[7], array[37]);
5566     array[7] = tmp;
5567     tmp = _mm_min_ps(array[10], array[40]);
5568     array[40] = _mm_max_ps(array[10], array[40]);
5569     array[10] = tmp;
5570     tmp = _mm_min_ps(array[11], array[41]);
5571     array[41] = _mm_max_ps(array[11], array[41]);
5572     array[11] = tmp;
5573     tmp = _mm_min_ps(array[14], array[44]);
5574     array[44] = _mm_max_ps(array[14], array[44]);
5575     array[14] = tmp;
5576     tmp = _mm_min_ps(array[15], array[45]);
5577     array[45] = _mm_max_ps(array[15], array[45]);
5578     array[15] = tmp;
5579     tmp = _mm_min_ps(array[18], array[48]);
5580     array[48] = _mm_max_ps(array[18], array[48]);
5581     array[18] = tmp;
5582     tmp = _mm_min_ps(array[19], array[49]);
5583     array[49] = _mm_max_ps(array[19], array[49]);
5584     array[19] = tmp;
5585     tmp = _mm_min_ps(array[22], array[52]);
5586     array[52] = _mm_max_ps(array[22], array[52]);
5587     array[22] = tmp;
5588     tmp = _mm_min_ps(array[23], array[53]);
5589     array[53] = _mm_max_ps(array[23], array[53]);
5590     array[23] = tmp;
5591     tmp = _mm_min_ps(array[26], array[56]);
5592     array[56] = _mm_max_ps(array[26], array[56]);
5593     array[26] = tmp;
5594     tmp = _mm_min_ps(array[27], array[57]);
5595     array[57] = _mm_max_ps(array[27], array[57]);
5596     array[27] = tmp;
5597     tmp = _mm_min_ps(array[30], array[60]);
5598     array[60] = _mm_max_ps(array[30], array[60]);
5599     array[30] = tmp;
5600     tmp = _mm_min_ps(array[31], array[61]);
5601     array[61] = _mm_max_ps(array[31], array[61]);
5602     array[31] = tmp;
5603     tmp = _mm_min_ps(array[34], array[64]);
5604     array[64] = _mm_max_ps(array[34], array[64]);
5605     array[34] = tmp;
5606     tmp = _mm_min_ps(array[35], array[65]);
5607     array[65] = _mm_max_ps(array[35], array[65]);
5608     array[35] = tmp;
5609     tmp = _mm_min_ps(array[38], array[68]);
5610     array[68] = _mm_max_ps(array[38], array[68]);
5611     array[38] = tmp;
5612     tmp = _mm_min_ps(array[39], array[69]);
5613     array[69] = _mm_max_ps(array[39], array[69]);
5614     array[39] = tmp;
5615     tmp = _mm_min_ps(array[42], array[72]);
5616     array[72] = _mm_max_ps(array[42], array[72]);
5617     array[42] = tmp;
5618     tmp = _mm_min_ps(array[43], array[73]);
5619     array[73] = _mm_max_ps(array[43], array[73]);
5620     array[43] = tmp;
5621     tmp = _mm_min_ps(array[46], array[76]);
5622     array[76] = _mm_max_ps(array[46], array[76]);
5623     array[46] = tmp;
5624     tmp = _mm_min_ps(array[47], array[77]);
5625     array[77] = _mm_max_ps(array[47], array[77]);
5626     array[47] = tmp;
5627     tmp = _mm_min_ps(array[50], array[80]);
5628     array[80] = _mm_max_ps(array[50], array[80]);
5629     array[50] = tmp;
5630     tmp = _mm_min_ps(array[2], array[16]);
5631     array[16] = _mm_max_ps(array[2], array[16]);
5632     array[2] = tmp;
5633     tmp = _mm_min_ps(array[3], array[17]);
5634     array[17] = _mm_max_ps(array[3], array[17]);
5635     array[3] = tmp;
5636     tmp = _mm_min_ps(array[6], array[20]);
5637     array[20] = _mm_max_ps(array[6], array[20]);
5638     array[6] = tmp;
5639     tmp = _mm_min_ps(array[7], array[21]);
5640     array[21] = _mm_max_ps(array[7], array[21]);
5641     array[7] = tmp;
5642     tmp = _mm_min_ps(array[10], array[24]);
5643     array[24] = _mm_max_ps(array[10], array[24]);
5644     array[10] = tmp;
5645     tmp = _mm_min_ps(array[11], array[25]);
5646     array[25] = _mm_max_ps(array[11], array[25]);
5647     array[11] = tmp;
5648     tmp = _mm_min_ps(array[14], array[28]);
5649     array[28] = _mm_max_ps(array[14], array[28]);
5650     array[14] = tmp;
5651     tmp = _mm_min_ps(array[15], array[29]);
5652     array[29] = _mm_max_ps(array[15], array[29]);
5653     array[15] = tmp;
5654     tmp = _mm_min_ps(array[18], array[32]);
5655     array[32] = _mm_max_ps(array[18], array[32]);
5656     array[18] = tmp;
5657     tmp = _mm_min_ps(array[19], array[33]);
5658     array[33] = _mm_max_ps(array[19], array[33]);
5659     array[19] = tmp;
5660     tmp = _mm_min_ps(array[22], array[36]);
5661     array[36] = _mm_max_ps(array[22], array[36]);
5662     array[22] = tmp;
5663     tmp = _mm_min_ps(array[23], array[37]);
5664     array[37] = _mm_max_ps(array[23], array[37]);
5665     array[23] = tmp;
5666     tmp = _mm_min_ps(array[26], array[40]);
5667     array[40] = _mm_max_ps(array[26], array[40]);
5668     array[26] = tmp;
5669     tmp = _mm_min_ps(array[27], array[41]);
5670     array[41] = _mm_max_ps(array[27], array[41]);
5671     array[27] = tmp;
5672     tmp = _mm_min_ps(array[30], array[44]);
5673     array[44] = _mm_max_ps(array[30], array[44]);
5674     array[30] = tmp;
5675     tmp = _mm_min_ps(array[31], array[45]);
5676     array[45] = _mm_max_ps(array[31], array[45]);
5677     array[31] = tmp;
5678     tmp = _mm_min_ps(array[34], array[48]);
5679     array[48] = _mm_max_ps(array[34], array[48]);
5680     array[34] = tmp;
5681     tmp = _mm_min_ps(array[35], array[49]);
5682     array[49] = _mm_max_ps(array[35], array[49]);
5683     array[35] = tmp;
5684     tmp = _mm_min_ps(array[38], array[52]);
5685     array[52] = _mm_max_ps(array[38], array[52]);
5686     array[38] = tmp;
5687     tmp = _mm_min_ps(array[39], array[53]);
5688     array[53] = _mm_max_ps(array[39], array[53]);
5689     array[39] = tmp;
5690     tmp = _mm_min_ps(array[42], array[56]);
5691     array[56] = _mm_max_ps(array[42], array[56]);
5692     array[42] = tmp;
5693     tmp = _mm_min_ps(array[43], array[57]);
5694     array[57] = _mm_max_ps(array[43], array[57]);
5695     array[43] = tmp;
5696     tmp = _mm_min_ps(array[46], array[60]);
5697     array[60] = _mm_max_ps(array[46], array[60]);
5698     array[46] = tmp;
5699     tmp = _mm_min_ps(array[47], array[61]);
5700     array[61] = _mm_max_ps(array[47], array[61]);
5701     array[47] = tmp;
5702     tmp = _mm_min_ps(array[50], array[64]);
5703     array[64] = _mm_max_ps(array[50], array[64]);
5704     array[50] = tmp;
5705     tmp = _mm_min_ps(array[51], array[65]);
5706     array[65] = _mm_max_ps(array[51], array[65]);
5707     array[51] = tmp;
5708     tmp = _mm_min_ps(array[54], array[68]);
5709     array[68] = _mm_max_ps(array[54], array[68]);
5710     array[54] = tmp;
5711     tmp = _mm_min_ps(array[55], array[69]);
5712     array[69] = _mm_max_ps(array[55], array[69]);
5713     array[55] = tmp;
5714     tmp = _mm_min_ps(array[58], array[72]);
5715     array[72] = _mm_max_ps(array[58], array[72]);
5716     array[58] = tmp;
5717     tmp = _mm_min_ps(array[59], array[73]);
5718     array[73] = _mm_max_ps(array[59], array[73]);
5719     array[59] = tmp;
5720     tmp = _mm_min_ps(array[62], array[76]);
5721     array[76] = _mm_max_ps(array[62], array[76]);
5722     array[62] = tmp;
5723     tmp = _mm_min_ps(array[63], array[77]);
5724     array[77] = _mm_max_ps(array[63], array[77]);
5725     array[63] = tmp;
5726     tmp = _mm_min_ps(array[66], array[80]);
5727     array[80] = _mm_max_ps(array[66], array[80]);
5728     array[66] = tmp;
5729     tmp = _mm_min_ps(array[2], array[8]);
5730     array[8] = _mm_max_ps(array[2], array[8]);
5731     array[2] = tmp;
5732     tmp = _mm_min_ps(array[3], array[9]);
5733     array[9] = _mm_max_ps(array[3], array[9]);
5734     array[3] = tmp;
5735     tmp = _mm_min_ps(array[6], array[12]);
5736     array[12] = _mm_max_ps(array[6], array[12]);
5737     array[6] = tmp;
5738     tmp = _mm_min_ps(array[7], array[13]);
5739     array[13] = _mm_max_ps(array[7], array[13]);
5740     array[7] = tmp;
5741     tmp = _mm_min_ps(array[10], array[16]);
5742     array[16] = _mm_max_ps(array[10], array[16]);
5743     array[10] = tmp;
5744     tmp = _mm_min_ps(array[11], array[17]);
5745     array[17] = _mm_max_ps(array[11], array[17]);
5746     array[11] = tmp;
5747     tmp = _mm_min_ps(array[14], array[20]);
5748     array[20] = _mm_max_ps(array[14], array[20]);
5749     array[14] = tmp;
5750     tmp = _mm_min_ps(array[15], array[21]);
5751     array[21] = _mm_max_ps(array[15], array[21]);
5752     array[15] = tmp;
5753     tmp = _mm_min_ps(array[18], array[24]);
5754     array[24] = _mm_max_ps(array[18], array[24]);
5755     array[18] = tmp;
5756     tmp = _mm_min_ps(array[19], array[25]);
5757     array[25] = _mm_max_ps(array[19], array[25]);
5758     array[19] = tmp;
5759     tmp = _mm_min_ps(array[22], array[28]);
5760     array[28] = _mm_max_ps(array[22], array[28]);
5761     array[22] = tmp;
5762     tmp = _mm_min_ps(array[23], array[29]);
5763     array[29] = _mm_max_ps(array[23], array[29]);
5764     array[23] = tmp;
5765     tmp = _mm_min_ps(array[26], array[32]);
5766     array[32] = _mm_max_ps(array[26], array[32]);
5767     array[26] = tmp;
5768     tmp = _mm_min_ps(array[27], array[33]);
5769     array[33] = _mm_max_ps(array[27], array[33]);
5770     array[27] = tmp;
5771     tmp = _mm_min_ps(array[30], array[36]);
5772     array[36] = _mm_max_ps(array[30], array[36]);
5773     array[30] = tmp;
5774     tmp = _mm_min_ps(array[31], array[37]);
5775     array[37] = _mm_max_ps(array[31], array[37]);
5776     array[31] = tmp;
5777     tmp = _mm_min_ps(array[34], array[40]);
5778     array[40] = _mm_max_ps(array[34], array[40]);
5779     array[34] = tmp;
5780     tmp = _mm_min_ps(array[35], array[41]);
5781     array[41] = _mm_max_ps(array[35], array[41]);
5782     array[35] = tmp;
5783     tmp = _mm_min_ps(array[38], array[44]);
5784     array[44] = _mm_max_ps(array[38], array[44]);
5785     array[38] = tmp;
5786     tmp = _mm_min_ps(array[39], array[45]);
5787     array[45] = _mm_max_ps(array[39], array[45]);
5788     array[39] = tmp;
5789     tmp = _mm_min_ps(array[42], array[48]);
5790     array[48] = _mm_max_ps(array[42], array[48]);
5791     array[42] = tmp;
5792     tmp = _mm_min_ps(array[43], array[49]);
5793     array[49] = _mm_max_ps(array[43], array[49]);
5794     array[43] = tmp;
5795     tmp = _mm_min_ps(array[46], array[52]);
5796     array[52] = _mm_max_ps(array[46], array[52]);
5797     array[46] = tmp;
5798     tmp = _mm_min_ps(array[47], array[53]);
5799     array[53] = _mm_max_ps(array[47], array[53]);
5800     array[47] = tmp;
5801     tmp = _mm_min_ps(array[50], array[56]);
5802     array[56] = _mm_max_ps(array[50], array[56]);
5803     array[50] = tmp;
5804     tmp = _mm_min_ps(array[51], array[57]);
5805     array[57] = _mm_max_ps(array[51], array[57]);
5806     array[51] = tmp;
5807     tmp = _mm_min_ps(array[54], array[60]);
5808     array[60] = _mm_max_ps(array[54], array[60]);
5809     array[54] = tmp;
5810     tmp = _mm_min_ps(array[55], array[61]);
5811     array[61] = _mm_max_ps(array[55], array[61]);
5812     array[55] = tmp;
5813     tmp = _mm_min_ps(array[58], array[64]);
5814     array[64] = _mm_max_ps(array[58], array[64]);
5815     array[58] = tmp;
5816     tmp = _mm_min_ps(array[59], array[65]);
5817     array[65] = _mm_max_ps(array[59], array[65]);
5818     array[59] = tmp;
5819     tmp = _mm_min_ps(array[62], array[68]);
5820     array[68] = _mm_max_ps(array[62], array[68]);
5821     array[62] = tmp;
5822     tmp = _mm_min_ps(array[63], array[69]);
5823     array[69] = _mm_max_ps(array[63], array[69]);
5824     array[63] = tmp;
5825     tmp = _mm_min_ps(array[66], array[72]);
5826     array[72] = _mm_max_ps(array[66], array[72]);
5827     array[66] = tmp;
5828     tmp = _mm_min_ps(array[67], array[73]);
5829     array[73] = _mm_max_ps(array[67], array[73]);
5830     array[67] = tmp;
5831     tmp = _mm_min_ps(array[70], array[76]);
5832     array[76] = _mm_max_ps(array[70], array[76]);
5833     array[70] = tmp;
5834     tmp = _mm_min_ps(array[71], array[77]);
5835     array[77] = _mm_max_ps(array[71], array[77]);
5836     array[71] = tmp;
5837     tmp = _mm_min_ps(array[74], array[80]);
5838     array[80] = _mm_max_ps(array[74], array[80]);
5839     array[74] = tmp;
5840     tmp = _mm_min_ps(array[2], array[4]);
5841     array[4] = _mm_max_ps(array[2], array[4]);
5842     array[2] = tmp;
5843     tmp = _mm_min_ps(array[3], array[5]);
5844     array[5] = _mm_max_ps(array[3], array[5]);
5845     array[3] = tmp;
5846     tmp = _mm_min_ps(array[6], array[8]);
5847     array[8] = _mm_max_ps(array[6], array[8]);
5848     array[6] = tmp;
5849     tmp = _mm_min_ps(array[7], array[9]);
5850     array[9] = _mm_max_ps(array[7], array[9]);
5851     array[7] = tmp;
5852     tmp = _mm_min_ps(array[10], array[12]);
5853     array[12] = _mm_max_ps(array[10], array[12]);
5854     array[10] = tmp;
5855     tmp = _mm_min_ps(array[11], array[13]);
5856     array[13] = _mm_max_ps(array[11], array[13]);
5857     array[11] = tmp;
5858     tmp = _mm_min_ps(array[14], array[16]);
5859     array[16] = _mm_max_ps(array[14], array[16]);
5860     array[14] = tmp;
5861     tmp = _mm_min_ps(array[15], array[17]);
5862     array[17] = _mm_max_ps(array[15], array[17]);
5863     array[15] = tmp;
5864     tmp = _mm_min_ps(array[18], array[20]);
5865     array[20] = _mm_max_ps(array[18], array[20]);
5866     array[18] = tmp;
5867     tmp = _mm_min_ps(array[19], array[21]);
5868     array[21] = _mm_max_ps(array[19], array[21]);
5869     array[19] = tmp;
5870     tmp = _mm_min_ps(array[22], array[24]);
5871     array[24] = _mm_max_ps(array[22], array[24]);
5872     array[22] = tmp;
5873     tmp = _mm_min_ps(array[23], array[25]);
5874     array[25] = _mm_max_ps(array[23], array[25]);
5875     array[23] = tmp;
5876     tmp = _mm_min_ps(array[26], array[28]);
5877     array[28] = _mm_max_ps(array[26], array[28]);
5878     array[26] = tmp;
5879     tmp = _mm_min_ps(array[27], array[29]);
5880     array[29] = _mm_max_ps(array[27], array[29]);
5881     array[27] = tmp;
5882     tmp = _mm_min_ps(array[30], array[32]);
5883     array[32] = _mm_max_ps(array[30], array[32]);
5884     array[30] = tmp;
5885     tmp = _mm_min_ps(array[31], array[33]);
5886     array[33] = _mm_max_ps(array[31], array[33]);
5887     array[31] = tmp;
5888     tmp = _mm_min_ps(array[34], array[36]);
5889     array[36] = _mm_max_ps(array[34], array[36]);
5890     array[34] = tmp;
5891     tmp = _mm_min_ps(array[35], array[37]);
5892     array[37] = _mm_max_ps(array[35], array[37]);
5893     array[35] = tmp;
5894     tmp = _mm_min_ps(array[38], array[40]);
5895     array[40] = _mm_max_ps(array[38], array[40]);
5896     array[38] = tmp;
5897     tmp = _mm_min_ps(array[39], array[41]);
5898     array[41] = _mm_max_ps(array[39], array[41]);
5899     array[39] = tmp;
5900     tmp = _mm_min_ps(array[42], array[44]);
5901     array[44] = _mm_max_ps(array[42], array[44]);
5902     array[42] = tmp;
5903     tmp = _mm_min_ps(array[43], array[45]);
5904     array[45] = _mm_max_ps(array[43], array[45]);
5905     array[43] = tmp;
5906     tmp = _mm_min_ps(array[46], array[48]);
5907     array[48] = _mm_max_ps(array[46], array[48]);
5908     array[46] = tmp;
5909     tmp = _mm_min_ps(array[47], array[49]);
5910     array[49] = _mm_max_ps(array[47], array[49]);
5911     array[47] = tmp;
5912     tmp = _mm_min_ps(array[50], array[52]);
5913     array[52] = _mm_max_ps(array[50], array[52]);
5914     array[50] = tmp;
5915     tmp = _mm_min_ps(array[51], array[53]);
5916     array[53] = _mm_max_ps(array[51], array[53]);
5917     array[51] = tmp;
5918     tmp = _mm_min_ps(array[54], array[56]);
5919     array[56] = _mm_max_ps(array[54], array[56]);
5920     array[54] = tmp;
5921     tmp = _mm_min_ps(array[55], array[57]);
5922     array[57] = _mm_max_ps(array[55], array[57]);
5923     array[55] = tmp;
5924     tmp = _mm_min_ps(array[58], array[60]);
5925     array[60] = _mm_max_ps(array[58], array[60]);
5926     array[58] = tmp;
5927     tmp = _mm_min_ps(array[59], array[61]);
5928     array[61] = _mm_max_ps(array[59], array[61]);
5929     array[59] = tmp;
5930     tmp = _mm_min_ps(array[62], array[64]);
5931     array[64] = _mm_max_ps(array[62], array[64]);
5932     array[62] = tmp;
5933     tmp = _mm_min_ps(array[63], array[65]);
5934     array[65] = _mm_max_ps(array[63], array[65]);
5935     array[63] = tmp;
5936     tmp = _mm_min_ps(array[66], array[68]);
5937     array[68] = _mm_max_ps(array[66], array[68]);
5938     array[66] = tmp;
5939     tmp = _mm_min_ps(array[67], array[69]);
5940     array[69] = _mm_max_ps(array[67], array[69]);
5941     array[67] = tmp;
5942     tmp = _mm_min_ps(array[70], array[72]);
5943     array[72] = _mm_max_ps(array[70], array[72]);
5944     array[70] = tmp;
5945     tmp = _mm_min_ps(array[71], array[73]);
5946     array[73] = _mm_max_ps(array[71], array[73]);
5947     array[71] = tmp;
5948     tmp = _mm_min_ps(array[74], array[76]);
5949     array[76] = _mm_max_ps(array[74], array[76]);
5950     array[74] = tmp;
5951     tmp = _mm_min_ps(array[75], array[77]);
5952     array[77] = _mm_max_ps(array[75], array[77]);
5953     array[75] = tmp;
5954     tmp = _mm_min_ps(array[78], array[80]);
5955     array[80] = _mm_max_ps(array[78], array[80]);
5956     array[78] = tmp;
5957     array[1] = _mm_max_ps(array[0], array[1]);
5958     array[3] = _mm_max_ps(array[2], array[3]);
5959     array[5] = _mm_max_ps(array[4], array[5]);
5960     array[7] = _mm_max_ps(array[6], array[7]);
5961     array[9] = _mm_max_ps(array[8], array[9]);
5962     array[11] = _mm_max_ps(array[10], array[11]);
5963     array[13] = _mm_max_ps(array[12], array[13]);
5964     array[15] = _mm_max_ps(array[14], array[15]);
5965     array[17] = _mm_max_ps(array[16], array[17]);
5966     array[19] = _mm_max_ps(array[18], array[19]);
5967     array[21] = _mm_max_ps(array[20], array[21]);
5968     array[23] = _mm_max_ps(array[22], array[23]);
5969     array[25] = _mm_max_ps(array[24], array[25]);
5970     array[27] = _mm_max_ps(array[26], array[27]);
5971     array[29] = _mm_max_ps(array[28], array[29]);
5972     array[31] = _mm_max_ps(array[30], array[31]);
5973     array[33] = _mm_max_ps(array[32], array[33]);
5974     array[35] = _mm_max_ps(array[34], array[35]);
5975     array[37] = _mm_max_ps(array[36], array[37]);
5976     array[39] = _mm_max_ps(array[38], array[39]);
5977     array[40] = _mm_min_ps(array[40], array[41]);
5978     array[42] = _mm_min_ps(array[42], array[43]);
5979     array[44] = _mm_min_ps(array[44], array[45]);
5980     array[46] = _mm_min_ps(array[46], array[47]);
5981     array[48] = _mm_min_ps(array[48], array[49]);
5982     array[50] = _mm_min_ps(array[50], array[51]);
5983     array[52] = _mm_min_ps(array[52], array[53]);
5984     array[54] = _mm_min_ps(array[54], array[55]);
5985     array[56] = _mm_min_ps(array[56], array[57]);
5986     array[58] = _mm_min_ps(array[58], array[59]);
5987     array[60] = _mm_min_ps(array[60], array[61]);
5988     array[62] = _mm_min_ps(array[62], array[63]);
5989     array[64] = _mm_min_ps(array[64], array[65]);
5990     array[66] = _mm_min_ps(array[66], array[67]);
5991     array[68] = _mm_min_ps(array[68], array[69]);
5992     array[70] = _mm_min_ps(array[70], array[71]);
5993     array[72] = _mm_min_ps(array[72], array[73]);
5994     array[74] = _mm_min_ps(array[74], array[75]);
5995     array[76] = _mm_min_ps(array[76], array[77]);
5996     array[78] = _mm_min_ps(array[78], array[79]);
5997     array[64] = _mm_max_ps(array[1], array[64]);
5998     array[66] = _mm_max_ps(array[3], array[66]);
5999     array[68] = _mm_max_ps(array[5], array[68]);
6000     array[70] = _mm_max_ps(array[7], array[70]);
6001     array[9] = _mm_min_ps(array[9], array[72]);
6002     array[11] = _mm_min_ps(array[11], array[74]);
6003     array[13] = _mm_min_ps(array[13], array[76]);
6004     array[15] = _mm_min_ps(array[15], array[78]);
6005     array[17] = _mm_min_ps(array[17], array[80]);
6006     array[40] = _mm_max_ps(array[9], array[40]);
6007     array[42] = _mm_max_ps(array[11], array[42]);
6008     array[44] = _mm_max_ps(array[13], array[44]);
6009     array[46] = _mm_max_ps(array[15], array[46]);
6010     array[48] = _mm_max_ps(array[17], array[48]);
6011     array[50] = _mm_max_ps(array[19], array[50]);
6012     array[52] = _mm_max_ps(array[21], array[52]);
6013     array[54] = _mm_max_ps(array[23], array[54]);
6014     array[25] = _mm_min_ps(array[25], array[56]);
6015     array[27] = _mm_min_ps(array[27], array[58]);
6016     array[29] = _mm_min_ps(array[29], array[60]);
6017     array[31] = _mm_min_ps(array[31], array[62]);
6018     array[33] = _mm_min_ps(array[33], array[64]);
6019     array[35] = _mm_min_ps(array[35], array[66]);
6020     array[37] = _mm_min_ps(array[37], array[68]);
6021     array[39] = _mm_min_ps(array[39], array[70]);
6022     array[40] = _mm_max_ps(array[25], array[40]);
6023     array[42] = _mm_max_ps(array[27], array[42]);
6024     array[44] = _mm_max_ps(array[29], array[44]);
6025     array[46] = _mm_max_ps(array[31], array[46]);
6026     array[33] = _mm_min_ps(array[33], array[48]);
6027     array[35] = _mm_min_ps(array[35], array[50]);
6028     array[37] = _mm_min_ps(array[37], array[52]);
6029     array[39] = _mm_min_ps(array[39], array[54]);
6030     array[40] = _mm_max_ps(array[33], array[40]);
6031     array[42] = _mm_max_ps(array[35], array[42]);
6032     array[37] = _mm_min_ps(array[37], array[44]);
6033     array[39] = _mm_min_ps(array[39], array[46]);
6034     array[40] = _mm_max_ps(array[37], array[40]);
6035     array[39] = _mm_min_ps(array[39], array[42]);
6036     return _mm_max_ps(array[39], array[40]);
6037 }
6038 #endif
6039