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