1/* This is AGAST and OAST, an optimal and accelerated corner detector
2              based on the accelerated segment tests
3   Below is the original copyright and the references */
4
5/*
6Copyright (C) 2010  Elmar Mair
7All rights reserved.
8
9Redistribution and use in source and binary forms, with or without
10modification, are permitted provided that the following conditions
11are met:
12
13    *Redistributions of source code must retain the above copyright
14     notice, this list of conditions and the following disclaimer.
15
16    *Redistributions in binary form must reproduce the above copyright
17     notice, this list of conditions and the following disclaimer in the
18     documentation and/or other materials provided with the distribution.
19
20    *Neither the name of the University of Cambridge nor the names of
21     its contributors may be used to endorse or promote products derived
22     from this software without specific prior written permission.
23
24THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
25"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
26LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
27A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
28CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
29EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
30PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
31PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
32LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
33NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
34SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35*/
36
37/*
38The references are:
39 * Adaptive and Generic Corner Detection Based on the Accelerated Segment Test,
40   Elmar Mair and Gregory D. Hager and Darius Burschka
41   and Michael Suppa and Gerhard Hirzinger ECCV 2010
42   URL: http://www6.in.tum.de/Main/ResearchAgast
43*/
44
45#include "precomp.hpp"
46#include "agast_score.hpp"
47
48#ifdef _WIN32
49#pragma warning( disable : 4127 )
50#endif
51
52namespace cv
53{
54
55static void AGAST_5_8(InputArray _img, std::vector<KeyPoint>& keypoints, int threshold)
56{
57
58    cv::Mat img;
59    if(!_img.getMat().isContinuous())
60      img = _img.getMat().clone();
61    else
62      img = _img.getMat();
63
64    size_t total = 0;
65    int xsize = img.cols;
66    int ysize = img.rows;
67    size_t nExpectedCorners = keypoints.capacity();
68    register int x, y;
69    register int xsizeB = xsize - 2;
70    register int ysizeB = ysize - 1;
71    register int width;
72
73    keypoints.resize(0);
74
75    int pixel_5_8_[16];
76    makeAgastOffsets(pixel_5_8_, (int)img.step, AgastFeatureDetector::AGAST_5_8);
77
78    register short offset0 = (short) pixel_5_8_[0];
79    register short offset1 = (short) pixel_5_8_[1];
80    register short offset2 = (short) pixel_5_8_[2];
81    register short offset3 = (short) pixel_5_8_[3];
82    register short offset4 = (short) pixel_5_8_[4];
83    register short offset5 = (short) pixel_5_8_[5];
84    register short offset6 = (short) pixel_5_8_[6];
85    register short offset7 = (short) pixel_5_8_[7];
86
87    width = xsize;
88
89    for(y = 1; y < ysizeB; y++)
90    {
91        x = 0;
92        while(true)
93        {
94          homogeneous:
95          {
96            x++;
97            if(x > xsizeB)
98                break;
99            else
100            {
101                register const unsigned char* const ptr = img.ptr() + y*width + x;
102                register const int cb = *ptr + threshold;
103                register const int c_b = *ptr - threshold;
104                if(ptr[offset0] > cb)
105                  if(ptr[offset2] > cb)
106                    if(ptr[offset3] > cb)
107                      if(ptr[offset5] > cb)
108                        if(ptr[offset1] > cb)
109                          if(ptr[offset4] > cb)
110                            goto success_structured;
111                          else
112                            if(ptr[offset7] > cb)
113                              goto success_structured;
114                            else
115                              goto homogeneous;
116                        else
117                          if(ptr[offset4] > cb)
118                            if(ptr[offset6] > cb)
119                              goto success_structured;
120                            else
121                              goto homogeneous;
122                          else
123                            goto homogeneous;
124                      else
125                        if(ptr[offset1] > cb)
126                          if(ptr[offset4] > cb)
127                            goto success_homogeneous;
128                          else
129                            if(ptr[offset7] > cb)
130                              goto success_homogeneous;
131                            else
132                              goto homogeneous;
133                        else
134                          goto homogeneous;
135                    else
136                      if(ptr[offset7] > cb)
137                        if(ptr[offset6] > cb)
138                          if(ptr[offset5] > cb)
139                            if(ptr[offset1] > cb)
140                              goto success_structured;
141                            else
142                              if(ptr[offset4] > cb)
143                                goto success_structured;
144                              else
145                                goto homogeneous;
146                          else
147                            if(ptr[offset1] > cb)
148                              goto success_homogeneous;
149                            else
150                              goto homogeneous;
151                        else
152                          goto homogeneous;
153                      else
154                        if(ptr[offset5] < c_b)
155                          if(ptr[offset3] < c_b)
156                            if(ptr[offset7] < c_b)
157                              if(ptr[offset4] < c_b)
158                                if(ptr[offset6] < c_b)
159                                  goto success_structured;
160                                else
161                                  goto structured;
162                              else
163                                goto homogeneous;
164                            else
165                              goto homogeneous;
166                          else
167                            goto homogeneous;
168                        else
169                          goto homogeneous;
170                  else
171                    if(ptr[offset5] > cb)
172                      if(ptr[offset7] > cb)
173                        if(ptr[offset6] > cb)
174                          if(ptr[offset1] > cb)
175                            goto success_homogeneous;
176                          else
177                            if(ptr[offset4] > cb)
178                              goto success_homogeneous;
179                            else
180                              goto homogeneous;
181                        else
182                          goto homogeneous;
183                      else
184                        goto homogeneous;
185                    else
186                      if(ptr[offset5] < c_b)
187                        if(ptr[offset3] < c_b)
188                          if(ptr[offset2] < c_b)
189                            if(ptr[offset1] < c_b)
190                              if(ptr[offset4] < c_b)
191                                goto success_structured;
192                              else
193                                goto homogeneous;
194                            else
195                              if(ptr[offset4] < c_b)
196                                if(ptr[offset6] < c_b)
197                                  goto success_structured;
198                                else
199                                  goto homogeneous;
200                              else
201                                goto homogeneous;
202                          else
203                            if(ptr[offset7] < c_b)
204                              if(ptr[offset4] < c_b)
205                                if(ptr[offset6] < c_b)
206                                  goto success_structured;
207                                else
208                                  goto homogeneous;
209                              else
210                                goto homogeneous;
211                            else
212                              goto homogeneous;
213                        else
214                          goto homogeneous;
215                      else
216                        goto homogeneous;
217                else if(ptr[offset0] < c_b)
218                  if(ptr[offset2] < c_b)
219                    if(ptr[offset7] > cb)
220                      if(ptr[offset3] < c_b)
221                        if(ptr[offset5] < c_b)
222                          if(ptr[offset1] < c_b)
223                            if(ptr[offset4] < c_b)
224                              goto success_structured;
225                            else
226                              goto structured;
227                          else
228                            if(ptr[offset4] < c_b)
229                              if(ptr[offset6] < c_b)
230                                goto success_structured;
231                              else
232                                goto structured;
233                            else
234                              goto homogeneous;
235                        else
236                          if(ptr[offset1] < c_b)
237                            if(ptr[offset4] < c_b)
238                              goto success_structured;
239                            else
240                              goto homogeneous;
241                          else
242                            goto homogeneous;
243                      else
244                        if(ptr[offset5] > cb)
245                          if(ptr[offset3] > cb)
246                            if(ptr[offset4] > cb)
247                              if(ptr[offset6] > cb)
248                                goto success_structured;
249                              else
250                                goto structured;
251                            else
252                              goto homogeneous;
253                          else
254                            goto homogeneous;
255                        else
256                          goto homogeneous;
257                    else
258                      if(ptr[offset7] < c_b)
259                        if(ptr[offset3] < c_b)
260                          if(ptr[offset5] < c_b)
261                            if(ptr[offset1] < c_b)
262                              goto success_structured;
263                            else
264                              if(ptr[offset4] < c_b)
265                                if(ptr[offset6] < c_b)
266                                  goto success_structured;
267                                else
268                                  goto structured;
269                              else
270                                goto homogeneous;
271                          else
272                            if(ptr[offset1] < c_b)
273                              goto success_homogeneous;
274                            else
275                              goto homogeneous;
276                        else
277                          if(ptr[offset6] < c_b)
278                            if(ptr[offset5] < c_b)
279                              if(ptr[offset1] < c_b)
280                                goto success_structured;
281                              else
282                                if(ptr[offset4] < c_b)
283                                  goto success_structured;
284                                else
285                                  goto homogeneous;
286                            else
287                              if(ptr[offset1] < c_b)
288                                goto success_homogeneous;
289                              else
290                                goto homogeneous;
291                          else
292                            goto homogeneous;
293                      else
294                        if(ptr[offset3] < c_b)
295                          if(ptr[offset5] < c_b)
296                            if(ptr[offset1] < c_b)
297                              if(ptr[offset4] < c_b)
298                                goto success_structured;
299                              else
300                                goto homogeneous;
301                            else
302                              if(ptr[offset4] < c_b)
303                                if(ptr[offset6] < c_b)
304                                  goto success_structured;
305                                else
306                                  goto homogeneous;
307                              else
308                                goto homogeneous;
309                          else
310                            if(ptr[offset1] < c_b)
311                              if(ptr[offset4] < c_b)
312                                goto success_homogeneous;
313                              else
314                                goto homogeneous;
315                            else
316                              goto homogeneous;
317                        else
318                          goto homogeneous;
319                  else
320                    if(ptr[offset5] > cb)
321                      if(ptr[offset3] > cb)
322                        if(ptr[offset2] > cb)
323                          if(ptr[offset1] > cb)
324                            if(ptr[offset4] > cb)
325                              goto success_structured;
326                            else
327                              goto homogeneous;
328                          else
329                            if(ptr[offset4] > cb)
330                              if(ptr[offset6] > cb)
331                                goto success_structured;
332                              else
333                                goto homogeneous;
334                            else
335                              goto homogeneous;
336                        else
337                          if(ptr[offset7] > cb)
338                            if(ptr[offset4] > cb)
339                              if(ptr[offset6] > cb)
340                                goto success_structured;
341                              else
342                                goto homogeneous;
343                            else
344                              goto homogeneous;
345                          else
346                            goto homogeneous;
347                      else
348                        goto homogeneous;
349                    else
350                      if(ptr[offset5] < c_b)
351                        if(ptr[offset7] < c_b)
352                          if(ptr[offset6] < c_b)
353                            if(ptr[offset1] < c_b)
354                              goto success_homogeneous;
355                            else
356                              if(ptr[offset4] < c_b)
357                                goto success_homogeneous;
358                              else
359                                goto homogeneous;
360                          else
361                            goto homogeneous;
362                        else
363                          goto homogeneous;
364                      else
365                        goto homogeneous;
366                else
367                  if(ptr[offset3] > cb)
368                    if(ptr[offset5] > cb)
369                      if(ptr[offset2] > cb)
370                        if(ptr[offset1] > cb)
371                          if(ptr[offset4] > cb)
372                            goto success_homogeneous;
373                          else
374                            goto homogeneous;
375                        else
376                          if(ptr[offset4] > cb)
377                            if(ptr[offset6] > cb)
378                              goto success_homogeneous;
379                            else
380                              goto homogeneous;
381                          else
382                            goto homogeneous;
383                      else
384                        if(ptr[offset7] > cb)
385                          if(ptr[offset4] > cb)
386                            if(ptr[offset6] > cb)
387                              goto success_homogeneous;
388                            else
389                              goto homogeneous;
390                          else
391                            goto homogeneous;
392                        else
393                          goto homogeneous;
394                    else
395                      goto homogeneous;
396                  else
397                    if(ptr[offset3] < c_b)
398                      if(ptr[offset5] < c_b)
399                        if(ptr[offset2] < c_b)
400                          if(ptr[offset1] < c_b)
401                            if(ptr[offset4] < c_b)
402                              goto success_homogeneous;
403                            else
404                              goto homogeneous;
405                          else
406                            if(ptr[offset4] < c_b)
407                              if(ptr[offset6] < c_b)
408                                goto success_homogeneous;
409                              else
410                                goto homogeneous;
411                            else
412                              goto homogeneous;
413                        else
414                          if(ptr[offset7] < c_b)
415                            if(ptr[offset4] < c_b)
416                              if(ptr[offset6] < c_b)
417                                goto success_homogeneous;
418                              else
419                                goto homogeneous;
420                            else
421                              goto homogeneous;
422                          else
423                            goto homogeneous;
424                      else
425                        goto homogeneous;
426                    else
427                      goto homogeneous;
428            }
429          }
430          structured:
431          {
432            x++;
433            if(x > xsizeB)
434                break;
435            else
436            {
437                register const unsigned char* const ptr = img.ptr() + y*width + x;
438                register const int cb = *ptr + threshold;
439                register const int c_b = *ptr - threshold;
440                if(ptr[offset0] > cb)
441                  if(ptr[offset2] > cb)
442                    if(ptr[offset3] > cb)
443                      if(ptr[offset5] > cb)
444                        if(ptr[offset7] > cb)
445                          if(ptr[offset1] > cb)
446                            goto success_structured;
447                          else
448                            if(ptr[offset4] > cb)
449                              if(ptr[offset6] > cb)
450                                goto success_structured;
451                              else
452                                goto structured;
453                            else
454                              goto structured;
455                        else
456                          if(ptr[offset1] > cb)
457                            if(ptr[offset4] > cb)
458                              goto success_structured;
459                            else
460                              goto structured;
461                          else
462                            if(ptr[offset4] > cb)
463                              if(ptr[offset6] > cb)
464                                goto success_structured;
465                              else
466                                goto structured;
467                            else
468                              goto structured;
469                      else
470                        if(ptr[offset7] > cb)
471                          if(ptr[offset1] > cb)
472                            goto success_structured;
473                          else
474                            goto structured;
475                        else
476                          if(ptr[offset1] > cb)
477                            if(ptr[offset4] > cb)
478                              goto success_structured;
479                            else
480                              goto structured;
481                          else
482                            goto structured;
483                    else
484                      if(ptr[offset7] > cb)
485                        if(ptr[offset6] > cb)
486                          if(ptr[offset5] > cb)
487                            if(ptr[offset1] > cb)
488                              goto success_structured;
489                            else
490                              if(ptr[offset4] > cb)
491                                goto success_structured;
492                              else
493                                goto structured;
494                          else
495                            if(ptr[offset1] > cb)
496                              goto success_structured;
497                            else
498                              goto structured;
499                        else
500                          goto structured;
501                      else
502                        if(ptr[offset5] < c_b)
503                          if(ptr[offset3] < c_b)
504                            if(ptr[offset7] < c_b)
505                              if(ptr[offset4] < c_b)
506                                if(ptr[offset6] < c_b)
507                                  goto success_structured;
508                                else
509                                  goto structured;
510                              else
511                                goto structured;
512                            else
513                              goto homogeneous;
514                          else
515                            goto homogeneous;
516                        else
517                          goto structured;
518                  else
519                    if(ptr[offset5] > cb)
520                      if(ptr[offset7] > cb)
521                        if(ptr[offset6] > cb)
522                          if(ptr[offset1] > cb)
523                            goto success_structured;
524                          else
525                            if(ptr[offset4] > cb)
526                              goto success_structured;
527                            else
528                              goto structured;
529                        else
530                          goto structured;
531                      else
532                        goto structured;
533                    else
534                      if(ptr[offset5] < c_b)
535                        if(ptr[offset3] < c_b)
536                          if(ptr[offset2] < c_b)
537                            if(ptr[offset1] < c_b)
538                              if(ptr[offset4] < c_b)
539                                goto success_structured;
540                              else
541                                goto structured;
542                            else
543                              if(ptr[offset4] < c_b)
544                                if(ptr[offset6] < c_b)
545                                  goto success_structured;
546                                else
547                                  goto structured;
548                              else
549                                goto structured;
550                          else
551                            if(ptr[offset7] < c_b)
552                              if(ptr[offset4] < c_b)
553                                if(ptr[offset6] < c_b)
554                                  goto success_homogeneous;
555                                else
556                                  goto homogeneous;
557                              else
558                                goto homogeneous;
559                            else
560                              goto homogeneous;
561                        else
562                          goto structured;
563                      else
564                        goto homogeneous;
565                else if(ptr[offset0] < c_b)
566                  if(ptr[offset2] < c_b)
567                    if(ptr[offset7] > cb)
568                      if(ptr[offset3] < c_b)
569                        if(ptr[offset5] < c_b)
570                          if(ptr[offset1] < c_b)
571                            if(ptr[offset4] < c_b)
572                              goto success_structured;
573                            else
574                              goto structured;
575                          else
576                            if(ptr[offset4] < c_b)
577                              if(ptr[offset6] < c_b)
578                                goto success_structured;
579                              else
580                                goto structured;
581                            else
582                              goto structured;
583                        else
584                          if(ptr[offset1] < c_b)
585                            if(ptr[offset4] < c_b)
586                              goto success_structured;
587                            else
588                              goto structured;
589                          else
590                            goto structured;
591                      else
592                        if(ptr[offset5] > cb)
593                          if(ptr[offset3] > cb)
594                            if(ptr[offset4] > cb)
595                              if(ptr[offset6] > cb)
596                                goto success_structured;
597                              else
598                                goto structured;
599                            else
600                              goto structured;
601                          else
602                            goto homogeneous;
603                        else
604                          goto structured;
605                    else
606                      if(ptr[offset7] < c_b)
607                        if(ptr[offset3] < c_b)
608                          if(ptr[offset5] < c_b)
609                            if(ptr[offset1] < c_b)
610                              goto success_structured;
611                            else
612                              if(ptr[offset4] < c_b)
613                                if(ptr[offset6] < c_b)
614                                  goto success_structured;
615                                else
616                                  goto structured;
617                              else
618                                goto structured;
619                          else
620                            if(ptr[offset1] < c_b)
621                              goto success_structured;
622                            else
623                              goto structured;
624                        else
625                          if(ptr[offset6] < c_b)
626                            if(ptr[offset5] < c_b)
627                              if(ptr[offset1] < c_b)
628                                goto success_structured;
629                              else
630                                if(ptr[offset4] < c_b)
631                                  goto success_structured;
632                                else
633                                  goto structured;
634                            else
635                              if(ptr[offset1] < c_b)
636                                goto success_structured;
637                              else
638                                goto structured;
639                          else
640                            goto structured;
641                      else
642                        if(ptr[offset3] < c_b)
643                          if(ptr[offset5] < c_b)
644                            if(ptr[offset1] < c_b)
645                              if(ptr[offset4] < c_b)
646                                goto success_homogeneous;
647                              else
648                                goto homogeneous;
649                            else
650                              if(ptr[offset4] < c_b)
651                                if(ptr[offset6] < c_b)
652                                  goto success_homogeneous;
653                                else
654                                  goto homogeneous;
655                              else
656                                goto homogeneous;
657                          else
658                            if(ptr[offset1] < c_b)
659                              if(ptr[offset4] < c_b)
660                                goto success_homogeneous;
661                              else
662                                goto homogeneous;
663                            else
664                              goto homogeneous;
665                        else
666                          goto homogeneous;
667                  else
668                    if(ptr[offset5] > cb)
669                      if(ptr[offset3] > cb)
670                        if(ptr[offset2] > cb)
671                          if(ptr[offset1] > cb)
672                            if(ptr[offset4] > cb)
673                              goto success_structured;
674                            else
675                              goto structured;
676                          else
677                            if(ptr[offset4] > cb)
678                              if(ptr[offset6] > cb)
679                                goto success_structured;
680                              else
681                                goto structured;
682                            else
683                              goto structured;
684                        else
685                          if(ptr[offset7] > cb)
686                            if(ptr[offset4] > cb)
687                              if(ptr[offset6] > cb)
688                                goto success_homogeneous;
689                              else
690                                goto homogeneous;
691                            else
692                              goto homogeneous;
693                          else
694                            goto homogeneous;
695                      else
696                        goto structured;
697                    else
698                      if(ptr[offset5] < c_b)
699                        if(ptr[offset7] < c_b)
700                          if(ptr[offset6] < c_b)
701                            if(ptr[offset1] < c_b)
702                              goto success_structured;
703                            else
704                              if(ptr[offset4] < c_b)
705                                goto success_structured;
706                              else
707                                goto structured;
708                          else
709                            goto structured;
710                        else
711                          goto structured;
712                      else
713                        goto homogeneous;
714                else
715                  if(ptr[offset3] > cb)
716                    if(ptr[offset5] > cb)
717                      if(ptr[offset2] > cb)
718                        if(ptr[offset1] > cb)
719                          if(ptr[offset4] > cb)
720                            goto success_homogeneous;
721                          else
722                            goto homogeneous;
723                        else
724                          if(ptr[offset4] > cb)
725                            if(ptr[offset6] > cb)
726                              goto success_homogeneous;
727                            else
728                              goto homogeneous;
729                          else
730                            goto homogeneous;
731                      else
732                        if(ptr[offset7] > cb)
733                          if(ptr[offset4] > cb)
734                            if(ptr[offset6] > cb)
735                              goto success_homogeneous;
736                            else
737                              goto homogeneous;
738                          else
739                            goto homogeneous;
740                        else
741                          goto homogeneous;
742                    else
743                      goto homogeneous;
744                  else
745                    if(ptr[offset3] < c_b)
746                      if(ptr[offset5] < c_b)
747                        if(ptr[offset2] < c_b)
748                          if(ptr[offset1] < c_b)
749                            if(ptr[offset4] < c_b)
750                              goto success_homogeneous;
751                            else
752                              goto homogeneous;
753                          else
754                            if(ptr[offset4] < c_b)
755                              if(ptr[offset6] < c_b)
756                                goto success_homogeneous;
757                              else
758                                goto homogeneous;
759                            else
760                              goto homogeneous;
761                        else
762                          if(ptr[offset7] < c_b)
763                            if(ptr[offset4] < c_b)
764                              if(ptr[offset6] < c_b)
765                                goto success_homogeneous;
766                              else
767                                goto homogeneous;
768                            else
769                              goto homogeneous;
770                          else
771                            goto homogeneous;
772                      else
773                        goto homogeneous;
774                    else
775                      goto homogeneous;
776            }
777          }
778            success_homogeneous:
779            if(total == nExpectedCorners)
780            {
781                if(nExpectedCorners == 0)
782                {
783                    nExpectedCorners = 512;
784                    keypoints.reserve(nExpectedCorners);
785                }
786                else
787                {
788                    nExpectedCorners *= 2;
789                    keypoints.reserve(nExpectedCorners);
790                }
791            }
792            keypoints.push_back(KeyPoint(Point2f((float)x, (float)y), 1.0f));
793            total++;
794            goto homogeneous;
795            success_structured:
796            if(total == nExpectedCorners)
797            {
798                if(nExpectedCorners == 0)
799                {
800                    nExpectedCorners = 512;
801                    keypoints.reserve(nExpectedCorners);
802                }
803                else
804                {
805                    nExpectedCorners *= 2;
806                    keypoints.reserve(nExpectedCorners);
807                }
808            }
809            keypoints.push_back(KeyPoint(Point2f((float)x, (float)y), 1.0f));
810            total++;
811            goto structured;
812        }
813    }
814}
815
816static void AGAST_7_12d(InputArray _img, std::vector<KeyPoint>& keypoints, int threshold)
817{
818    cv::Mat img;
819    if(!_img.getMat().isContinuous())
820      img = _img.getMat().clone();
821    else
822      img = _img.getMat();
823
824    size_t total = 0;
825    int xsize = img.cols;
826    int ysize = img.rows;
827    size_t nExpectedCorners = keypoints.capacity();
828    register int x, y;
829    register int xsizeB = xsize - 4;
830    register int ysizeB = ysize - 3;
831    register int width;
832
833    keypoints.resize(0);
834
835    int pixel_7_12d_[16];
836    makeAgastOffsets(pixel_7_12d_, (int)img.step, AgastFeatureDetector::AGAST_7_12d);
837
838    register short offset0 = (short) pixel_7_12d_[0];
839    register short offset1 = (short) pixel_7_12d_[1];
840    register short offset2 = (short) pixel_7_12d_[2];
841    register short offset3 = (short) pixel_7_12d_[3];
842    register short offset4 = (short) pixel_7_12d_[4];
843    register short offset5 = (short) pixel_7_12d_[5];
844    register short offset6 = (short) pixel_7_12d_[6];
845    register short offset7 = (short) pixel_7_12d_[7];
846    register short offset8 = (short) pixel_7_12d_[8];
847    register short offset9 = (short) pixel_7_12d_[9];
848    register short offset10 = (short) pixel_7_12d_[10];
849    register short offset11 = (short) pixel_7_12d_[11];
850
851    width = xsize;
852
853    for(y = 3; y < ysizeB; y++)
854    {
855        x = 2;
856        while(true)
857        {
858          homogeneous:
859          {
860            x++;
861            if(x > xsizeB)
862                break;
863            else
864            {
865                register const unsigned char* const ptr = img.ptr() + y*width + x;
866                register const int cb = *ptr + threshold;
867                register const int c_b = *ptr - threshold;
868                if(ptr[offset0] > cb)
869                  if(ptr[offset5] > cb)
870                    if(ptr[offset2] > cb)
871                      if(ptr[offset9] > cb)
872                        if(ptr[offset1] > cb)
873                          if(ptr[offset6] > cb)
874                            if(ptr[offset3] > cb)
875                              if(ptr[offset4] > cb)
876                                goto success_homogeneous;
877                              else
878                                if(ptr[offset10] > cb)
879                                  if(ptr[offset11] > cb)
880                                    goto success_structured;
881                                  else
882                                    goto homogeneous;
883                                else
884                                  goto homogeneous;
885                            else
886                              if(ptr[offset8] > cb)
887                                if(ptr[offset10] > cb)
888                                  if(ptr[offset11] > cb)
889                                    goto success_structured;
890                                  else
891                                    if(ptr[offset4] > cb)
892                                      if(ptr[offset7] > cb)
893                                        goto success_structured;
894                                      else
895                                        goto structured;
896                                    else
897                                      goto homogeneous;
898                                else
899                                  goto homogeneous;
900                              else
901                                goto homogeneous;
902                          else
903                            if(ptr[offset11] > cb)
904                              if(ptr[offset3] > cb)
905                                if(ptr[offset4] > cb)
906                                  goto success_homogeneous;
907                                else
908                                  if(ptr[offset10] > cb)
909                                    goto success_homogeneous;
910                                  else
911                                    goto homogeneous;
912                              else
913                                if(ptr[offset8] > cb)
914                                  if(ptr[offset10] > cb)
915                                    goto success_homogeneous;
916                                  else
917                                    goto homogeneous;
918                                else
919                                  goto homogeneous;
920                            else
921                              goto homogeneous;
922                        else
923                          if(ptr[offset6] > cb)
924                            if(ptr[offset7] > cb)
925                              if(ptr[offset8] > cb)
926                                if(ptr[offset4] > cb)
927                                  if(ptr[offset3] > cb)
928                                    goto success_structured;
929                                  else
930                                    if(ptr[offset10] > cb)
931                                      goto success_structured;
932                                    else
933                                      goto homogeneous;
934                                else
935                                  if(ptr[offset10] > cb)
936                                    if(ptr[offset11] > cb)
937                                      goto success_structured;
938                                    else
939                                      goto homogeneous;
940                                  else
941                                    goto homogeneous;
942                              else
943                                goto homogeneous;
944                            else
945                              goto homogeneous;
946                          else
947                            goto homogeneous;
948                      else
949                        if(ptr[offset3] > cb)
950                          if(ptr[offset4] > cb)
951                            if(ptr[offset1] > cb)
952                              if(ptr[offset6] > cb)
953                                goto success_homogeneous;
954                              else
955                                if(ptr[offset11] > cb)
956                                  goto success_homogeneous;
957                                else
958                                  goto homogeneous;
959                            else
960                              if(ptr[offset6] > cb)
961                                if(ptr[offset7] > cb)
962                                  if(ptr[offset8] > cb)
963                                    goto success_homogeneous;
964                                  else
965                                    goto homogeneous;
966                                else
967                                  goto homogeneous;
968                              else
969                                goto homogeneous;
970                          else
971                            goto homogeneous;
972                        else
973                          goto homogeneous;
974                    else
975                      if(ptr[offset9] > cb)
976                        if(ptr[offset7] > cb)
977                          if(ptr[offset8] > cb)
978                            if(ptr[offset1] > cb)
979                              if(ptr[offset10] > cb)
980                                if(ptr[offset11] > cb)
981                                  goto success_homogeneous;
982                                else
983                                  if(ptr[offset6] > cb)
984                                    if(ptr[offset4] > cb)
985                                      goto success_structured;
986                                    else
987                                      goto homogeneous;
988                                  else
989                                    goto homogeneous;
990                              else
991                                if(ptr[offset6] > cb)
992                                  if(ptr[offset3] > cb)
993                                    if(ptr[offset4] > cb)
994                                      goto success_structured;
995                                    else
996                                      goto homogeneous;
997                                  else
998                                    goto homogeneous;
999                                else
1000                                  goto homogeneous;
1001                            else
1002                              if(ptr[offset6] > cb)
1003                                if(ptr[offset4] > cb)
1004                                  if(ptr[offset3] > cb)
1005                                    goto success_homogeneous;
1006                                  else
1007                                    if(ptr[offset10] > cb)
1008                                      goto success_homogeneous;
1009                                    else
1010                                      goto homogeneous;
1011                                else
1012                                  if(ptr[offset10] > cb)
1013                                    if(ptr[offset11] > cb)
1014                                      goto success_homogeneous;
1015                                    else
1016                                      goto homogeneous;
1017                                  else
1018                                    goto homogeneous;
1019                              else
1020                                goto homogeneous;
1021                          else
1022                            goto homogeneous;
1023                        else
1024                          goto homogeneous;
1025                      else
1026                        goto homogeneous;
1027                  else
1028                    if(ptr[offset5] < c_b)
1029                      if(ptr[offset9] > cb)
1030                        if(ptr[offset3] < c_b)
1031                          if(ptr[offset4] < c_b)
1032                            if(ptr[offset11] > cb)
1033                              if(ptr[offset1] > cb)
1034                                if(ptr[offset8] > cb)
1035                                  if(ptr[offset10] > cb)
1036                                    if(ptr[offset2] > cb)
1037                                      goto success_structured;
1038                                    else
1039                                      if(ptr[offset7] > cb)
1040                                        goto success_structured;
1041                                      else
1042                                        goto structured;
1043                                  else
1044                                    goto homogeneous;
1045                                else
1046                                  if(ptr[offset6] < c_b)
1047                                    if(ptr[offset2] < c_b)
1048                                      if(ptr[offset7] < c_b)
1049                                        if(ptr[offset8] < c_b)
1050                                          goto success_structured;
1051                                        else
1052                                          goto structured;
1053                                      else
1054                                        goto structured;
1055                                    else
1056                                      goto homogeneous;
1057                                  else
1058                                    goto homogeneous;
1059                              else
1060                                if(ptr[offset6] > cb)
1061                                  if(ptr[offset7] > cb)
1062                                    if(ptr[offset8] > cb)
1063                                      if(ptr[offset10] > cb)
1064                                        goto success_structured;
1065                                      else
1066                                        goto structured;
1067                                    else
1068                                      goto homogeneous;
1069                                  else
1070                                    goto homogeneous;
1071                                else
1072                                  if(ptr[offset6] < c_b)
1073                                    if(ptr[offset2] < c_b)
1074                                      if(ptr[offset7] < c_b)
1075                                        if(ptr[offset1] < c_b)
1076                                          goto success_structured;
1077                                        else
1078                                          if(ptr[offset8] < c_b)
1079                                            goto success_structured;
1080                                          else
1081                                            goto structured;
1082                                      else
1083                                        goto homogeneous;
1084                                    else
1085                                      goto homogeneous;
1086                                  else
1087                                    goto homogeneous;
1088                            else
1089                              if(ptr[offset2] < c_b)
1090                                if(ptr[offset7] < c_b)
1091                                  if(ptr[offset1] < c_b)
1092                                    if(ptr[offset6] < c_b)
1093                                      goto success_structured;
1094                                    else
1095                                      goto homogeneous;
1096                                  else
1097                                    if(ptr[offset6] < c_b)
1098                                      if(ptr[offset8] < c_b)
1099                                        goto success_structured;
1100                                      else
1101                                        goto homogeneous;
1102                                    else
1103                                      goto homogeneous;
1104                                else
1105                                  goto homogeneous;
1106                              else
1107                                goto homogeneous;
1108                          else
1109                            if(ptr[offset11] > cb)
1110                              if(ptr[offset8] > cb)
1111                                if(ptr[offset10] > cb)
1112                                  if(ptr[offset1] > cb)
1113                                    if(ptr[offset2] > cb)
1114                                      goto success_structured;
1115                                    else
1116                                      if(ptr[offset7] > cb)
1117                                        goto success_structured;
1118                                      else
1119                                        goto homogeneous;
1120                                  else
1121                                    if(ptr[offset6] > cb)
1122                                      if(ptr[offset7] > cb)
1123                                        goto success_structured;
1124                                      else
1125                                        goto homogeneous;
1126                                    else
1127                                      goto homogeneous;
1128                                else
1129                                  goto homogeneous;
1130                              else
1131                                goto homogeneous;
1132                            else
1133                              goto homogeneous;
1134                        else
1135                          if(ptr[offset11] > cb)
1136                            if(ptr[offset10] > cb)
1137                              if(ptr[offset3] > cb)
1138                                if(ptr[offset1] > cb)
1139                                  if(ptr[offset2] > cb)
1140                                    goto success_homogeneous;
1141                                  else
1142                                    if(ptr[offset7] > cb)
1143                                      if(ptr[offset8] > cb)
1144                                        goto success_structured;
1145                                      else
1146                                        goto homogeneous;
1147                                    else
1148                                      goto homogeneous;
1149                                else
1150                                  if(ptr[offset6] > cb)
1151                                    if(ptr[offset7] > cb)
1152                                      if(ptr[offset8] > cb)
1153                                        goto success_structured;
1154                                      else
1155                                        goto homogeneous;
1156                                    else
1157                                      goto homogeneous;
1158                                  else
1159                                    goto homogeneous;
1160                              else
1161                                if(ptr[offset8] > cb)
1162                                  if(ptr[offset1] > cb)
1163                                    if(ptr[offset2] > cb)
1164                                      goto success_homogeneous;
1165                                    else
1166                                      if(ptr[offset7] > cb)
1167                                        goto success_homogeneous;
1168                                      else
1169                                        goto homogeneous;
1170                                  else
1171                                    if(ptr[offset6] > cb)
1172                                      if(ptr[offset7] > cb)
1173                                        goto success_homogeneous;
1174                                      else
1175                                        goto homogeneous;
1176                                    else
1177                                      goto homogeneous;
1178                                else
1179                                  goto homogeneous;
1180                            else
1181                              goto homogeneous;
1182                          else
1183                            goto homogeneous;
1184                      else
1185                        if(ptr[offset9] < c_b)
1186                          if(ptr[offset2] > cb)
1187                            if(ptr[offset1] > cb)
1188                              if(ptr[offset4] > cb)
1189                                if(ptr[offset10] > cb)
1190                                  if(ptr[offset3] > cb)
1191                                    if(ptr[offset11] > cb)
1192                                      goto success_structured;
1193                                    else
1194                                      goto homogeneous;
1195                                  else
1196                                    goto homogeneous;
1197                                else
1198                                  if(ptr[offset6] < c_b)
1199                                    if(ptr[offset7] < c_b)
1200                                      if(ptr[offset8] < c_b)
1201                                        if(ptr[offset11] < c_b)
1202                                          if(ptr[offset10] < c_b)
1203                                            goto success_structured;
1204                                          else
1205                                            goto structured;
1206                                        else
1207                                          goto structured;
1208                                      else
1209                                        goto homogeneous;
1210                                    else
1211                                      goto homogeneous;
1212                                  else
1213                                    goto homogeneous;
1214                              else
1215                                if(ptr[offset6] < c_b)
1216                                  if(ptr[offset7] < c_b)
1217                                    if(ptr[offset8] < c_b)
1218                                      if(ptr[offset10] < c_b)
1219                                        if(ptr[offset4] < c_b)
1220                                          goto success_structured;
1221                                        else
1222                                          if(ptr[offset11] < c_b)
1223                                            goto success_structured;
1224                                          else
1225                                            goto structured;
1226                                      else
1227                                        if(ptr[offset3] < c_b)
1228                                          if(ptr[offset4] < c_b)
1229                                            goto success_structured;
1230                                          else
1231                                            goto structured;
1232                                        else
1233                                          goto homogeneous;
1234                                    else
1235                                      goto homogeneous;
1236                                  else
1237                                    goto homogeneous;
1238                                else
1239                                  goto homogeneous;
1240                            else
1241                              if(ptr[offset6] < c_b)
1242                                if(ptr[offset7] < c_b)
1243                                  if(ptr[offset8] < c_b)
1244                                    if(ptr[offset4] < c_b)
1245                                      if(ptr[offset3] < c_b)
1246                                        goto success_structured;
1247                                      else
1248                                        if(ptr[offset10] < c_b)
1249                                          goto success_structured;
1250                                        else
1251                                          goto homogeneous;
1252                                    else
1253                                      if(ptr[offset10] < c_b)
1254                                        if(ptr[offset11] < c_b)
1255                                          goto success_structured;
1256                                        else
1257                                          goto homogeneous;
1258                                      else
1259                                        goto homogeneous;
1260                                  else
1261                                    goto homogeneous;
1262                                else
1263                                  goto homogeneous;
1264                              else
1265                                goto homogeneous;
1266                          else
1267                            if(ptr[offset6] < c_b)
1268                              if(ptr[offset7] < c_b)
1269                                if(ptr[offset8] < c_b)
1270                                  if(ptr[offset4] < c_b)
1271                                    if(ptr[offset3] < c_b)
1272                                      goto success_homogeneous;
1273                                    else
1274                                      if(ptr[offset10] < c_b)
1275                                        goto success_homogeneous;
1276                                      else
1277                                        goto homogeneous;
1278                                  else
1279                                    if(ptr[offset10] < c_b)
1280                                      if(ptr[offset11] < c_b)
1281                                        goto success_homogeneous;
1282                                      else
1283                                        goto homogeneous;
1284                                    else
1285                                      goto homogeneous;
1286                                else
1287                                  if(ptr[offset2] < c_b)
1288                                    if(ptr[offset1] < c_b)
1289                                      if(ptr[offset3] < c_b)
1290                                        if(ptr[offset4] < c_b)
1291                                          goto success_structured;
1292                                        else
1293                                          goto homogeneous;
1294                                      else
1295                                        goto homogeneous;
1296                                    else
1297                                      goto homogeneous;
1298                                  else
1299                                    goto homogeneous;
1300                              else
1301                                goto homogeneous;
1302                            else
1303                              goto homogeneous;
1304                        else
1305                          if(ptr[offset2] > cb)
1306                            if(ptr[offset1] > cb)
1307                              if(ptr[offset3] > cb)
1308                                if(ptr[offset4] > cb)
1309                                  if(ptr[offset10] > cb)
1310                                    if(ptr[offset11] > cb)
1311                                      goto success_homogeneous;
1312                                    else
1313                                      goto homogeneous;
1314                                  else
1315                                    goto homogeneous;
1316                                else
1317                                  goto homogeneous;
1318                              else
1319                                goto homogeneous;
1320                            else
1321                              goto homogeneous;
1322                          else
1323                            if(ptr[offset2] < c_b)
1324                              if(ptr[offset3] < c_b)
1325                                if(ptr[offset4] < c_b)
1326                                  if(ptr[offset7] < c_b)
1327                                    if(ptr[offset1] < c_b)
1328                                      if(ptr[offset6] < c_b)
1329                                        goto success_homogeneous;
1330                                      else
1331                                        goto homogeneous;
1332                                    else
1333                                      if(ptr[offset6] < c_b)
1334                                        if(ptr[offset8] < c_b)
1335                                          goto success_homogeneous;
1336                                        else
1337                                          goto homogeneous;
1338                                      else
1339                                        goto homogeneous;
1340                                  else
1341                                    goto homogeneous;
1342                                else
1343                                  goto homogeneous;
1344                              else
1345                                goto homogeneous;
1346                            else
1347                              goto homogeneous;
1348                    else
1349                      if(ptr[offset2] > cb)
1350                        if(ptr[offset10] > cb)
1351                          if(ptr[offset11] > cb)
1352                            if(ptr[offset9] > cb)
1353                              if(ptr[offset1] > cb)
1354                                if(ptr[offset3] > cb)
1355                                  goto success_homogeneous;
1356                                else
1357                                  if(ptr[offset8] > cb)
1358                                    goto success_homogeneous;
1359                                  else
1360                                    goto homogeneous;
1361                              else
1362                                if(ptr[offset6] > cb)
1363                                  if(ptr[offset7] > cb)
1364                                    if(ptr[offset8] > cb)
1365                                      goto success_homogeneous;
1366                                    else
1367                                      goto homogeneous;
1368                                  else
1369                                    goto homogeneous;
1370                                else
1371                                  goto homogeneous;
1372                            else
1373                              if(ptr[offset1] > cb)
1374                                if(ptr[offset3] > cb)
1375                                  if(ptr[offset4] > cb)
1376                                    goto success_homogeneous;
1377                                  else
1378                                    goto homogeneous;
1379                                else
1380                                  goto homogeneous;
1381                              else
1382                                goto homogeneous;
1383                          else
1384                            goto homogeneous;
1385                        else
1386                          goto homogeneous;
1387                      else
1388                        if(ptr[offset9] > cb)
1389                          if(ptr[offset7] > cb)
1390                            if(ptr[offset8] > cb)
1391                              if(ptr[offset10] > cb)
1392                                if(ptr[offset11] > cb)
1393                                  if(ptr[offset1] > cb)
1394                                    goto success_homogeneous;
1395                                  else
1396                                    if(ptr[offset6] > cb)
1397                                      goto success_homogeneous;
1398                                    else
1399                                      goto homogeneous;
1400                                else
1401                                  goto homogeneous;
1402                              else
1403                                goto homogeneous;
1404                            else
1405                              goto homogeneous;
1406                          else
1407                            goto homogeneous;
1408                        else
1409                          goto homogeneous;
1410                else if(ptr[offset0] < c_b)
1411                  if(ptr[offset2] > cb)
1412                    if(ptr[offset5] > cb)
1413                      if(ptr[offset7] > cb)
1414                        if(ptr[offset6] > cb)
1415                          if(ptr[offset4] > cb)
1416                            if(ptr[offset3] > cb)
1417                              if(ptr[offset1] > cb)
1418                                goto success_homogeneous;
1419                              else
1420                                if(ptr[offset8] > cb)
1421                                  goto success_homogeneous;
1422                                else
1423                                  goto homogeneous;
1424                            else
1425                              if(ptr[offset9] > cb)
1426                                if(ptr[offset8] > cb)
1427                                  if(ptr[offset10] > cb)
1428                                    goto success_structured;
1429                                  else
1430                                    goto homogeneous;
1431                                else
1432                                  goto homogeneous;
1433                              else
1434                                goto homogeneous;
1435                          else
1436                            if(ptr[offset9] > cb)
1437                              if(ptr[offset8] > cb)
1438                                if(ptr[offset10] > cb)
1439                                  if(ptr[offset11] > cb)
1440                                    goto success_structured;
1441                                  else
1442                                    goto homogeneous;
1443                                else
1444                                  goto homogeneous;
1445                              else
1446                                goto homogeneous;
1447                            else
1448                              goto homogeneous;
1449                        else
1450                          goto homogeneous;
1451                      else
1452                        if(ptr[offset9] < c_b)
1453                          if(ptr[offset8] < c_b)
1454                            if(ptr[offset10] < c_b)
1455                              if(ptr[offset11] < c_b)
1456                                if(ptr[offset7] < c_b)
1457                                  if(ptr[offset1] < c_b)
1458                                    goto success_structured;
1459                                  else
1460                                    if(ptr[offset6] < c_b)
1461                                      goto success_structured;
1462                                    else
1463                                      goto homogeneous;
1464                                else
1465                                  goto homogeneous;
1466                              else
1467                                goto homogeneous;
1468                            else
1469                              goto homogeneous;
1470                          else
1471                            goto homogeneous;
1472                        else
1473                          goto homogeneous;
1474                    else
1475                      if(ptr[offset9] < c_b)
1476                        if(ptr[offset7] < c_b)
1477                          if(ptr[offset8] < c_b)
1478                            if(ptr[offset5] < c_b)
1479                              if(ptr[offset1] < c_b)
1480                                if(ptr[offset10] < c_b)
1481                                  if(ptr[offset11] < c_b)
1482                                    goto success_structured;
1483                                  else
1484                                    if(ptr[offset6] < c_b)
1485                                      if(ptr[offset4] < c_b)
1486                                        goto success_structured;
1487                                      else
1488                                        goto structured;
1489                                    else
1490                                      goto homogeneous;
1491                                else
1492                                  if(ptr[offset6] < c_b)
1493                                    if(ptr[offset3] < c_b)
1494                                      if(ptr[offset4] < c_b)
1495                                        goto success_structured;
1496                                      else
1497                                        goto structured;
1498                                    else
1499                                      goto homogeneous;
1500                                  else
1501                                    goto homogeneous;
1502                              else
1503                                if(ptr[offset6] < c_b)
1504                                  if(ptr[offset4] < c_b)
1505                                    if(ptr[offset3] < c_b)
1506                                      goto success_structured;
1507                                    else
1508                                      if(ptr[offset10] < c_b)
1509                                        goto success_structured;
1510                                      else
1511                                        goto homogeneous;
1512                                  else
1513                                    if(ptr[offset10] < c_b)
1514                                      if(ptr[offset11] < c_b)
1515                                        goto success_structured;
1516                                      else
1517                                        goto homogeneous;
1518                                    else
1519                                      goto homogeneous;
1520                                else
1521                                  goto homogeneous;
1522                            else
1523                              if(ptr[offset10] < c_b)
1524                                if(ptr[offset11] < c_b)
1525                                  if(ptr[offset1] < c_b)
1526                                    goto success_homogeneous;
1527                                  else
1528                                    if(ptr[offset6] < c_b)
1529                                      goto success_homogeneous;
1530                                    else
1531                                      goto homogeneous;
1532                                else
1533                                  goto homogeneous;
1534                              else
1535                                goto homogeneous;
1536                          else
1537                            goto homogeneous;
1538                        else
1539                          goto homogeneous;
1540                      else
1541                        goto homogeneous;
1542                  else
1543                    if(ptr[offset2] < c_b)
1544                      if(ptr[offset9] > cb)
1545                        if(ptr[offset5] > cb)
1546                          if(ptr[offset1] < c_b)
1547                            if(ptr[offset4] < c_b)
1548                              if(ptr[offset10] < c_b)
1549                                if(ptr[offset3] < c_b)
1550                                  if(ptr[offset11] < c_b)
1551                                    goto success_structured;
1552                                  else
1553                                    goto homogeneous;
1554                                else
1555                                  goto homogeneous;
1556                              else
1557                                if(ptr[offset6] > cb)
1558                                  if(ptr[offset7] > cb)
1559                                    if(ptr[offset8] > cb)
1560                                      if(ptr[offset11] > cb)
1561                                        if(ptr[offset10] > cb)
1562                                          goto success_structured;
1563                                        else
1564                                          goto structured;
1565                                      else
1566                                        goto structured;
1567                                    else
1568                                      goto homogeneous;
1569                                  else
1570                                    goto homogeneous;
1571                                else
1572                                  goto homogeneous;
1573                            else
1574                              if(ptr[offset6] > cb)
1575                                if(ptr[offset7] > cb)
1576                                  if(ptr[offset8] > cb)
1577                                    if(ptr[offset10] > cb)
1578                                      if(ptr[offset4] > cb)
1579                                        goto success_structured;
1580                                      else
1581                                        if(ptr[offset11] > cb)
1582                                          goto success_structured;
1583                                        else
1584                                          goto structured;
1585                                    else
1586                                      if(ptr[offset3] > cb)
1587                                        if(ptr[offset4] > cb)
1588                                          goto success_structured;
1589                                        else
1590                                          goto structured;
1591                                      else
1592                                        goto homogeneous;
1593                                  else
1594                                    goto homogeneous;
1595                                else
1596                                  goto homogeneous;
1597                              else
1598                                goto homogeneous;
1599                          else
1600                            if(ptr[offset6] > cb)
1601                              if(ptr[offset7] > cb)
1602                                if(ptr[offset8] > cb)
1603                                  if(ptr[offset4] > cb)
1604                                    if(ptr[offset3] > cb)
1605                                      goto success_structured;
1606                                    else
1607                                      if(ptr[offset10] > cb)
1608                                        goto success_structured;
1609                                      else
1610                                        goto homogeneous;
1611                                  else
1612                                    if(ptr[offset10] > cb)
1613                                      if(ptr[offset11] > cb)
1614                                        goto success_structured;
1615                                      else
1616                                        goto homogeneous;
1617                                    else
1618                                      goto homogeneous;
1619                                else
1620                                  goto homogeneous;
1621                              else
1622                                goto homogeneous;
1623                            else
1624                              goto homogeneous;
1625                        else
1626                          if(ptr[offset3] < c_b)
1627                            if(ptr[offset4] < c_b)
1628                              if(ptr[offset5] < c_b)
1629                                if(ptr[offset1] < c_b)
1630                                  if(ptr[offset6] < c_b)
1631                                    goto success_homogeneous;
1632                                  else
1633                                    if(ptr[offset11] < c_b)
1634                                      goto success_homogeneous;
1635                                    else
1636                                      goto homogeneous;
1637                                else
1638                                  if(ptr[offset6] < c_b)
1639                                    if(ptr[offset7] < c_b)
1640                                      if(ptr[offset8] < c_b)
1641                                        goto success_structured;
1642                                      else
1643                                        goto homogeneous;
1644                                    else
1645                                      goto homogeneous;
1646                                  else
1647                                    goto homogeneous;
1648                              else
1649                                if(ptr[offset1] < c_b)
1650                                  if(ptr[offset10] < c_b)
1651                                    if(ptr[offset11] < c_b)
1652                                      goto success_homogeneous;
1653                                    else
1654                                      goto homogeneous;
1655                                  else
1656                                    goto homogeneous;
1657                                else
1658                                  goto homogeneous;
1659                            else
1660                              goto homogeneous;
1661                          else
1662                            goto homogeneous;
1663                      else
1664                        if(ptr[offset9] < c_b)
1665                          if(ptr[offset5] < c_b)
1666                            if(ptr[offset1] < c_b)
1667                              if(ptr[offset6] < c_b)
1668                                if(ptr[offset3] < c_b)
1669                                  if(ptr[offset4] < c_b)
1670                                    goto success_homogeneous;
1671                                  else
1672                                    if(ptr[offset10] < c_b)
1673                                      if(ptr[offset11] < c_b)
1674                                        goto success_structured;
1675                                      else
1676                                        goto homogeneous;
1677                                    else
1678                                      goto homogeneous;
1679                                else
1680                                  if(ptr[offset8] < c_b)
1681                                    if(ptr[offset10] < c_b)
1682                                      if(ptr[offset11] < c_b)
1683                                        goto success_structured;
1684                                      else
1685                                        if(ptr[offset4] < c_b)
1686                                          if(ptr[offset7] < c_b)
1687                                            goto success_structured;
1688                                          else
1689                                            goto structured;
1690                                        else
1691                                          goto homogeneous;
1692                                    else
1693                                      goto homogeneous;
1694                                  else
1695                                    goto homogeneous;
1696                              else
1697                                if(ptr[offset11] < c_b)
1698                                  if(ptr[offset3] < c_b)
1699                                    if(ptr[offset4] < c_b)
1700                                      goto success_homogeneous;
1701                                    else
1702                                      if(ptr[offset10] < c_b)
1703                                        goto success_homogeneous;
1704                                      else
1705                                        goto homogeneous;
1706                                  else
1707                                    if(ptr[offset8] < c_b)
1708                                      if(ptr[offset10] < c_b)
1709                                        goto success_homogeneous;
1710                                      else
1711                                        goto homogeneous;
1712                                    else
1713                                      goto homogeneous;
1714                                else
1715                                  goto homogeneous;
1716                            else
1717                              if(ptr[offset6] < c_b)
1718                                if(ptr[offset7] < c_b)
1719                                  if(ptr[offset8] < c_b)
1720                                    if(ptr[offset4] < c_b)
1721                                      if(ptr[offset3] < c_b)
1722                                        goto success_structured;
1723                                      else
1724                                        if(ptr[offset10] < c_b)
1725                                          goto success_structured;
1726                                        else
1727                                          goto homogeneous;
1728                                    else
1729                                      if(ptr[offset10] < c_b)
1730                                        if(ptr[offset11] < c_b)
1731                                          goto success_structured;
1732                                        else
1733                                          goto homogeneous;
1734                                      else
1735                                        goto homogeneous;
1736                                  else
1737                                    goto homogeneous;
1738                                else
1739                                  goto homogeneous;
1740                              else
1741                                goto homogeneous;
1742                          else
1743                            if(ptr[offset10] < c_b)
1744                              if(ptr[offset11] < c_b)
1745                                if(ptr[offset1] < c_b)
1746                                  if(ptr[offset3] < c_b)
1747                                    goto success_homogeneous;
1748                                  else
1749                                    if(ptr[offset8] < c_b)
1750                                      goto success_homogeneous;
1751                                    else
1752                                      goto homogeneous;
1753                                else
1754                                  if(ptr[offset6] < c_b)
1755                                    if(ptr[offset7] < c_b)
1756                                      if(ptr[offset8] < c_b)
1757                                        goto success_homogeneous;
1758                                      else
1759                                        goto homogeneous;
1760                                    else
1761                                      goto homogeneous;
1762                                  else
1763                                    goto homogeneous;
1764                              else
1765                                goto homogeneous;
1766                            else
1767                              goto homogeneous;
1768                        else
1769                          if(ptr[offset3] < c_b)
1770                            if(ptr[offset4] < c_b)
1771                              if(ptr[offset5] < c_b)
1772                                if(ptr[offset1] < c_b)
1773                                  if(ptr[offset6] < c_b)
1774                                    goto success_homogeneous;
1775                                  else
1776                                    if(ptr[offset11] < c_b)
1777                                      goto success_homogeneous;
1778                                    else
1779                                      goto homogeneous;
1780                                else
1781                                  if(ptr[offset6] < c_b)
1782                                    if(ptr[offset7] < c_b)
1783                                      if(ptr[offset8] < c_b)
1784                                        goto success_homogeneous;
1785                                      else
1786                                        goto homogeneous;
1787                                    else
1788                                      goto homogeneous;
1789                                  else
1790                                    goto homogeneous;
1791                              else
1792                                if(ptr[offset1] < c_b)
1793                                  if(ptr[offset10] < c_b)
1794                                    if(ptr[offset11] < c_b)
1795                                      goto success_homogeneous;
1796                                    else
1797                                      goto homogeneous;
1798                                  else
1799                                    goto homogeneous;
1800                                else
1801                                  goto homogeneous;
1802                            else
1803                              goto homogeneous;
1804                          else
1805                            goto homogeneous;
1806                    else
1807                      if(ptr[offset9] < c_b)
1808                        if(ptr[offset7] < c_b)
1809                          if(ptr[offset8] < c_b)
1810                            if(ptr[offset5] < c_b)
1811                              if(ptr[offset1] < c_b)
1812                                if(ptr[offset10] < c_b)
1813                                  if(ptr[offset11] < c_b)
1814                                    goto success_homogeneous;
1815                                  else
1816                                    if(ptr[offset6] < c_b)
1817                                      if(ptr[offset4] < c_b)
1818                                        goto success_structured;
1819                                      else
1820                                        goto homogeneous;
1821                                    else
1822                                      goto homogeneous;
1823                                else
1824                                  if(ptr[offset6] < c_b)
1825                                    if(ptr[offset3] < c_b)
1826                                      if(ptr[offset4] < c_b)
1827                                        goto success_structured;
1828                                      else
1829                                        goto homogeneous;
1830                                    else
1831                                      goto homogeneous;
1832                                  else
1833                                    goto homogeneous;
1834                              else
1835                                if(ptr[offset6] < c_b)
1836                                  if(ptr[offset4] < c_b)
1837                                    if(ptr[offset3] < c_b)
1838                                      goto success_homogeneous;
1839                                    else
1840                                      if(ptr[offset10] < c_b)
1841                                        goto success_homogeneous;
1842                                      else
1843                                        goto homogeneous;
1844                                  else
1845                                    if(ptr[offset10] < c_b)
1846                                      if(ptr[offset11] < c_b)
1847                                        goto success_homogeneous;
1848                                      else
1849                                        goto homogeneous;
1850                                    else
1851                                      goto homogeneous;
1852                                else
1853                                  goto homogeneous;
1854                            else
1855                              if(ptr[offset10] < c_b)
1856                                if(ptr[offset11] < c_b)
1857                                  if(ptr[offset1] < c_b)
1858                                    goto success_homogeneous;
1859                                  else
1860                                    if(ptr[offset6] < c_b)
1861                                      goto success_homogeneous;
1862                                    else
1863                                      goto homogeneous;
1864                                else
1865                                  goto homogeneous;
1866                              else
1867                                goto homogeneous;
1868                          else
1869                            goto homogeneous;
1870                        else
1871                          goto homogeneous;
1872                      else
1873                        if(ptr[offset5] > cb)
1874                          if(ptr[offset9] > cb)
1875                            if(ptr[offset6] > cb)
1876                              if(ptr[offset7] > cb)
1877                                if(ptr[offset8] > cb)
1878                                  if(ptr[offset4] > cb)
1879                                    if(ptr[offset3] > cb)
1880                                      goto success_homogeneous;
1881                                    else
1882                                      if(ptr[offset10] > cb)
1883                                        goto success_homogeneous;
1884                                      else
1885                                        goto homogeneous;
1886                                  else
1887                                    if(ptr[offset10] > cb)
1888                                      if(ptr[offset11] > cb)
1889                                        goto success_homogeneous;
1890                                      else
1891                                        goto homogeneous;
1892                                    else
1893                                      goto homogeneous;
1894                                else
1895                                  goto homogeneous;
1896                              else
1897                                goto homogeneous;
1898                            else
1899                              goto homogeneous;
1900                          else
1901                            goto homogeneous;
1902                        else
1903                          goto homogeneous;
1904                else
1905                  if(ptr[offset5] > cb)
1906                    if(ptr[offset9] > cb)
1907                      if(ptr[offset6] > cb)
1908                        if(ptr[offset7] > cb)
1909                          if(ptr[offset4] > cb)
1910                            if(ptr[offset3] > cb)
1911                              if(ptr[offset8] > cb)
1912                                goto success_homogeneous;
1913                              else
1914                                if(ptr[offset1] > cb)
1915                                  if(ptr[offset2] > cb)
1916                                    goto success_homogeneous;
1917                                  else
1918                                    goto homogeneous;
1919                                else
1920                                  goto homogeneous;
1921                            else
1922                              if(ptr[offset8] > cb)
1923                                if(ptr[offset10] > cb)
1924                                  goto success_homogeneous;
1925                                else
1926                                  goto homogeneous;
1927                              else
1928                                goto homogeneous;
1929                          else
1930                            if(ptr[offset11] > cb)
1931                              if(ptr[offset8] > cb)
1932                                if(ptr[offset10] > cb)
1933                                  goto success_homogeneous;
1934                                else
1935                                  goto homogeneous;
1936                              else
1937                                goto homogeneous;
1938                            else
1939                              goto homogeneous;
1940                        else
1941                          goto homogeneous;
1942                      else
1943                        goto homogeneous;
1944                    else
1945                      if(ptr[offset2] > cb)
1946                        if(ptr[offset3] > cb)
1947                          if(ptr[offset4] > cb)
1948                            if(ptr[offset7] > cb)
1949                              if(ptr[offset1] > cb)
1950                                if(ptr[offset6] > cb)
1951                                  goto success_homogeneous;
1952                                else
1953                                  goto homogeneous;
1954                              else
1955                                if(ptr[offset6] > cb)
1956                                  if(ptr[offset8] > cb)
1957                                    goto success_homogeneous;
1958                                  else
1959                                    goto homogeneous;
1960                                else
1961                                  goto homogeneous;
1962                            else
1963                              goto homogeneous;
1964                          else
1965                            goto homogeneous;
1966                        else
1967                          goto homogeneous;
1968                      else
1969                        goto homogeneous;
1970                  else
1971                    if(ptr[offset5] < c_b)
1972                      if(ptr[offset9] < c_b)
1973                        if(ptr[offset6] < c_b)
1974                          if(ptr[offset7] < c_b)
1975                            if(ptr[offset4] < c_b)
1976                              if(ptr[offset3] < c_b)
1977                                if(ptr[offset8] < c_b)
1978                                  goto success_homogeneous;
1979                                else
1980                                  if(ptr[offset1] < c_b)
1981                                    if(ptr[offset2] < c_b)
1982                                      goto success_homogeneous;
1983                                    else
1984                                      goto homogeneous;
1985                                  else
1986                                    goto homogeneous;
1987                              else
1988                                if(ptr[offset8] < c_b)
1989                                  if(ptr[offset10] < c_b)
1990                                    goto success_homogeneous;
1991                                  else
1992                                    goto homogeneous;
1993                                else
1994                                  goto homogeneous;
1995                            else
1996                              if(ptr[offset11] < c_b)
1997                                if(ptr[offset8] < c_b)
1998                                  if(ptr[offset10] < c_b)
1999                                    goto success_homogeneous;
2000                                  else
2001                                    goto homogeneous;
2002                                else
2003                                  goto homogeneous;
2004                              else
2005                                goto homogeneous;
2006                          else
2007                            goto homogeneous;
2008                        else
2009                          goto homogeneous;
2010                      else
2011                        if(ptr[offset2] < c_b)
2012                          if(ptr[offset3] < c_b)
2013                            if(ptr[offset4] < c_b)
2014                              if(ptr[offset7] < c_b)
2015                                if(ptr[offset1] < c_b)
2016                                  if(ptr[offset6] < c_b)
2017                                    goto success_homogeneous;
2018                                  else
2019                                    goto homogeneous;
2020                                else
2021                                  if(ptr[offset6] < c_b)
2022                                    if(ptr[offset8] < c_b)
2023                                      goto success_homogeneous;
2024                                    else
2025                                      goto homogeneous;
2026                                  else
2027                                    goto homogeneous;
2028                              else
2029                                goto homogeneous;
2030                            else
2031                              goto homogeneous;
2032                          else
2033                            goto homogeneous;
2034                        else
2035                          goto homogeneous;
2036                    else
2037                      goto homogeneous;
2038            }
2039          }
2040          structured:
2041          {
2042            x++;
2043            if(x > xsizeB)
2044                break;
2045            else
2046            {
2047                register const unsigned char* const ptr = img.ptr() + y*width + x;
2048                register const int cb = *ptr + threshold;
2049                register const int c_b = *ptr - threshold;
2050                if(ptr[offset0] > cb)
2051                  if(ptr[offset5] > cb)
2052                    if(ptr[offset2] > cb)
2053                      if(ptr[offset9] > cb)
2054                        if(ptr[offset1] > cb)
2055                          if(ptr[offset6] > cb)
2056                            if(ptr[offset3] > cb)
2057                              if(ptr[offset4] > cb)
2058                                goto success_structured;
2059                              else
2060                                if(ptr[offset10] > cb)
2061                                  if(ptr[offset11] > cb)
2062                                    goto success_structured;
2063                                  else
2064                                    goto structured;
2065                                else
2066                                  goto structured;
2067                            else
2068                              if(ptr[offset8] > cb)
2069                                if(ptr[offset10] > cb)
2070                                  if(ptr[offset11] > cb)
2071                                    goto success_structured;
2072                                  else
2073                                    if(ptr[offset4] > cb)
2074                                      if(ptr[offset7] > cb)
2075                                        goto success_structured;
2076                                      else
2077                                        goto structured;
2078                                    else
2079                                      goto structured;
2080                                else
2081                                  goto structured;
2082                              else
2083                                goto structured;
2084                          else
2085                            if(ptr[offset11] > cb)
2086                              if(ptr[offset3] > cb)
2087                                if(ptr[offset4] > cb)
2088                                  goto success_structured;
2089                                else
2090                                  if(ptr[offset10] > cb)
2091                                    goto success_structured;
2092                                  else
2093                                    goto structured;
2094                              else
2095                                if(ptr[offset8] > cb)
2096                                  if(ptr[offset10] > cb)
2097                                    goto success_structured;
2098                                  else
2099                                    goto structured;
2100                                else
2101                                  goto structured;
2102                            else
2103                              goto structured;
2104                        else
2105                          if(ptr[offset6] > cb)
2106                            if(ptr[offset7] > cb)
2107                              if(ptr[offset8] > cb)
2108                                if(ptr[offset4] > cb)
2109                                  if(ptr[offset3] > cb)
2110                                    goto success_structured;
2111                                  else
2112                                    if(ptr[offset10] > cb)
2113                                      goto success_structured;
2114                                    else
2115                                      goto structured;
2116                                else
2117                                  if(ptr[offset10] > cb)
2118                                    if(ptr[offset11] > cb)
2119                                      goto success_structured;
2120                                    else
2121                                      goto structured;
2122                                  else
2123                                    goto structured;
2124                              else
2125                                goto structured;
2126                            else
2127                              goto structured;
2128                          else
2129                            goto structured;
2130                      else
2131                        if(ptr[offset3] > cb)
2132                          if(ptr[offset4] > cb)
2133                            if(ptr[offset1] > cb)
2134                              if(ptr[offset6] > cb)
2135                                goto success_structured;
2136                              else
2137                                if(ptr[offset11] > cb)
2138                                  goto success_structured;
2139                                else
2140                                  goto structured;
2141                            else
2142                              if(ptr[offset6] > cb)
2143                                if(ptr[offset7] > cb)
2144                                  if(ptr[offset8] > cb)
2145                                    goto success_structured;
2146                                  else
2147                                    goto structured;
2148                                else
2149                                  goto structured;
2150                              else
2151                                goto structured;
2152                          else
2153                            goto structured;
2154                        else
2155                          goto structured;
2156                    else
2157                      if(ptr[offset9] > cb)
2158                        if(ptr[offset7] > cb)
2159                          if(ptr[offset8] > cb)
2160                            if(ptr[offset1] > cb)
2161                              if(ptr[offset10] > cb)
2162                                if(ptr[offset11] > cb)
2163                                  goto success_structured;
2164                                else
2165                                  if(ptr[offset6] > cb)
2166                                    if(ptr[offset4] > cb)
2167                                      goto success_structured;
2168                                    else
2169                                      goto structured;
2170                                  else
2171                                    goto structured;
2172                              else
2173                                if(ptr[offset6] > cb)
2174                                  if(ptr[offset3] > cb)
2175                                    if(ptr[offset4] > cb)
2176                                      goto success_structured;
2177                                    else
2178                                      goto structured;
2179                                  else
2180                                    goto structured;
2181                                else
2182                                  goto structured;
2183                            else
2184                              if(ptr[offset6] > cb)
2185                                if(ptr[offset4] > cb)
2186                                  if(ptr[offset3] > cb)
2187                                    goto success_structured;
2188                                  else
2189                                    if(ptr[offset10] > cb)
2190                                      goto success_structured;
2191                                    else
2192                                      goto structured;
2193                                else
2194                                  if(ptr[offset10] > cb)
2195                                    if(ptr[offset11] > cb)
2196                                      goto success_structured;
2197                                    else
2198                                      goto structured;
2199                                  else
2200                                    goto structured;
2201                              else
2202                                goto structured;
2203                          else
2204                            goto structured;
2205                        else
2206                          goto structured;
2207                      else
2208                        goto structured;
2209                  else
2210                    if(ptr[offset5] < c_b)
2211                      if(ptr[offset9] > cb)
2212                        if(ptr[offset3] < c_b)
2213                          if(ptr[offset4] < c_b)
2214                            if(ptr[offset11] > cb)
2215                              if(ptr[offset1] > cb)
2216                                if(ptr[offset8] > cb)
2217                                  if(ptr[offset10] > cb)
2218                                    if(ptr[offset2] > cb)
2219                                      goto success_structured;
2220                                    else
2221                                      if(ptr[offset7] > cb)
2222                                        goto success_structured;
2223                                      else
2224                                        goto structured;
2225                                  else
2226                                    goto structured;
2227                                else
2228                                  if(ptr[offset6] < c_b)
2229                                    if(ptr[offset2] < c_b)
2230                                      if(ptr[offset7] < c_b)
2231                                        if(ptr[offset8] < c_b)
2232                                          goto success_structured;
2233                                        else
2234                                          goto structured;
2235                                      else
2236                                        goto structured;
2237                                    else
2238                                      goto structured;
2239                                  else
2240                                    goto structured;
2241                              else
2242                                if(ptr[offset6] > cb)
2243                                  if(ptr[offset7] > cb)
2244                                    if(ptr[offset8] > cb)
2245                                      if(ptr[offset10] > cb)
2246                                        goto success_structured;
2247                                      else
2248                                        goto structured;
2249                                    else
2250                                      goto structured;
2251                                  else
2252                                    goto structured;
2253                                else
2254                                  if(ptr[offset6] < c_b)
2255                                    if(ptr[offset2] < c_b)
2256                                      if(ptr[offset7] < c_b)
2257                                        if(ptr[offset1] < c_b)
2258                                          goto success_structured;
2259                                        else
2260                                          if(ptr[offset8] < c_b)
2261                                            goto success_structured;
2262                                          else
2263                                            goto structured;
2264                                      else
2265                                        goto structured;
2266                                    else
2267                                      goto structured;
2268                                  else
2269                                    goto structured;
2270                            else
2271                              if(ptr[offset2] < c_b)
2272                                if(ptr[offset7] < c_b)
2273                                  if(ptr[offset1] < c_b)
2274                                    if(ptr[offset6] < c_b)
2275                                      goto success_structured;
2276                                    else
2277                                      goto structured;
2278                                  else
2279                                    if(ptr[offset6] < c_b)
2280                                      if(ptr[offset8] < c_b)
2281                                        goto success_structured;
2282                                      else
2283                                        goto structured;
2284                                    else
2285                                      goto structured;
2286                                else
2287                                  goto structured;
2288                              else
2289                                goto structured;
2290                          else
2291                            if(ptr[offset11] > cb)
2292                              if(ptr[offset8] > cb)
2293                                if(ptr[offset10] > cb)
2294                                  if(ptr[offset1] > cb)
2295                                    if(ptr[offset2] > cb)
2296                                      goto success_structured;
2297                                    else
2298                                      if(ptr[offset7] > cb)
2299                                        goto success_structured;
2300                                      else
2301                                        goto structured;
2302                                  else
2303                                    if(ptr[offset6] > cb)
2304                                      if(ptr[offset7] > cb)
2305                                        goto success_structured;
2306                                      else
2307                                        goto structured;
2308                                    else
2309                                      goto structured;
2310                                else
2311                                  goto structured;
2312                              else
2313                                goto structured;
2314                            else
2315                              goto structured;
2316                        else
2317                          if(ptr[offset11] > cb)
2318                            if(ptr[offset10] > cb)
2319                              if(ptr[offset3] > cb)
2320                                if(ptr[offset1] > cb)
2321                                  if(ptr[offset2] > cb)
2322                                    goto success_structured;
2323                                  else
2324                                    if(ptr[offset7] > cb)
2325                                      if(ptr[offset8] > cb)
2326                                        goto success_structured;
2327                                      else
2328                                        goto structured;
2329                                    else
2330                                      goto structured;
2331                                else
2332                                  if(ptr[offset6] > cb)
2333                                    if(ptr[offset7] > cb)
2334                                      if(ptr[offset8] > cb)
2335                                        goto success_structured;
2336                                      else
2337                                        goto structured;
2338                                    else
2339                                      goto structured;
2340                                  else
2341                                    goto structured;
2342                              else
2343                                if(ptr[offset8] > cb)
2344                                  if(ptr[offset1] > cb)
2345                                    if(ptr[offset2] > cb)
2346                                      goto success_structured;
2347                                    else
2348                                      if(ptr[offset7] > cb)
2349                                        goto success_structured;
2350                                      else
2351                                        goto structured;
2352                                  else
2353                                    if(ptr[offset6] > cb)
2354                                      if(ptr[offset7] > cb)
2355                                        goto success_structured;
2356                                      else
2357                                        goto structured;
2358                                    else
2359                                      goto structured;
2360                                else
2361                                  goto structured;
2362                            else
2363                              goto structured;
2364                          else
2365                            goto structured;
2366                      else
2367                        if(ptr[offset9] < c_b)
2368                          if(ptr[offset2] > cb)
2369                            if(ptr[offset1] > cb)
2370                              if(ptr[offset4] > cb)
2371                                if(ptr[offset10] > cb)
2372                                  if(ptr[offset3] > cb)
2373                                    if(ptr[offset11] > cb)
2374                                      goto success_structured;
2375                                    else
2376                                      goto structured;
2377                                  else
2378                                    goto structured;
2379                                else
2380                                  if(ptr[offset6] < c_b)
2381                                    if(ptr[offset7] < c_b)
2382                                      if(ptr[offset8] < c_b)
2383                                        if(ptr[offset11] < c_b)
2384                                          if(ptr[offset10] < c_b)
2385                                            goto success_structured;
2386                                          else
2387                                            goto structured;
2388                                        else
2389                                          goto structured;
2390                                      else
2391                                        goto structured;
2392                                    else
2393                                      goto structured;
2394                                  else
2395                                    goto structured;
2396                              else
2397                                if(ptr[offset6] < c_b)
2398                                  if(ptr[offset7] < c_b)
2399                                    if(ptr[offset8] < c_b)
2400                                      if(ptr[offset10] < c_b)
2401                                        if(ptr[offset4] < c_b)
2402                                          goto success_structured;
2403                                        else
2404                                          if(ptr[offset11] < c_b)
2405                                            goto success_structured;
2406                                          else
2407                                            goto structured;
2408                                      else
2409                                        if(ptr[offset3] < c_b)
2410                                          if(ptr[offset4] < c_b)
2411                                            goto success_structured;
2412                                          else
2413                                            goto structured;
2414                                        else
2415                                          goto structured;
2416                                    else
2417                                      goto structured;
2418                                  else
2419                                    goto structured;
2420                                else
2421                                  goto structured;
2422                            else
2423                              if(ptr[offset6] < c_b)
2424                                if(ptr[offset7] < c_b)
2425                                  if(ptr[offset8] < c_b)
2426                                    if(ptr[offset4] < c_b)
2427                                      if(ptr[offset3] < c_b)
2428                                        goto success_structured;
2429                                      else
2430                                        if(ptr[offset10] < c_b)
2431                                          goto success_structured;
2432                                        else
2433                                          goto structured;
2434                                    else
2435                                      if(ptr[offset10] < c_b)
2436                                        if(ptr[offset11] < c_b)
2437                                          goto success_structured;
2438                                        else
2439                                          goto structured;
2440                                      else
2441                                        goto structured;
2442                                  else
2443                                    goto structured;
2444                                else
2445                                  goto structured;
2446                              else
2447                                goto structured;
2448                          else
2449                            if(ptr[offset6] < c_b)
2450                              if(ptr[offset7] < c_b)
2451                                if(ptr[offset8] < c_b)
2452                                  if(ptr[offset4] < c_b)
2453                                    if(ptr[offset3] < c_b)
2454                                      goto success_structured;
2455                                    else
2456                                      if(ptr[offset10] < c_b)
2457                                        goto success_structured;
2458                                      else
2459                                        goto structured;
2460                                  else
2461                                    if(ptr[offset10] < c_b)
2462                                      if(ptr[offset11] < c_b)
2463                                        goto success_structured;
2464                                      else
2465                                        goto structured;
2466                                    else
2467                                      goto structured;
2468                                else
2469                                  if(ptr[offset2] < c_b)
2470                                    if(ptr[offset1] < c_b)
2471                                      if(ptr[offset3] < c_b)
2472                                        if(ptr[offset4] < c_b)
2473                                          goto success_structured;
2474                                        else
2475                                          goto structured;
2476                                      else
2477                                        goto structured;
2478                                    else
2479                                      goto structured;
2480                                  else
2481                                    goto structured;
2482                              else
2483                                goto structured;
2484                            else
2485                              goto structured;
2486                        else
2487                          if(ptr[offset2] > cb)
2488                            if(ptr[offset1] > cb)
2489                              if(ptr[offset3] > cb)
2490                                if(ptr[offset4] > cb)
2491                                  if(ptr[offset10] > cb)
2492                                    if(ptr[offset11] > cb)
2493                                      goto success_structured;
2494                                    else
2495                                      goto structured;
2496                                  else
2497                                    goto structured;
2498                                else
2499                                  goto structured;
2500                              else
2501                                goto structured;
2502                            else
2503                              goto structured;
2504                          else
2505                            if(ptr[offset2] < c_b)
2506                              if(ptr[offset3] < c_b)
2507                                if(ptr[offset4] < c_b)
2508                                  if(ptr[offset7] < c_b)
2509                                    if(ptr[offset1] < c_b)
2510                                      if(ptr[offset6] < c_b)
2511                                        goto success_structured;
2512                                      else
2513                                        goto structured;
2514                                    else
2515                                      if(ptr[offset6] < c_b)
2516                                        if(ptr[offset8] < c_b)
2517                                          goto success_structured;
2518                                        else
2519                                          goto structured;
2520                                      else
2521                                        goto structured;
2522                                  else
2523                                    goto structured;
2524                                else
2525                                  goto structured;
2526                              else
2527                                goto structured;
2528                            else
2529                              goto homogeneous;
2530                    else
2531                      if(ptr[offset2] > cb)
2532                        if(ptr[offset10] > cb)
2533                          if(ptr[offset11] > cb)
2534                            if(ptr[offset9] > cb)
2535                              if(ptr[offset1] > cb)
2536                                if(ptr[offset3] > cb)
2537                                  goto success_structured;
2538                                else
2539                                  if(ptr[offset8] > cb)
2540                                    goto success_structured;
2541                                  else
2542                                    goto structured;
2543                              else
2544                                if(ptr[offset6] > cb)
2545                                  if(ptr[offset7] > cb)
2546                                    if(ptr[offset8] > cb)
2547                                      goto success_structured;
2548                                    else
2549                                      goto structured;
2550                                  else
2551                                    goto structured;
2552                                else
2553                                  goto structured;
2554                            else
2555                              if(ptr[offset1] > cb)
2556                                if(ptr[offset3] > cb)
2557                                  if(ptr[offset4] > cb)
2558                                    goto success_structured;
2559                                  else
2560                                    goto structured;
2561                                else
2562                                  goto structured;
2563                              else
2564                                goto structured;
2565                          else
2566                            goto structured;
2567                        else
2568                          goto structured;
2569                      else
2570                        if(ptr[offset9] > cb)
2571                          if(ptr[offset7] > cb)
2572                            if(ptr[offset8] > cb)
2573                              if(ptr[offset10] > cb)
2574                                if(ptr[offset11] > cb)
2575                                  if(ptr[offset1] > cb)
2576                                    goto success_structured;
2577                                  else
2578                                    if(ptr[offset6] > cb)
2579                                      goto success_structured;
2580                                    else
2581                                      goto structured;
2582                                else
2583                                  goto structured;
2584                              else
2585                                goto structured;
2586                            else
2587                              goto structured;
2588                          else
2589                            goto structured;
2590                        else
2591                          goto structured;
2592                else if(ptr[offset0] < c_b)
2593                  if(ptr[offset2] > cb)
2594                    if(ptr[offset5] > cb)
2595                      if(ptr[offset7] > cb)
2596                        if(ptr[offset6] > cb)
2597                          if(ptr[offset4] > cb)
2598                            if(ptr[offset3] > cb)
2599                              if(ptr[offset1] > cb)
2600                                goto success_structured;
2601                              else
2602                                if(ptr[offset8] > cb)
2603                                  goto success_structured;
2604                                else
2605                                  goto structured;
2606                            else
2607                              if(ptr[offset9] > cb)
2608                                if(ptr[offset8] > cb)
2609                                  if(ptr[offset10] > cb)
2610                                    goto success_structured;
2611                                  else
2612                                    goto structured;
2613                                else
2614                                  goto structured;
2615                              else
2616                                goto structured;
2617                          else
2618                            if(ptr[offset9] > cb)
2619                              if(ptr[offset8] > cb)
2620                                if(ptr[offset10] > cb)
2621                                  if(ptr[offset11] > cb)
2622                                    goto success_structured;
2623                                  else
2624                                    goto structured;
2625                                else
2626                                  goto structured;
2627                              else
2628                                goto structured;
2629                            else
2630                              goto structured;
2631                        else
2632                          goto structured;
2633                      else
2634                        if(ptr[offset9] < c_b)
2635                          if(ptr[offset8] < c_b)
2636                            if(ptr[offset10] < c_b)
2637                              if(ptr[offset11] < c_b)
2638                                if(ptr[offset7] < c_b)
2639                                  if(ptr[offset1] < c_b)
2640                                    goto success_structured;
2641                                  else
2642                                    if(ptr[offset6] < c_b)
2643                                      goto success_structured;
2644                                    else
2645                                      goto structured;
2646                                else
2647                                  goto structured;
2648                              else
2649                                goto structured;
2650                            else
2651                              goto structured;
2652                          else
2653                            goto structured;
2654                        else
2655                          goto structured;
2656                    else
2657                      if(ptr[offset9] < c_b)
2658                        if(ptr[offset7] < c_b)
2659                          if(ptr[offset8] < c_b)
2660                            if(ptr[offset5] < c_b)
2661                              if(ptr[offset1] < c_b)
2662                                if(ptr[offset10] < c_b)
2663                                  if(ptr[offset11] < c_b)
2664                                    goto success_structured;
2665                                  else
2666                                    if(ptr[offset6] < c_b)
2667                                      if(ptr[offset4] < c_b)
2668                                        goto success_structured;
2669                                      else
2670                                        goto structured;
2671                                    else
2672                                      goto structured;
2673                                else
2674                                  if(ptr[offset6] < c_b)
2675                                    if(ptr[offset3] < c_b)
2676                                      if(ptr[offset4] < c_b)
2677                                        goto success_structured;
2678                                      else
2679                                        goto structured;
2680                                    else
2681                                      goto structured;
2682                                  else
2683                                    goto structured;
2684                              else
2685                                if(ptr[offset6] < c_b)
2686                                  if(ptr[offset4] < c_b)
2687                                    if(ptr[offset3] < c_b)
2688                                      goto success_structured;
2689                                    else
2690                                      if(ptr[offset10] < c_b)
2691                                        goto success_structured;
2692                                      else
2693                                        goto structured;
2694                                  else
2695                                    if(ptr[offset10] < c_b)
2696                                      if(ptr[offset11] < c_b)
2697                                        goto success_structured;
2698                                      else
2699                                        goto structured;
2700                                    else
2701                                      goto structured;
2702                                else
2703                                  goto structured;
2704                            else
2705                              if(ptr[offset10] < c_b)
2706                                if(ptr[offset11] < c_b)
2707                                  if(ptr[offset1] < c_b)
2708                                    goto success_structured;
2709                                  else
2710                                    if(ptr[offset6] < c_b)
2711                                      goto success_structured;
2712                                    else
2713                                      goto structured;
2714                                else
2715                                  goto structured;
2716                              else
2717                                goto structured;
2718                          else
2719                            goto structured;
2720                        else
2721                          goto structured;
2722                      else
2723                        goto structured;
2724                  else
2725                    if(ptr[offset2] < c_b)
2726                      if(ptr[offset9] > cb)
2727                        if(ptr[offset5] > cb)
2728                          if(ptr[offset1] < c_b)
2729                            if(ptr[offset4] < c_b)
2730                              if(ptr[offset10] < c_b)
2731                                if(ptr[offset3] < c_b)
2732                                  if(ptr[offset11] < c_b)
2733                                    goto success_structured;
2734                                  else
2735                                    goto structured;
2736                                else
2737                                  goto structured;
2738                              else
2739                                if(ptr[offset6] > cb)
2740                                  if(ptr[offset7] > cb)
2741                                    if(ptr[offset8] > cb)
2742                                      if(ptr[offset11] > cb)
2743                                        if(ptr[offset10] > cb)
2744                                          goto success_structured;
2745                                        else
2746                                          goto structured;
2747                                      else
2748                                        goto structured;
2749                                    else
2750                                      goto structured;
2751                                  else
2752                                    goto structured;
2753                                else
2754                                  goto structured;
2755                            else
2756                              if(ptr[offset6] > cb)
2757                                if(ptr[offset7] > cb)
2758                                  if(ptr[offset8] > cb)
2759                                    if(ptr[offset10] > cb)
2760                                      if(ptr[offset4] > cb)
2761                                        goto success_structured;
2762                                      else
2763                                        if(ptr[offset11] > cb)
2764                                          goto success_structured;
2765                                        else
2766                                          goto structured;
2767                                    else
2768                                      if(ptr[offset3] > cb)
2769                                        if(ptr[offset4] > cb)
2770                                          goto success_structured;
2771                                        else
2772                                          goto structured;
2773                                      else
2774                                        goto structured;
2775                                  else
2776                                    goto structured;
2777                                else
2778                                  goto structured;
2779                              else
2780                                goto structured;
2781                          else
2782                            if(ptr[offset6] > cb)
2783                              if(ptr[offset7] > cb)
2784                                if(ptr[offset8] > cb)
2785                                  if(ptr[offset4] > cb)
2786                                    if(ptr[offset3] > cb)
2787                                      goto success_structured;
2788                                    else
2789                                      if(ptr[offset10] > cb)
2790                                        goto success_structured;
2791                                      else
2792                                        goto structured;
2793                                  else
2794                                    if(ptr[offset10] > cb)
2795                                      if(ptr[offset11] > cb)
2796                                        goto success_structured;
2797                                      else
2798                                        goto structured;
2799                                    else
2800                                      goto structured;
2801                                else
2802                                  goto structured;
2803                              else
2804                                goto structured;
2805                            else
2806                              goto structured;
2807                        else
2808                          if(ptr[offset3] < c_b)
2809                            if(ptr[offset4] < c_b)
2810                              if(ptr[offset5] < c_b)
2811                                if(ptr[offset1] < c_b)
2812                                  if(ptr[offset6] < c_b)
2813                                    goto success_structured;
2814                                  else
2815                                    if(ptr[offset11] < c_b)
2816                                      goto success_structured;
2817                                    else
2818                                      goto structured;
2819                                else
2820                                  if(ptr[offset6] < c_b)
2821                                    if(ptr[offset7] < c_b)
2822                                      if(ptr[offset8] < c_b)
2823                                        goto success_structured;
2824                                      else
2825                                        goto structured;
2826                                    else
2827                                      goto structured;
2828                                  else
2829                                    goto structured;
2830                              else
2831                                if(ptr[offset1] < c_b)
2832                                  if(ptr[offset10] < c_b)
2833                                    if(ptr[offset11] < c_b)
2834                                      goto success_structured;
2835                                    else
2836                                      goto structured;
2837                                  else
2838                                    goto structured;
2839                                else
2840                                  goto structured;
2841                            else
2842                              goto structured;
2843                          else
2844                            goto structured;
2845                      else
2846                        if(ptr[offset9] < c_b)
2847                          if(ptr[offset5] < c_b)
2848                            if(ptr[offset1] < c_b)
2849                              if(ptr[offset6] < c_b)
2850                                if(ptr[offset3] < c_b)
2851                                  if(ptr[offset4] < c_b)
2852                                    goto success_structured;
2853                                  else
2854                                    if(ptr[offset10] < c_b)
2855                                      if(ptr[offset11] < c_b)
2856                                        goto success_structured;
2857                                      else
2858                                        goto structured;
2859                                    else
2860                                      goto structured;
2861                                else
2862                                  if(ptr[offset8] < c_b)
2863                                    if(ptr[offset10] < c_b)
2864                                      if(ptr[offset11] < c_b)
2865                                        goto success_structured;
2866                                      else
2867                                        if(ptr[offset4] < c_b)
2868                                          if(ptr[offset7] < c_b)
2869                                            goto success_structured;
2870                                          else
2871                                            goto structured;
2872                                        else
2873                                          goto structured;
2874                                    else
2875                                      goto structured;
2876                                  else
2877                                    goto structured;
2878                              else
2879                                if(ptr[offset11] < c_b)
2880                                  if(ptr[offset3] < c_b)
2881                                    if(ptr[offset4] < c_b)
2882                                      goto success_structured;
2883                                    else
2884                                      if(ptr[offset10] < c_b)
2885                                        goto success_structured;
2886                                      else
2887                                        goto structured;
2888                                  else
2889                                    if(ptr[offset8] < c_b)
2890                                      if(ptr[offset10] < c_b)
2891                                        goto success_structured;
2892                                      else
2893                                        goto structured;
2894                                    else
2895                                      goto structured;
2896                                else
2897                                  goto structured;
2898                            else
2899                              if(ptr[offset6] < c_b)
2900                                if(ptr[offset7] < c_b)
2901                                  if(ptr[offset8] < c_b)
2902                                    if(ptr[offset4] < c_b)
2903                                      if(ptr[offset3] < c_b)
2904                                        goto success_structured;
2905                                      else
2906                                        if(ptr[offset10] < c_b)
2907                                          goto success_structured;
2908                                        else
2909                                          goto structured;
2910                                    else
2911                                      if(ptr[offset10] < c_b)
2912                                        if(ptr[offset11] < c_b)
2913                                          goto success_structured;
2914                                        else
2915                                          goto structured;
2916                                      else
2917                                        goto structured;
2918                                  else
2919                                    goto structured;
2920                                else
2921                                  goto structured;
2922                              else
2923                                goto structured;
2924                          else
2925                            if(ptr[offset10] < c_b)
2926                              if(ptr[offset11] < c_b)
2927                                if(ptr[offset1] < c_b)
2928                                  if(ptr[offset3] < c_b)
2929                                    goto success_structured;
2930                                  else
2931                                    if(ptr[offset8] < c_b)
2932                                      goto success_structured;
2933                                    else
2934                                      goto structured;
2935                                else
2936                                  if(ptr[offset6] < c_b)
2937                                    if(ptr[offset7] < c_b)
2938                                      if(ptr[offset8] < c_b)
2939                                        goto success_structured;
2940                                      else
2941                                        goto structured;
2942                                    else
2943                                      goto structured;
2944                                  else
2945                                    goto structured;
2946                              else
2947                                goto structured;
2948                            else
2949                              goto structured;
2950                        else
2951                          if(ptr[offset3] < c_b)
2952                            if(ptr[offset4] < c_b)
2953                              if(ptr[offset5] < c_b)
2954                                if(ptr[offset1] < c_b)
2955                                  if(ptr[offset6] < c_b)
2956                                    goto success_structured;
2957                                  else
2958                                    if(ptr[offset11] < c_b)
2959                                      goto success_structured;
2960                                    else
2961                                      goto structured;
2962                                else
2963                                  if(ptr[offset6] < c_b)
2964                                    if(ptr[offset7] < c_b)
2965                                      if(ptr[offset8] < c_b)
2966                                        goto success_structured;
2967                                      else
2968                                        goto structured;
2969                                    else
2970                                      goto structured;
2971                                  else
2972                                    goto structured;
2973                              else
2974                                if(ptr[offset1] < c_b)
2975                                  if(ptr[offset10] < c_b)
2976                                    if(ptr[offset11] < c_b)
2977                                      goto success_structured;
2978                                    else
2979                                      goto structured;
2980                                  else
2981                                    goto structured;
2982                                else
2983                                  goto structured;
2984                            else
2985                              goto structured;
2986                          else
2987                            goto structured;
2988                    else
2989                      if(ptr[offset9] < c_b)
2990                        if(ptr[offset7] < c_b)
2991                          if(ptr[offset8] < c_b)
2992                            if(ptr[offset5] < c_b)
2993                              if(ptr[offset1] < c_b)
2994                                if(ptr[offset10] < c_b)
2995                                  if(ptr[offset11] < c_b)
2996                                    goto success_structured;
2997                                  else
2998                                    if(ptr[offset6] < c_b)
2999                                      if(ptr[offset4] < c_b)
3000                                        goto success_structured;
3001                                      else
3002                                        goto structured;
3003                                    else
3004                                      goto structured;
3005                                else
3006                                  if(ptr[offset6] < c_b)
3007                                    if(ptr[offset3] < c_b)
3008                                      if(ptr[offset4] < c_b)
3009                                        goto success_structured;
3010                                      else
3011                                        goto structured;
3012                                    else
3013                                      goto structured;
3014                                  else
3015                                    goto structured;
3016                              else
3017                                if(ptr[offset6] < c_b)
3018                                  if(ptr[offset4] < c_b)
3019                                    if(ptr[offset3] < c_b)
3020                                      goto success_structured;
3021                                    else
3022                                      if(ptr[offset10] < c_b)
3023                                        goto success_structured;
3024                                      else
3025                                        goto structured;
3026                                  else
3027                                    if(ptr[offset10] < c_b)
3028                                      if(ptr[offset11] < c_b)
3029                                        goto success_structured;
3030                                      else
3031                                        goto structured;
3032                                    else
3033                                      goto structured;
3034                                else
3035                                  goto structured;
3036                            else
3037                              if(ptr[offset10] < c_b)
3038                                if(ptr[offset11] < c_b)
3039                                  if(ptr[offset1] < c_b)
3040                                    goto success_structured;
3041                                  else
3042                                    if(ptr[offset6] < c_b)
3043                                      goto success_structured;
3044                                    else
3045                                      goto structured;
3046                                else
3047                                  goto structured;
3048                              else
3049                                goto structured;
3050                          else
3051                            goto structured;
3052                        else
3053                          goto structured;
3054                      else
3055                        if(ptr[offset5] > cb)
3056                          if(ptr[offset9] > cb)
3057                            if(ptr[offset6] > cb)
3058                              if(ptr[offset7] > cb)
3059                                if(ptr[offset8] > cb)
3060                                  if(ptr[offset4] > cb)
3061                                    if(ptr[offset3] > cb)
3062                                      goto success_structured;
3063                                    else
3064                                      if(ptr[offset10] > cb)
3065                                        goto success_structured;
3066                                      else
3067                                        goto structured;
3068                                  else
3069                                    if(ptr[offset10] > cb)
3070                                      if(ptr[offset11] > cb)
3071                                        goto success_structured;
3072                                      else
3073                                        goto structured;
3074                                    else
3075                                      goto structured;
3076                                else
3077                                  goto structured;
3078                              else
3079                                goto structured;
3080                            else
3081                              goto structured;
3082                          else
3083                            goto homogeneous;
3084                        else
3085                          goto structured;
3086                else
3087                  if(ptr[offset5] > cb)
3088                    if(ptr[offset9] > cb)
3089                      if(ptr[offset6] > cb)
3090                        if(ptr[offset7] > cb)
3091                          if(ptr[offset4] > cb)
3092                            if(ptr[offset3] > cb)
3093                              if(ptr[offset8] > cb)
3094                                goto success_structured;
3095                              else
3096                                if(ptr[offset1] > cb)
3097                                  if(ptr[offset2] > cb)
3098                                    goto success_structured;
3099                                  else
3100                                    goto structured;
3101                                else
3102                                  goto structured;
3103                            else
3104                              if(ptr[offset8] > cb)
3105                                if(ptr[offset10] > cb)
3106                                  goto success_structured;
3107                                else
3108                                  goto structured;
3109                              else
3110                                goto structured;
3111                          else
3112                            if(ptr[offset11] > cb)
3113                              if(ptr[offset8] > cb)
3114                                if(ptr[offset10] > cb)
3115                                  goto success_structured;
3116                                else
3117                                  goto structured;
3118                              else
3119                                goto structured;
3120                            else
3121                              goto structured;
3122                        else
3123                          goto structured;
3124                      else
3125                        goto structured;
3126                    else
3127                      if(ptr[offset2] > cb)
3128                        if(ptr[offset3] > cb)
3129                          if(ptr[offset4] > cb)
3130                            if(ptr[offset7] > cb)
3131                              if(ptr[offset1] > cb)
3132                                if(ptr[offset6] > cb)
3133                                  goto success_structured;
3134                                else
3135                                  goto structured;
3136                              else
3137                                if(ptr[offset6] > cb)
3138                                  if(ptr[offset8] > cb)
3139                                    goto success_structured;
3140                                  else
3141                                    goto structured;
3142                                else
3143                                  goto structured;
3144                            else
3145                              goto structured;
3146                          else
3147                            goto structured;
3148                        else
3149                          goto structured;
3150                      else
3151                        goto structured;
3152                  else
3153                    if(ptr[offset5] < c_b)
3154                      if(ptr[offset9] < c_b)
3155                        if(ptr[offset6] < c_b)
3156                          if(ptr[offset7] < c_b)
3157                            if(ptr[offset4] < c_b)
3158                              if(ptr[offset3] < c_b)
3159                                if(ptr[offset8] < c_b)
3160                                  goto success_structured;
3161                                else
3162                                  if(ptr[offset1] < c_b)
3163                                    if(ptr[offset2] < c_b)
3164                                      goto success_structured;
3165                                    else
3166                                      goto structured;
3167                                  else
3168                                    goto structured;
3169                              else
3170                                if(ptr[offset8] < c_b)
3171                                  if(ptr[offset10] < c_b)
3172                                    goto success_structured;
3173                                  else
3174                                    goto structured;
3175                                else
3176                                  goto structured;
3177                            else
3178                              if(ptr[offset11] < c_b)
3179                                if(ptr[offset8] < c_b)
3180                                  if(ptr[offset10] < c_b)
3181                                    goto success_structured;
3182                                  else
3183                                    goto structured;
3184                                else
3185                                  goto structured;
3186                              else
3187                                goto structured;
3188                          else
3189                            goto structured;
3190                        else
3191                          goto structured;
3192                      else
3193                        if(ptr[offset2] < c_b)
3194                          if(ptr[offset3] < c_b)
3195                            if(ptr[offset4] < c_b)
3196                              if(ptr[offset7] < c_b)
3197                                if(ptr[offset1] < c_b)
3198                                  if(ptr[offset6] < c_b)
3199                                    goto success_structured;
3200                                  else
3201                                    goto structured;
3202                                else
3203                                  if(ptr[offset6] < c_b)
3204                                    if(ptr[offset8] < c_b)
3205                                      goto success_structured;
3206                                    else
3207                                      goto structured;
3208                                  else
3209                                    goto structured;
3210                              else
3211                                goto structured;
3212                            else
3213                              goto structured;
3214                          else
3215                            goto structured;
3216                        else
3217                          goto structured;
3218                    else
3219                      goto homogeneous;
3220            }
3221          }
3222          success_homogeneous:
3223            if(total == nExpectedCorners)
3224            {
3225                if(nExpectedCorners == 0)
3226                {
3227                    nExpectedCorners = 512;
3228                    keypoints.reserve(nExpectedCorners);
3229                }
3230                else
3231                {
3232                    nExpectedCorners *= 2;
3233                    keypoints.reserve(nExpectedCorners);
3234                }
3235            }
3236            keypoints.push_back(KeyPoint(Point2f((float)x, (float)y), 1.0f));
3237            total++;
3238            goto homogeneous;
3239          success_structured:
3240            if(total == nExpectedCorners)
3241            {
3242                if(nExpectedCorners == 0)
3243                {
3244                    nExpectedCorners = 512;
3245                    keypoints.reserve(nExpectedCorners);
3246                }
3247                else
3248                {
3249                    nExpectedCorners *= 2;
3250                    keypoints.reserve(nExpectedCorners);
3251                }
3252            }
3253            keypoints.push_back(KeyPoint(Point2f((float)x, (float)y), 1.0f));
3254            total++;
3255            goto structured;
3256        }
3257    }
3258}
3259
3260static void AGAST_7_12s(InputArray _img, std::vector<KeyPoint>& keypoints, int threshold)
3261{
3262    cv::Mat img;
3263    if(!_img.getMat().isContinuous())
3264      img = _img.getMat().clone();
3265    else
3266      img = _img.getMat();
3267
3268    size_t total = 0;
3269    int xsize = img.cols;
3270    int ysize = img.rows;
3271    size_t nExpectedCorners = keypoints.capacity();
3272    register int x, y;
3273    register int xsizeB=xsize - 3; //2, +1 due to faster test x>xsizeB
3274    register int ysizeB=ysize - 2;
3275    register int width;
3276
3277    keypoints.resize(0);
3278
3279    int pixel_7_12s_[16];
3280    makeAgastOffsets(pixel_7_12s_, (int)img.step, AgastFeatureDetector::AGAST_7_12s);
3281
3282    register short offset0 = (short) pixel_7_12s_[0];
3283    register short offset1 = (short) pixel_7_12s_[1];
3284    register short offset2 = (short) pixel_7_12s_[2];
3285    register short offset3 = (short) pixel_7_12s_[3];
3286    register short offset4 = (short) pixel_7_12s_[4];
3287    register short offset5 = (short) pixel_7_12s_[5];
3288    register short offset6 = (short) pixel_7_12s_[6];
3289    register short offset7 = (short) pixel_7_12s_[7];
3290    register short offset8 = (short) pixel_7_12s_[8];
3291    register short offset9 = (short) pixel_7_12s_[9];
3292    register short offset10 = (short) pixel_7_12s_[10];
3293    register short offset11 = (short) pixel_7_12s_[11];
3294
3295    width = xsize;
3296
3297    for(y = 2; y < ysizeB; y++)
3298    {
3299        x = 1;
3300        while(true)
3301        {
3302          homogeneous:
3303          {
3304            x++;
3305            if(x > xsizeB)
3306                break;
3307            else
3308            {
3309                register const unsigned char* const ptr = img.ptr() + y*width + x;
3310                register const int cb = *ptr + threshold;
3311                register const int c_b = *ptr - threshold;
3312                if(ptr[offset0] > cb)
3313                  if(ptr[offset2] > cb)
3314                    if(ptr[offset5] > cb)
3315                      if(ptr[offset9] > cb)
3316                        if(ptr[offset7] > cb)
3317                          if(ptr[offset1] > cb)
3318                            if(ptr[offset6] > cb)
3319                              if(ptr[offset3] > cb)
3320                                if(ptr[offset4] > cb)
3321                                  goto success_structured;
3322                                else
3323                                  if(ptr[offset10] > cb)
3324                                    if(ptr[offset11] > cb)
3325                                      goto success_structured;
3326                                    else
3327                                      goto structured;
3328                                  else
3329                                    goto homogeneous;
3330                              else
3331                                if(ptr[offset8] > cb)
3332                                  if(ptr[offset10] > cb)
3333                                    if(ptr[offset4] > cb)
3334                                      goto success_structured;
3335                                    else
3336                                      if(ptr[offset11] > cb)
3337                                        goto success_structured;
3338                                      else
3339                                        goto structured;
3340                                  else
3341                                    goto homogeneous;
3342                                else
3343                                  goto homogeneous;
3344                            else
3345                              if(ptr[offset11] > cb)
3346                                if(ptr[offset3] > cb)
3347                                  if(ptr[offset4] > cb)
3348                                    goto success_structured;
3349                                  else
3350                                    if(ptr[offset10] > cb)
3351                                      goto success_structured;
3352                                    else
3353                                      goto homogeneous;
3354                                else
3355                                  if(ptr[offset8] > cb)
3356                                    if(ptr[offset10] > cb)
3357                                      goto success_structured;
3358                                    else
3359                                      goto homogeneous;
3360                                  else
3361                                    goto homogeneous;
3362                              else
3363                                goto homogeneous;
3364                          else
3365                            if(ptr[offset6] > cb)
3366                              if(ptr[offset8] > cb)
3367                                if(ptr[offset4] > cb)
3368                                  if(ptr[offset3] > cb)
3369                                    goto success_structured;
3370                                  else
3371                                    if(ptr[offset10] > cb)
3372                                      goto success_structured;
3373                                    else
3374                                      goto homogeneous;
3375                                else
3376                                  if(ptr[offset10] > cb)
3377                                    if(ptr[offset11] > cb)
3378                                      goto success_structured;
3379                                    else
3380                                      goto homogeneous;
3381                                  else
3382                                    goto homogeneous;
3383                              else
3384                                goto homogeneous;
3385                            else
3386                              goto homogeneous;
3387                        else
3388                          if(ptr[offset1] > cb)
3389                            if(ptr[offset11] > cb)
3390                              if(ptr[offset3] > cb)
3391                                if(ptr[offset4] > cb)
3392                                  goto success_homogeneous;
3393                                else
3394                                  if(ptr[offset10] > cb)
3395                                    goto success_homogeneous;
3396                                  else
3397                                    goto homogeneous;
3398                              else
3399                                if(ptr[offset8] > cb)
3400                                  if(ptr[offset10] > cb)
3401                                    goto success_homogeneous;
3402                                  else
3403                                    goto homogeneous;
3404                                else
3405                                  goto homogeneous;
3406                            else
3407                              if(ptr[offset6] > cb)
3408                                if(ptr[offset3] > cb)
3409                                  if(ptr[offset4] > cb)
3410                                    goto success_homogeneous;
3411                                  else
3412                                    goto homogeneous;
3413                                else
3414                                  goto homogeneous;
3415                              else
3416                                goto homogeneous;
3417                          else
3418                            goto homogeneous;
3419                      else
3420                        if(ptr[offset3] > cb)
3421                          if(ptr[offset4] > cb)
3422                            if(ptr[offset7] > cb)
3423                              if(ptr[offset1] > cb)
3424                                if(ptr[offset6] > cb)
3425                                  goto success_homogeneous;
3426                                else
3427                                  if(ptr[offset11] > cb)
3428                                    goto success_homogeneous;
3429                                  else
3430                                    goto homogeneous;
3431                              else
3432                                if(ptr[offset6] > cb)
3433                                  if(ptr[offset8] > cb)
3434                                    goto success_homogeneous;
3435                                  else
3436                                    goto homogeneous;
3437                                else
3438                                  goto homogeneous;
3439                            else
3440                              if(ptr[offset1] > cb)
3441                                if(ptr[offset6] > cb)
3442                                  goto success_homogeneous;
3443                                else
3444                                  if(ptr[offset11] > cb)
3445                                    goto success_homogeneous;
3446                                  else
3447                                    goto homogeneous;
3448                              else
3449                                goto homogeneous;
3450                          else
3451                            goto homogeneous;
3452                        else
3453                          goto homogeneous;
3454                    else
3455                      if(ptr[offset9] < c_b)
3456                        if(ptr[offset7] < c_b)
3457                          if(ptr[offset5] < c_b)
3458                            if(ptr[offset1] > cb)
3459                              if(ptr[offset4] > cb)
3460                                if(ptr[offset10] > cb)
3461                                  if(ptr[offset3] > cb)
3462                                    if(ptr[offset11] > cb)
3463                                      goto success_structured;
3464                                    else
3465                                      goto structured;
3466                                  else
3467                                    goto homogeneous;
3468                                else
3469                                  if(ptr[offset6] < c_b)
3470                                    if(ptr[offset8] < c_b)
3471                                      if(ptr[offset11] < c_b)
3472                                        if(ptr[offset10] < c_b)
3473                                          goto success_structured;
3474                                        else
3475                                          goto structured;
3476                                      else
3477                                        goto structured;
3478                                    else
3479                                      goto homogeneous;
3480                                  else
3481                                    goto homogeneous;
3482                              else
3483                                if(ptr[offset6] < c_b)
3484                                  if(ptr[offset8] < c_b)
3485                                    if(ptr[offset10] < c_b)
3486                                      if(ptr[offset4] < c_b)
3487                                        goto success_structured;
3488                                      else
3489                                        if(ptr[offset11] < c_b)
3490                                          goto success_structured;
3491                                        else
3492                                          goto structured;
3493                                    else
3494                                      if(ptr[offset3] < c_b)
3495                                        if(ptr[offset4] < c_b)
3496                                          goto success_structured;
3497                                        else
3498                                          goto structured;
3499                                      else
3500                                        goto homogeneous;
3501                                  else
3502                                    goto homogeneous;
3503                                else
3504                                  goto homogeneous;
3505                            else
3506                              if(ptr[offset6] < c_b)
3507                                if(ptr[offset8] < c_b)
3508                                  if(ptr[offset4] < c_b)
3509                                    if(ptr[offset3] < c_b)
3510                                      goto success_structured;
3511                                    else
3512                                      if(ptr[offset10] < c_b)
3513                                        goto success_structured;
3514                                      else
3515                                        goto homogeneous;
3516                                  else
3517                                    if(ptr[offset10] < c_b)
3518                                      if(ptr[offset11] < c_b)
3519                                        goto success_structured;
3520                                      else
3521                                        goto homogeneous;
3522                                    else
3523                                      goto homogeneous;
3524                                else
3525                                  goto homogeneous;
3526                              else
3527                                goto homogeneous;
3528                          else
3529                            if(ptr[offset1] > cb)
3530                              if(ptr[offset3] > cb)
3531                                if(ptr[offset4] > cb)
3532                                  if(ptr[offset10] > cb)
3533                                    if(ptr[offset11] > cb)
3534                                      goto success_structured;
3535                                    else
3536                                      goto homogeneous;
3537                                  else
3538                                    goto homogeneous;
3539                                else
3540                                  goto homogeneous;
3541                              else
3542                                goto homogeneous;
3543                            else
3544                              goto homogeneous;
3545                        else
3546                          if(ptr[offset1] > cb)
3547                            if(ptr[offset3] > cb)
3548                              if(ptr[offset4] > cb)
3549                                if(ptr[offset10] > cb)
3550                                  if(ptr[offset11] > cb)
3551                                    goto success_homogeneous;
3552                                  else
3553                                    goto homogeneous;
3554                                else
3555                                  goto homogeneous;
3556                              else
3557                                goto homogeneous;
3558                            else
3559                              goto homogeneous;
3560                          else
3561                            goto homogeneous;
3562                      else
3563                        if(ptr[offset10] > cb)
3564                          if(ptr[offset11] > cb)
3565                            if(ptr[offset9] > cb)
3566                              if(ptr[offset7] > cb)
3567                                if(ptr[offset1] > cb)
3568                                  if(ptr[offset3] > cb)
3569                                    goto success_homogeneous;
3570                                  else
3571                                    if(ptr[offset8] > cb)
3572                                      goto success_homogeneous;
3573                                    else
3574                                      goto homogeneous;
3575                                else
3576                                  if(ptr[offset6] > cb)
3577                                    if(ptr[offset8] > cb)
3578                                      goto success_homogeneous;
3579                                    else
3580                                      goto homogeneous;
3581                                  else
3582                                    goto homogeneous;
3583                              else
3584                                if(ptr[offset1] > cb)
3585                                  if(ptr[offset3] > cb)
3586                                    goto success_homogeneous;
3587                                  else
3588                                    if(ptr[offset8] > cb)
3589                                      goto success_homogeneous;
3590                                    else
3591                                      goto homogeneous;
3592                                else
3593                                  goto homogeneous;
3594                            else
3595                              if(ptr[offset1] > cb)
3596                                if(ptr[offset3] > cb)
3597                                  if(ptr[offset4] > cb)
3598                                    goto success_homogeneous;
3599                                  else
3600                                    goto homogeneous;
3601                                else
3602                                  goto homogeneous;
3603                              else
3604                                goto homogeneous;
3605                          else
3606                            goto homogeneous;
3607                        else
3608                          goto homogeneous;
3609                  else
3610                    if(ptr[offset7] > cb)
3611                      if(ptr[offset9] > cb)
3612                        if(ptr[offset8] > cb)
3613                          if(ptr[offset5] > cb)
3614                            if(ptr[offset1] > cb)
3615                              if(ptr[offset10] > cb)
3616                                if(ptr[offset11] > cb)
3617                                  goto success_homogeneous;
3618                                else
3619                                  if(ptr[offset6] > cb)
3620                                    if(ptr[offset4] > cb)
3621                                      goto success_structured;
3622                                    else
3623                                      goto homogeneous;
3624                                  else
3625                                    goto homogeneous;
3626                              else
3627                                if(ptr[offset6] > cb)
3628                                  if(ptr[offset3] > cb)
3629                                    if(ptr[offset4] > cb)
3630                                      goto success_structured;
3631                                    else
3632                                      goto homogeneous;
3633                                  else
3634                                    goto homogeneous;
3635                                else
3636                                  goto homogeneous;
3637                            else
3638                              if(ptr[offset6] > cb)
3639                                if(ptr[offset4] > cb)
3640                                  if(ptr[offset3] > cb)
3641                                    goto success_homogeneous;
3642                                  else
3643                                    if(ptr[offset10] > cb)
3644                                      goto success_homogeneous;
3645                                    else
3646                                      goto homogeneous;
3647                                else
3648                                  if(ptr[offset10] > cb)
3649                                    if(ptr[offset11] > cb)
3650                                      goto success_homogeneous;
3651                                    else
3652                                      goto homogeneous;
3653                                  else
3654                                    goto homogeneous;
3655                              else
3656                                goto homogeneous;
3657                          else
3658                            if(ptr[offset10] > cb)
3659                              if(ptr[offset11] > cb)
3660                                if(ptr[offset1] > cb)
3661                                  goto success_homogeneous;
3662                                else
3663                                  if(ptr[offset6] > cb)
3664                                    goto success_homogeneous;
3665                                  else
3666                                    goto homogeneous;
3667                              else
3668                                goto homogeneous;
3669                            else
3670                              goto homogeneous;
3671                        else
3672                          goto homogeneous;
3673                      else
3674                        goto homogeneous;
3675                    else
3676                      if(ptr[offset7] < c_b)
3677                        if(ptr[offset5] < c_b)
3678                          if(ptr[offset2] < c_b)
3679                            if(ptr[offset6] < c_b)
3680                              if(ptr[offset4] < c_b)
3681                                if(ptr[offset3] < c_b)
3682                                  if(ptr[offset1] < c_b)
3683                                    goto success_homogeneous;
3684                                  else
3685                                    if(ptr[offset8] < c_b)
3686                                      goto success_homogeneous;
3687                                    else
3688                                      goto homogeneous;
3689                                else
3690                                  if(ptr[offset9] < c_b)
3691                                    if(ptr[offset8] < c_b)
3692                                      if(ptr[offset10] < c_b)
3693                                        goto success_structured;
3694                                      else
3695                                        goto homogeneous;
3696                                    else
3697                                      goto homogeneous;
3698                                  else
3699                                    goto homogeneous;
3700                              else
3701                                if(ptr[offset9] < c_b)
3702                                  if(ptr[offset8] < c_b)
3703                                    if(ptr[offset10] < c_b)
3704                                      if(ptr[offset11] < c_b)
3705                                        goto success_structured;
3706                                      else
3707                                        goto homogeneous;
3708                                    else
3709                                      goto homogeneous;
3710                                  else
3711                                    goto homogeneous;
3712                                else
3713                                  goto homogeneous;
3714                            else
3715                              goto homogeneous;
3716                          else
3717                            if(ptr[offset9] < c_b)
3718                              if(ptr[offset6] < c_b)
3719                                if(ptr[offset8] < c_b)
3720                                  if(ptr[offset4] < c_b)
3721                                    if(ptr[offset3] < c_b)
3722                                      goto success_homogeneous;
3723                                    else
3724                                      if(ptr[offset10] < c_b)
3725                                        goto success_homogeneous;
3726                                      else
3727                                        goto homogeneous;
3728                                  else
3729                                    if(ptr[offset10] < c_b)
3730                                      if(ptr[offset11] < c_b)
3731                                        goto success_homogeneous;
3732                                      else
3733                                        goto homogeneous;
3734                                    else
3735                                      goto homogeneous;
3736                                else
3737                                  goto homogeneous;
3738                              else
3739                                goto homogeneous;
3740                            else
3741                              goto homogeneous;
3742                        else
3743                          goto homogeneous;
3744                      else
3745                        goto homogeneous;
3746                else if(ptr[offset0] < c_b)
3747                  if(ptr[offset2] < c_b)
3748                    if(ptr[offset9] < c_b)
3749                      if(ptr[offset5] < c_b)
3750                        if(ptr[offset7] < c_b)
3751                          if(ptr[offset1] < c_b)
3752                            if(ptr[offset6] < c_b)
3753                              if(ptr[offset3] < c_b)
3754                                if(ptr[offset4] < c_b)
3755                                  goto success_structured;
3756                                else
3757                                  if(ptr[offset10] < c_b)
3758                                    if(ptr[offset11] < c_b)
3759                                      goto success_structured;
3760                                    else
3761                                      goto structured;
3762                                  else
3763                                    goto homogeneous;
3764                              else
3765                                if(ptr[offset8] < c_b)
3766                                  if(ptr[offset10] < c_b)
3767                                    if(ptr[offset4] < c_b)
3768                                      goto success_structured;
3769                                    else
3770                                      if(ptr[offset11] < c_b)
3771                                        goto success_structured;
3772                                      else
3773                                        goto structured;
3774                                  else
3775                                    goto homogeneous;
3776                                else
3777                                  goto homogeneous;
3778                            else
3779                              if(ptr[offset11] < c_b)
3780                                if(ptr[offset3] < c_b)
3781                                  if(ptr[offset4] < c_b)
3782                                    goto success_structured;
3783                                  else
3784                                    if(ptr[offset10] < c_b)
3785                                      goto success_structured;
3786                                    else
3787                                      goto homogeneous;
3788                                else
3789                                  if(ptr[offset8] < c_b)
3790                                    if(ptr[offset10] < c_b)
3791                                      goto success_structured;
3792                                    else
3793                                      goto homogeneous;
3794                                  else
3795                                    goto homogeneous;
3796                              else
3797                                goto homogeneous;
3798                          else
3799                            if(ptr[offset6] < c_b)
3800                              if(ptr[offset8] < c_b)
3801                                if(ptr[offset4] < c_b)
3802                                  if(ptr[offset3] < c_b)
3803                                    goto success_structured;
3804                                  else
3805                                    if(ptr[offset10] < c_b)
3806                                      goto success_structured;
3807                                    else
3808                                      goto homogeneous;
3809                                else
3810                                  if(ptr[offset10] < c_b)
3811                                    if(ptr[offset11] < c_b)
3812                                      goto success_structured;
3813                                    else
3814                                      goto homogeneous;
3815                                  else
3816                                    goto homogeneous;
3817                              else
3818                                goto homogeneous;
3819                            else
3820                              goto homogeneous;
3821                        else
3822                          if(ptr[offset1] < c_b)
3823                            if(ptr[offset11] < c_b)
3824                              if(ptr[offset3] < c_b)
3825                                if(ptr[offset4] < c_b)
3826                                  goto success_homogeneous;
3827                                else
3828                                  if(ptr[offset10] < c_b)
3829                                    goto success_homogeneous;
3830                                  else
3831                                    goto homogeneous;
3832                              else
3833                                if(ptr[offset8] < c_b)
3834                                  if(ptr[offset10] < c_b)
3835                                    goto success_homogeneous;
3836                                  else
3837                                    goto homogeneous;
3838                                else
3839                                  goto homogeneous;
3840                            else
3841                              if(ptr[offset6] < c_b)
3842                                if(ptr[offset3] < c_b)
3843                                  if(ptr[offset4] < c_b)
3844                                    goto success_homogeneous;
3845                                  else
3846                                    goto homogeneous;
3847                                else
3848                                  goto homogeneous;
3849                              else
3850                                goto homogeneous;
3851                          else
3852                            goto homogeneous;
3853                      else
3854                        if(ptr[offset10] < c_b)
3855                          if(ptr[offset11] < c_b)
3856                            if(ptr[offset7] < c_b)
3857                              if(ptr[offset1] < c_b)
3858                                if(ptr[offset3] < c_b)
3859                                  goto success_homogeneous;
3860                                else
3861                                  if(ptr[offset8] < c_b)
3862                                    goto success_homogeneous;
3863                                  else
3864                                    goto homogeneous;
3865                              else
3866                                if(ptr[offset6] < c_b)
3867                                  if(ptr[offset8] < c_b)
3868                                    goto success_homogeneous;
3869                                  else
3870                                    goto homogeneous;
3871                                else
3872                                  goto homogeneous;
3873                            else
3874                              if(ptr[offset1] < c_b)
3875                                if(ptr[offset3] < c_b)
3876                                  goto success_homogeneous;
3877                                else
3878                                  if(ptr[offset8] < c_b)
3879                                    goto success_homogeneous;
3880                                  else
3881                                    goto homogeneous;
3882                              else
3883                                goto homogeneous;
3884                          else
3885                            goto homogeneous;
3886                        else
3887                          goto homogeneous;
3888                    else
3889                      if(ptr[offset9] > cb)
3890                        if(ptr[offset5] > cb)
3891                          if(ptr[offset7] > cb)
3892                            if(ptr[offset1] < c_b)
3893                              if(ptr[offset4] < c_b)
3894                                if(ptr[offset10] < c_b)
3895                                  if(ptr[offset3] < c_b)
3896                                    if(ptr[offset11] < c_b)
3897                                      goto success_structured;
3898                                    else
3899                                      goto structured;
3900                                  else
3901                                    goto homogeneous;
3902                                else
3903                                  if(ptr[offset6] > cb)
3904                                    if(ptr[offset8] > cb)
3905                                      if(ptr[offset11] > cb)
3906                                        if(ptr[offset10] > cb)
3907                                          goto success_structured;
3908                                        else
3909                                          goto structured;
3910                                      else
3911                                        goto structured;
3912                                    else
3913                                      goto homogeneous;
3914                                  else
3915                                    goto homogeneous;
3916                              else
3917                                if(ptr[offset6] > cb)
3918                                  if(ptr[offset8] > cb)
3919                                    if(ptr[offset10] > cb)
3920                                      if(ptr[offset4] > cb)
3921                                        goto success_structured;
3922                                      else
3923                                        if(ptr[offset11] > cb)
3924                                          goto success_structured;
3925                                        else
3926                                          goto structured;
3927                                    else
3928                                      if(ptr[offset3] > cb)
3929                                        if(ptr[offset4] > cb)
3930                                          goto success_structured;
3931                                        else
3932                                          goto structured;
3933                                      else
3934                                        goto homogeneous;
3935                                  else
3936                                    goto homogeneous;
3937                                else
3938                                  goto homogeneous;
3939                            else
3940                              if(ptr[offset6] > cb)
3941                                if(ptr[offset8] > cb)
3942                                  if(ptr[offset4] > cb)
3943                                    if(ptr[offset3] > cb)
3944                                      goto success_structured;
3945                                    else
3946                                      if(ptr[offset10] > cb)
3947                                        goto success_structured;
3948                                      else
3949                                        goto homogeneous;
3950                                  else
3951                                    if(ptr[offset10] > cb)
3952                                      if(ptr[offset11] > cb)
3953                                        goto success_structured;
3954                                      else
3955                                        goto homogeneous;
3956                                    else
3957                                      goto homogeneous;
3958                                else
3959                                  goto homogeneous;
3960                              else
3961                                goto homogeneous;
3962                          else
3963                            if(ptr[offset1] < c_b)
3964                              if(ptr[offset3] < c_b)
3965                                if(ptr[offset4] < c_b)
3966                                  if(ptr[offset10] < c_b)
3967                                    if(ptr[offset11] < c_b)
3968                                      goto success_structured;
3969                                    else
3970                                      goto homogeneous;
3971                                  else
3972                                    goto homogeneous;
3973                                else
3974                                  goto homogeneous;
3975                              else
3976                                goto homogeneous;
3977                            else
3978                              goto homogeneous;
3979                        else
3980                          if(ptr[offset3] < c_b)
3981                            if(ptr[offset4] < c_b)
3982                              if(ptr[offset5] < c_b)
3983                                if(ptr[offset7] < c_b)
3984                                  if(ptr[offset1] < c_b)
3985                                    if(ptr[offset6] < c_b)
3986                                      goto success_structured;
3987                                    else
3988                                      if(ptr[offset11] < c_b)
3989                                        goto success_structured;
3990                                      else
3991                                        goto homogeneous;
3992                                  else
3993                                    if(ptr[offset6] < c_b)
3994                                      if(ptr[offset8] < c_b)
3995                                        goto success_structured;
3996                                      else
3997                                        goto homogeneous;
3998                                    else
3999                                      goto homogeneous;
4000                                else
4001                                  if(ptr[offset1] < c_b)
4002                                    if(ptr[offset6] < c_b)
4003                                      goto success_homogeneous;
4004                                    else
4005                                      if(ptr[offset11] < c_b)
4006                                        goto success_homogeneous;
4007                                      else
4008                                        goto homogeneous;
4009                                  else
4010                                    goto homogeneous;
4011                              else
4012                                if(ptr[offset1] < c_b)
4013                                  if(ptr[offset10] < c_b)
4014                                    if(ptr[offset11] < c_b)
4015                                      goto success_homogeneous;
4016                                    else
4017                                      goto homogeneous;
4018                                  else
4019                                    goto homogeneous;
4020                                else
4021                                  goto homogeneous;
4022                            else
4023                              goto homogeneous;
4024                          else
4025                            goto homogeneous;
4026                      else
4027                        if(ptr[offset3] < c_b)
4028                          if(ptr[offset4] < c_b)
4029                            if(ptr[offset5] < c_b)
4030                              if(ptr[offset7] < c_b)
4031                                if(ptr[offset1] < c_b)
4032                                  if(ptr[offset6] < c_b)
4033                                    goto success_homogeneous;
4034                                  else
4035                                    if(ptr[offset11] < c_b)
4036                                      goto success_homogeneous;
4037                                    else
4038                                      goto homogeneous;
4039                                else
4040                                  if(ptr[offset6] < c_b)
4041                                    if(ptr[offset8] < c_b)
4042                                      goto success_homogeneous;
4043                                    else
4044                                      goto homogeneous;
4045                                  else
4046                                    goto homogeneous;
4047                              else
4048                                if(ptr[offset1] < c_b)
4049                                  if(ptr[offset6] < c_b)
4050                                    goto success_homogeneous;
4051                                  else
4052                                    if(ptr[offset11] < c_b)
4053                                      goto success_homogeneous;
4054                                    else
4055                                      goto homogeneous;
4056                                else
4057                                  goto homogeneous;
4058                            else
4059                              if(ptr[offset1] < c_b)
4060                                if(ptr[offset10] < c_b)
4061                                  if(ptr[offset11] < c_b)
4062                                    goto success_homogeneous;
4063                                  else
4064                                    goto homogeneous;
4065                                else
4066                                  goto homogeneous;
4067                              else
4068                                goto homogeneous;
4069                          else
4070                            goto homogeneous;
4071                        else
4072                          goto homogeneous;
4073                  else
4074                    if(ptr[offset7] > cb)
4075                      if(ptr[offset5] > cb)
4076                        if(ptr[offset2] > cb)
4077                          if(ptr[offset6] > cb)
4078                            if(ptr[offset4] > cb)
4079                              if(ptr[offset3] > cb)
4080                                if(ptr[offset1] > cb)
4081                                  goto success_homogeneous;
4082                                else
4083                                  if(ptr[offset8] > cb)
4084                                    goto success_homogeneous;
4085                                  else
4086                                    goto homogeneous;
4087                              else
4088                                if(ptr[offset9] > cb)
4089                                  if(ptr[offset8] > cb)
4090                                    if(ptr[offset10] > cb)
4091                                      goto success_structured;
4092                                    else
4093                                      goto homogeneous;
4094                                  else
4095                                    goto homogeneous;
4096                                else
4097                                  goto homogeneous;
4098                            else
4099                              if(ptr[offset9] > cb)
4100                                if(ptr[offset8] > cb)
4101                                  if(ptr[offset10] > cb)
4102                                    if(ptr[offset11] > cb)
4103                                      goto success_structured;
4104                                    else
4105                                      goto homogeneous;
4106                                  else
4107                                    goto homogeneous;
4108                                else
4109                                  goto homogeneous;
4110                              else
4111                                goto homogeneous;
4112                          else
4113                            goto homogeneous;
4114                        else
4115                          if(ptr[offset9] > cb)
4116                            if(ptr[offset6] > cb)
4117                              if(ptr[offset8] > cb)
4118                                if(ptr[offset4] > cb)
4119                                  if(ptr[offset3] > cb)
4120                                    goto success_homogeneous;
4121                                  else
4122                                    if(ptr[offset10] > cb)
4123                                      goto success_homogeneous;
4124                                    else
4125                                      goto homogeneous;
4126                                else
4127                                  if(ptr[offset10] > cb)
4128                                    if(ptr[offset11] > cb)
4129                                      goto success_homogeneous;
4130                                    else
4131                                      goto homogeneous;
4132                                  else
4133                                    goto homogeneous;
4134                              else
4135                                goto homogeneous;
4136                            else
4137                              goto homogeneous;
4138                          else
4139                            goto homogeneous;
4140                      else
4141                        goto homogeneous;
4142                    else
4143                      if(ptr[offset7] < c_b)
4144                        if(ptr[offset9] < c_b)
4145                          if(ptr[offset8] < c_b)
4146                            if(ptr[offset5] < c_b)
4147                              if(ptr[offset1] < c_b)
4148                                if(ptr[offset10] < c_b)
4149                                  if(ptr[offset11] < c_b)
4150                                    goto success_homogeneous;
4151                                  else
4152                                    if(ptr[offset6] < c_b)
4153                                      if(ptr[offset4] < c_b)
4154                                        goto success_structured;
4155                                      else
4156                                        goto homogeneous;
4157                                    else
4158                                      goto homogeneous;
4159                                else
4160                                  if(ptr[offset6] < c_b)
4161                                    if(ptr[offset3] < c_b)
4162                                      if(ptr[offset4] < c_b)
4163                                        goto success_structured;
4164                                      else
4165                                        goto homogeneous;
4166                                    else
4167                                      goto homogeneous;
4168                                  else
4169                                    goto homogeneous;
4170                              else
4171                                if(ptr[offset6] < c_b)
4172                                  if(ptr[offset4] < c_b)
4173                                    if(ptr[offset3] < c_b)
4174                                      goto success_homogeneous;
4175                                    else
4176                                      if(ptr[offset10] < c_b)
4177                                        goto success_homogeneous;
4178                                      else
4179                                        goto homogeneous;
4180                                  else
4181                                    if(ptr[offset10] < c_b)
4182                                      if(ptr[offset11] < c_b)
4183                                        goto success_homogeneous;
4184                                      else
4185                                        goto homogeneous;
4186                                    else
4187                                      goto homogeneous;
4188                                else
4189                                  goto homogeneous;
4190                            else
4191                              if(ptr[offset10] < c_b)
4192                                if(ptr[offset11] < c_b)
4193                                  if(ptr[offset1] < c_b)
4194                                    goto success_homogeneous;
4195                                  else
4196                                    if(ptr[offset6] < c_b)
4197                                      goto success_homogeneous;
4198                                    else
4199                                      goto homogeneous;
4200                                else
4201                                  goto homogeneous;
4202                              else
4203                                goto homogeneous;
4204                          else
4205                            goto homogeneous;
4206                        else
4207                          goto homogeneous;
4208                      else
4209                        goto homogeneous;
4210                else
4211                  if(ptr[offset5] > cb)
4212                    if(ptr[offset7] > cb)
4213                      if(ptr[offset9] > cb)
4214                        if(ptr[offset6] > cb)
4215                          if(ptr[offset4] > cb)
4216                            if(ptr[offset3] > cb)
4217                              if(ptr[offset8] > cb)
4218                                goto success_homogeneous;
4219                              else
4220                                if(ptr[offset1] > cb)
4221                                  if(ptr[offset2] > cb)
4222                                    goto success_homogeneous;
4223                                  else
4224                                    goto homogeneous;
4225                                else
4226                                  goto homogeneous;
4227                            else
4228                              if(ptr[offset8] > cb)
4229                                if(ptr[offset10] > cb)
4230                                  goto success_homogeneous;
4231                                else
4232                                  goto homogeneous;
4233                              else
4234                                goto homogeneous;
4235                          else
4236                            if(ptr[offset11] > cb)
4237                              if(ptr[offset8] > cb)
4238                                if(ptr[offset10] > cb)
4239                                  goto success_homogeneous;
4240                                else
4241                                  goto homogeneous;
4242                              else
4243                                goto homogeneous;
4244                            else
4245                              goto homogeneous;
4246                        else
4247                          goto homogeneous;
4248                      else
4249                        if(ptr[offset2] > cb)
4250                          if(ptr[offset3] > cb)
4251                            if(ptr[offset4] > cb)
4252                              if(ptr[offset1] > cb)
4253                                if(ptr[offset6] > cb)
4254                                  goto success_homogeneous;
4255                                else
4256                                  goto homogeneous;
4257                              else
4258                                if(ptr[offset6] > cb)
4259                                  if(ptr[offset8] > cb)
4260                                    goto success_homogeneous;
4261                                  else
4262                                    goto homogeneous;
4263                                else
4264                                  goto homogeneous;
4265                            else
4266                              goto homogeneous;
4267                          else
4268                            goto homogeneous;
4269                        else
4270                          goto homogeneous;
4271                    else
4272                      goto homogeneous;
4273                  else
4274                    if(ptr[offset5] < c_b)
4275                      if(ptr[offset7] < c_b)
4276                        if(ptr[offset9] < c_b)
4277                          if(ptr[offset6] < c_b)
4278                            if(ptr[offset4] < c_b)
4279                              if(ptr[offset3] < c_b)
4280                                if(ptr[offset8] < c_b)
4281                                  goto success_homogeneous;
4282                                else
4283                                  if(ptr[offset1] < c_b)
4284                                    if(ptr[offset2] < c_b)
4285                                      goto success_homogeneous;
4286                                    else
4287                                      goto homogeneous;
4288                                  else
4289                                    goto homogeneous;
4290                              else
4291                                if(ptr[offset8] < c_b)
4292                                  if(ptr[offset10] < c_b)
4293                                    goto success_homogeneous;
4294                                  else
4295                                    goto homogeneous;
4296                                else
4297                                  goto homogeneous;
4298                            else
4299                              if(ptr[offset11] < c_b)
4300                                if(ptr[offset8] < c_b)
4301                                  if(ptr[offset10] < c_b)
4302                                    goto success_homogeneous;
4303                                  else
4304                                    goto homogeneous;
4305                                else
4306                                  goto homogeneous;
4307                              else
4308                                goto homogeneous;
4309                          else
4310                            goto homogeneous;
4311                        else
4312                          if(ptr[offset2] < c_b)
4313                            if(ptr[offset3] < c_b)
4314                              if(ptr[offset4] < c_b)
4315                                if(ptr[offset1] < c_b)
4316                                  if(ptr[offset6] < c_b)
4317                                    goto success_homogeneous;
4318                                  else
4319                                    goto homogeneous;
4320                                else
4321                                  if(ptr[offset6] < c_b)
4322                                    if(ptr[offset8] < c_b)
4323                                      goto success_homogeneous;
4324                                    else
4325                                      goto homogeneous;
4326                                  else
4327                                    goto homogeneous;
4328                              else
4329                                goto homogeneous;
4330                            else
4331                              goto homogeneous;
4332                          else
4333                            goto homogeneous;
4334                      else
4335                        goto homogeneous;
4336                    else
4337                      goto homogeneous;
4338            }
4339          }
4340          structured:
4341          {
4342            x++;
4343            if(x > xsizeB)
4344                break;
4345            else
4346            {
4347                register const unsigned char* const ptr = img.ptr() + y*width + x;
4348                register const int cb = *ptr + threshold;
4349                register const int c_b = *ptr - threshold;
4350                if(ptr[offset0] > cb)
4351                  if(ptr[offset2] > cb)
4352                    if(ptr[offset5] > cb)
4353                      if(ptr[offset9] > cb)
4354                        if(ptr[offset7] > cb)
4355                          if(ptr[offset1] > cb)
4356                            if(ptr[offset6] > cb)
4357                              if(ptr[offset3] > cb)
4358                                if(ptr[offset4] > cb)
4359                                  goto success_structured;
4360                                else
4361                                  if(ptr[offset10] > cb)
4362                                    if(ptr[offset11] > cb)
4363                                      goto success_structured;
4364                                    else
4365                                      goto structured;
4366                                  else
4367                                    goto structured;
4368                              else
4369                                if(ptr[offset8] > cb)
4370                                  if(ptr[offset10] > cb)
4371                                    if(ptr[offset4] > cb)
4372                                      goto success_structured;
4373                                    else
4374                                      if(ptr[offset11] > cb)
4375                                        goto success_structured;
4376                                      else
4377                                        goto structured;
4378                                  else
4379                                    goto structured;
4380                                else
4381                                  goto structured;
4382                            else
4383                              if(ptr[offset11] > cb)
4384                                if(ptr[offset3] > cb)
4385                                  if(ptr[offset4] > cb)
4386                                    goto success_structured;
4387                                  else
4388                                    if(ptr[offset10] > cb)
4389                                      goto success_structured;
4390                                    else
4391                                      goto structured;
4392                                else
4393                                  if(ptr[offset8] > cb)
4394                                    if(ptr[offset10] > cb)
4395                                      goto success_structured;
4396                                    else
4397                                      goto structured;
4398                                  else
4399                                    goto structured;
4400                              else
4401                                goto structured;
4402                          else
4403                            if(ptr[offset6] > cb)
4404                              if(ptr[offset8] > cb)
4405                                if(ptr[offset4] > cb)
4406                                  if(ptr[offset3] > cb)
4407                                    goto success_structured;
4408                                  else
4409                                    if(ptr[offset10] > cb)
4410                                      goto success_structured;
4411                                    else
4412                                      goto structured;
4413                                else
4414                                  if(ptr[offset10] > cb)
4415                                    if(ptr[offset11] > cb)
4416                                      goto success_structured;
4417                                    else
4418                                      goto structured;
4419                                  else
4420                                    goto structured;
4421                              else
4422                                goto structured;
4423                            else
4424                              goto structured;
4425                        else
4426                          if(ptr[offset1] > cb)
4427                            if(ptr[offset11] > cb)
4428                              if(ptr[offset3] > cb)
4429                                if(ptr[offset4] > cb)
4430                                  goto success_structured;
4431                                else
4432                                  if(ptr[offset10] > cb)
4433                                    goto success_structured;
4434                                  else
4435                                    goto structured;
4436                              else
4437                                if(ptr[offset8] > cb)
4438                                  if(ptr[offset10] > cb)
4439                                    goto success_structured;
4440                                  else
4441                                    goto structured;
4442                                else
4443                                  goto structured;
4444                            else
4445                              if(ptr[offset6] > cb)
4446                                if(ptr[offset3] > cb)
4447                                  if(ptr[offset4] > cb)
4448                                    goto success_structured;
4449                                  else
4450                                    goto structured;
4451                                else
4452                                  goto structured;
4453                              else
4454                                goto structured;
4455                          else
4456                            goto structured;
4457                      else
4458                        if(ptr[offset3] > cb)
4459                          if(ptr[offset4] > cb)
4460                            if(ptr[offset7] > cb)
4461                              if(ptr[offset1] > cb)
4462                                if(ptr[offset6] > cb)
4463                                  goto success_structured;
4464                                else
4465                                  if(ptr[offset11] > cb)
4466                                    goto success_structured;
4467                                  else
4468                                    goto structured;
4469                              else
4470                                if(ptr[offset6] > cb)
4471                                  if(ptr[offset8] > cb)
4472                                    goto success_structured;
4473                                  else
4474                                    goto structured;
4475                                else
4476                                  goto structured;
4477                            else
4478                              if(ptr[offset1] > cb)
4479                                if(ptr[offset6] > cb)
4480                                  goto success_structured;
4481                                else
4482                                  if(ptr[offset11] > cb)
4483                                    goto success_structured;
4484                                  else
4485                                    goto structured;
4486                              else
4487                                goto structured;
4488                          else
4489                            goto structured;
4490                        else
4491                          goto structured;
4492                    else
4493                      if(ptr[offset7] < c_b)
4494                        if(ptr[offset9] < c_b)
4495                          if(ptr[offset5] < c_b)
4496                            if(ptr[offset1] > cb)
4497                              if(ptr[offset4] > cb)
4498                                if(ptr[offset10] > cb)
4499                                  if(ptr[offset3] > cb)
4500                                    if(ptr[offset11] > cb)
4501                                      goto success_structured;
4502                                    else
4503                                      goto structured;
4504                                  else
4505                                    goto structured;
4506                                else
4507                                  if(ptr[offset6] < c_b)
4508                                    if(ptr[offset8] < c_b)
4509                                      if(ptr[offset11] < c_b)
4510                                        if(ptr[offset10] < c_b)
4511                                          goto success_structured;
4512                                        else
4513                                          goto structured;
4514                                      else
4515                                        goto structured;
4516                                    else
4517                                      goto structured;
4518                                  else
4519                                    goto structured;
4520                              else
4521                                if(ptr[offset6] < c_b)
4522                                  if(ptr[offset8] < c_b)
4523                                    if(ptr[offset10] < c_b)
4524                                      if(ptr[offset4] < c_b)
4525                                        goto success_structured;
4526                                      else
4527                                        if(ptr[offset11] < c_b)
4528                                          goto success_structured;
4529                                        else
4530                                          goto structured;
4531                                    else
4532                                      if(ptr[offset3] < c_b)
4533                                        if(ptr[offset4] < c_b)
4534                                          goto success_structured;
4535                                        else
4536                                          goto structured;
4537                                      else
4538                                        goto structured;
4539                                  else
4540                                    goto structured;
4541                                else
4542                                  goto structured;
4543                            else
4544                              if(ptr[offset6] < c_b)
4545                                if(ptr[offset8] < c_b)
4546                                  if(ptr[offset4] < c_b)
4547                                    if(ptr[offset3] < c_b)
4548                                      goto success_structured;
4549                                    else
4550                                      if(ptr[offset10] < c_b)
4551                                        goto success_structured;
4552                                      else
4553                                        goto structured;
4554                                  else
4555                                    if(ptr[offset10] < c_b)
4556                                      if(ptr[offset11] < c_b)
4557                                        goto success_structured;
4558                                      else
4559                                        goto structured;
4560                                    else
4561                                      goto structured;
4562                                else
4563                                  goto structured;
4564                              else
4565                                goto structured;
4566                          else
4567                            if(ptr[offset1] > cb)
4568                              if(ptr[offset3] > cb)
4569                                if(ptr[offset4] > cb)
4570                                  if(ptr[offset10] > cb)
4571                                    if(ptr[offset11] > cb)
4572                                      goto success_structured;
4573                                    else
4574                                      goto structured;
4575                                  else
4576                                    goto structured;
4577                                else
4578                                  goto structured;
4579                              else
4580                                goto structured;
4581                            else
4582                              goto structured;
4583                        else
4584                          if(ptr[offset10] > cb)
4585                            if(ptr[offset11] > cb)
4586                              if(ptr[offset9] > cb)
4587                                if(ptr[offset1] > cb)
4588                                  if(ptr[offset3] > cb)
4589                                    goto success_structured;
4590                                  else
4591                                    if(ptr[offset8] > cb)
4592                                      goto success_structured;
4593                                    else
4594                                      goto structured;
4595                                else
4596                                  goto structured;
4597                              else
4598                                if(ptr[offset1] > cb)
4599                                  if(ptr[offset3] > cb)
4600                                    if(ptr[offset4] > cb)
4601                                      goto success_structured;
4602                                    else
4603                                      goto structured;
4604                                  else
4605                                    goto structured;
4606                                else
4607                                  goto structured;
4608                            else
4609                              goto structured;
4610                          else
4611                            goto structured;
4612                      else
4613                        if(ptr[offset10] > cb)
4614                          if(ptr[offset11] > cb)
4615                            if(ptr[offset9] > cb)
4616                              if(ptr[offset1] > cb)
4617                                if(ptr[offset3] > cb)
4618                                  goto success_structured;
4619                                else
4620                                  if(ptr[offset8] > cb)
4621                                    goto success_structured;
4622                                  else
4623                                    goto structured;
4624                              else
4625                                if(ptr[offset6] > cb)
4626                                  if(ptr[offset8] > cb)
4627                                    if(ptr[offset7] > cb)
4628                                      goto success_structured;
4629                                    else
4630                                      goto structured;
4631                                  else
4632                                    goto structured;
4633                                else
4634                                  goto structured;
4635                            else
4636                              if(ptr[offset1] > cb)
4637                                if(ptr[offset3] > cb)
4638                                  if(ptr[offset4] > cb)
4639                                    goto success_structured;
4640                                  else
4641                                    goto structured;
4642                                else
4643                                  goto structured;
4644                              else
4645                                goto structured;
4646                          else
4647                            goto structured;
4648                        else
4649                          goto structured;
4650                  else
4651                    if(ptr[offset7] > cb)
4652                      if(ptr[offset9] > cb)
4653                        if(ptr[offset8] > cb)
4654                          if(ptr[offset5] > cb)
4655                            if(ptr[offset1] > cb)
4656                              if(ptr[offset10] > cb)
4657                                if(ptr[offset11] > cb)
4658                                  goto success_structured;
4659                                else
4660                                  if(ptr[offset6] > cb)
4661                                    if(ptr[offset4] > cb)
4662                                      goto success_structured;
4663                                    else
4664                                      goto structured;
4665                                  else
4666                                    goto structured;
4667                              else
4668                                if(ptr[offset6] > cb)
4669                                  if(ptr[offset3] > cb)
4670                                    if(ptr[offset4] > cb)
4671                                      goto success_structured;
4672                                    else
4673                                      goto structured;
4674                                  else
4675                                    goto structured;
4676                                else
4677                                  goto structured;
4678                            else
4679                              if(ptr[offset6] > cb)
4680                                if(ptr[offset4] > cb)
4681                                  if(ptr[offset3] > cb)
4682                                    goto success_structured;
4683                                  else
4684                                    if(ptr[offset10] > cb)
4685                                      goto success_structured;
4686                                    else
4687                                      goto structured;
4688                                else
4689                                  if(ptr[offset10] > cb)
4690                                    if(ptr[offset11] > cb)
4691                                      goto success_structured;
4692                                    else
4693                                      goto structured;
4694                                  else
4695                                    goto structured;
4696                              else
4697                                goto structured;
4698                          else
4699                            if(ptr[offset10] > cb)
4700                              if(ptr[offset11] > cb)
4701                                if(ptr[offset1] > cb)
4702                                  goto success_structured;
4703                                else
4704                                  if(ptr[offset6] > cb)
4705                                    goto success_structured;
4706                                  else
4707                                    goto structured;
4708                              else
4709                                goto structured;
4710                            else
4711                              goto structured;
4712                        else
4713                          goto structured;
4714                      else
4715                        goto structured;
4716                    else
4717                      if(ptr[offset7] < c_b)
4718                        if(ptr[offset5] < c_b)
4719                          if(ptr[offset2] < c_b)
4720                            if(ptr[offset6] < c_b)
4721                              if(ptr[offset4] < c_b)
4722                                if(ptr[offset3] < c_b)
4723                                  if(ptr[offset1] < c_b)
4724                                    goto success_structured;
4725                                  else
4726                                    if(ptr[offset8] < c_b)
4727                                      goto success_structured;
4728                                    else
4729                                      goto structured;
4730                                else
4731                                  if(ptr[offset9] < c_b)
4732                                    if(ptr[offset8] < c_b)
4733                                      if(ptr[offset10] < c_b)
4734                                        goto success_structured;
4735                                      else
4736                                        goto structured;
4737                                    else
4738                                      goto structured;
4739                                  else
4740                                    goto structured;
4741                              else
4742                                if(ptr[offset9] < c_b)
4743                                  if(ptr[offset8] < c_b)
4744                                    if(ptr[offset10] < c_b)
4745                                      if(ptr[offset11] < c_b)
4746                                        goto success_structured;
4747                                      else
4748                                        goto structured;
4749                                    else
4750                                      goto structured;
4751                                  else
4752                                    goto structured;
4753                                else
4754                                  goto structured;
4755                            else
4756                              goto structured;
4757                          else
4758                            if(ptr[offset9] < c_b)
4759                              if(ptr[offset6] < c_b)
4760                                if(ptr[offset8] < c_b)
4761                                  if(ptr[offset4] < c_b)
4762                                    if(ptr[offset3] < c_b)
4763                                      goto success_structured;
4764                                    else
4765                                      if(ptr[offset10] < c_b)
4766                                        goto success_structured;
4767                                      else
4768                                        goto structured;
4769                                  else
4770                                    if(ptr[offset10] < c_b)
4771                                      if(ptr[offset11] < c_b)
4772                                        goto success_structured;
4773                                      else
4774                                        goto structured;
4775                                    else
4776                                      goto structured;
4777                                else
4778                                  goto structured;
4779                              else
4780                                goto structured;
4781                            else
4782                              goto structured;
4783                        else
4784                          goto structured;
4785                      else
4786                        goto structured;
4787                else if(ptr[offset0] < c_b)
4788                  if(ptr[offset2] < c_b)
4789                    if(ptr[offset11] < c_b)
4790                      if(ptr[offset3] < c_b)
4791                        if(ptr[offset5] < c_b)
4792                          if(ptr[offset9] < c_b)
4793                            if(ptr[offset7] < c_b)
4794                              if(ptr[offset1] < c_b)
4795                                if(ptr[offset4] < c_b)
4796                                  goto success_structured;
4797                                else
4798                                  if(ptr[offset10] < c_b)
4799                                    goto success_structured;
4800                                  else
4801                                    goto structured;
4802                              else
4803                                if(ptr[offset6] < c_b)
4804                                  if(ptr[offset8] < c_b)
4805                                    if(ptr[offset4] < c_b)
4806                                      goto success_structured;
4807                                    else
4808                                      if(ptr[offset10] < c_b)
4809                                        goto success_structured;
4810                                      else
4811                                        goto structured;
4812                                  else
4813                                    goto structured;
4814                                else
4815                                  goto structured;
4816                            else
4817                              if(ptr[offset1] < c_b)
4818                                if(ptr[offset4] < c_b)
4819                                  goto success_structured;
4820                                else
4821                                  if(ptr[offset10] < c_b)
4822                                    goto success_structured;
4823                                  else
4824                                    goto structured;
4825                              else
4826                                goto structured;
4827                          else
4828                            if(ptr[offset4] < c_b)
4829                              if(ptr[offset7] < c_b)
4830                                if(ptr[offset1] < c_b)
4831                                  goto success_structured;
4832                                else
4833                                  if(ptr[offset6] < c_b)
4834                                    if(ptr[offset8] < c_b)
4835                                      goto success_structured;
4836                                    else
4837                                      goto structured;
4838                                  else
4839                                    goto structured;
4840                              else
4841                                if(ptr[offset1] < c_b)
4842                                  goto success_structured;
4843                                else
4844                                  goto structured;
4845                            else
4846                              goto structured;
4847                        else
4848                          if(ptr[offset10] < c_b)
4849                            if(ptr[offset9] < c_b)
4850                              if(ptr[offset7] < c_b)
4851                                if(ptr[offset1] < c_b)
4852                                  goto success_structured;
4853                                else
4854                                  if(ptr[offset6] < c_b)
4855                                    if(ptr[offset8] < c_b)
4856                                      goto success_structured;
4857                                    else
4858                                      goto structured;
4859                                  else
4860                                    goto structured;
4861                              else
4862                                if(ptr[offset1] < c_b)
4863                                  goto success_structured;
4864                                else
4865                                  goto structured;
4866                            else
4867                              if(ptr[offset1] < c_b)
4868                                if(ptr[offset4] < c_b)
4869                                  goto success_structured;
4870                                else
4871                                  goto structured;
4872                              else
4873                                goto structured;
4874                          else
4875                            if(ptr[offset7] > cb)
4876                              if(ptr[offset9] > cb)
4877                                if(ptr[offset5] > cb)
4878                                  if(ptr[offset4] > cb)
4879                                    if(ptr[offset6] > cb)
4880                                      if(ptr[offset8] > cb)
4881                                        if(ptr[offset10] > cb)
4882                                          goto success_structured;
4883                                        else
4884                                          goto structured;
4885                                      else
4886                                        goto structured;
4887                                    else
4888                                      goto structured;
4889                                  else
4890                                    goto structured;
4891                                else
4892                                  goto structured;
4893                              else
4894                                goto structured;
4895                            else
4896                              goto structured;
4897                      else
4898                        if(ptr[offset9] < c_b)
4899                          if(ptr[offset8] < c_b)
4900                            if(ptr[offset10] < c_b)
4901                              if(ptr[offset7] < c_b)
4902                                if(ptr[offset1] < c_b)
4903                                  goto success_structured;
4904                                else
4905                                  if(ptr[offset6] < c_b)
4906                                    goto success_structured;
4907                                  else
4908                                    goto structured;
4909                              else
4910                                if(ptr[offset1] < c_b)
4911                                  goto success_structured;
4912                                else
4913                                  goto structured;
4914                            else
4915                              goto structured;
4916                          else
4917                            goto structured;
4918                        else
4919                          if(ptr[offset5] > cb)
4920                            if(ptr[offset7] > cb)
4921                              if(ptr[offset9] > cb)
4922                                if(ptr[offset4] > cb)
4923                                  if(ptr[offset6] > cb)
4924                                    if(ptr[offset8] > cb)
4925                                      if(ptr[offset3] > cb)
4926                                        goto success_structured;
4927                                      else
4928                                        if(ptr[offset10] > cb)
4929                                          goto success_structured;
4930                                        else
4931                                          goto structured;
4932                                    else
4933                                      goto structured;
4934                                  else
4935                                    goto structured;
4936                                else
4937                                  goto structured;
4938                              else
4939                                goto structured;
4940                            else
4941                              goto structured;
4942                          else
4943                            goto structured;
4944                    else
4945                      if(ptr[offset4] < c_b)
4946                        if(ptr[offset5] < c_b)
4947                          if(ptr[offset7] < c_b)
4948                            if(ptr[offset6] < c_b)
4949                              if(ptr[offset3] < c_b)
4950                                if(ptr[offset1] < c_b)
4951                                  goto success_structured;
4952                                else
4953                                  if(ptr[offset8] < c_b)
4954                                    goto success_structured;
4955                                  else
4956                                    goto structured;
4957                              else
4958                                if(ptr[offset9] < c_b)
4959                                  if(ptr[offset8] < c_b)
4960                                    if(ptr[offset10] < c_b)
4961                                      goto success_structured;
4962                                    else
4963                                      goto structured;
4964                                  else
4965                                    goto structured;
4966                                else
4967                                  goto structured;
4968                            else
4969                              goto structured;
4970                          else
4971                            if(ptr[offset1] < c_b)
4972                              if(ptr[offset6] < c_b)
4973                                if(ptr[offset3] < c_b)
4974                                  goto success_structured;
4975                                else
4976                                  goto structured;
4977                              else
4978                                goto structured;
4979                            else
4980                              goto structured;
4981                        else
4982                          if(ptr[offset7] > cb)
4983                            if(ptr[offset9] > cb)
4984                              if(ptr[offset5] > cb)
4985                                if(ptr[offset6] > cb)
4986                                  if(ptr[offset8] > cb)
4987                                    if(ptr[offset10] > cb)
4988                                      if(ptr[offset11] > cb)
4989                                        goto success_structured;
4990                                      else
4991                                        goto structured;
4992                                    else
4993                                      goto structured;
4994                                  else
4995                                    goto structured;
4996                                else
4997                                  goto structured;
4998                              else
4999                                goto structured;
5000                            else
5001                              goto structured;
5002                          else
5003                            goto structured;
5004                      else
5005                        if(ptr[offset5] > cb)
5006                          if(ptr[offset7] > cb)
5007                            if(ptr[offset9] > cb)
5008                              if(ptr[offset6] > cb)
5009                                if(ptr[offset8] > cb)
5010                                  if(ptr[offset10] > cb)
5011                                    if(ptr[offset4] > cb)
5012                                      goto success_structured;
5013                                    else
5014                                      if(ptr[offset11] > cb)
5015                                        goto success_structured;
5016                                      else
5017                                        goto homogeneous;
5018                                  else
5019                                    if(ptr[offset3] > cb)
5020                                      if(ptr[offset4] > cb)
5021                                        goto success_structured;
5022                                      else
5023                                        goto structured;
5024                                    else
5025                                      goto structured;
5026                                else
5027                                  goto structured;
5028                              else
5029                                goto structured;
5030                            else
5031                              goto structured;
5032                          else
5033                            goto structured;
5034                        else
5035                          goto structured;
5036                  else
5037                    if(ptr[offset7] > cb)
5038                      if(ptr[offset5] > cb)
5039                        if(ptr[offset2] > cb)
5040                          if(ptr[offset6] > cb)
5041                            if(ptr[offset4] > cb)
5042                              if(ptr[offset3] > cb)
5043                                if(ptr[offset1] > cb)
5044                                  goto success_structured;
5045                                else
5046                                  if(ptr[offset8] > cb)
5047                                    goto success_structured;
5048                                  else
5049                                    goto structured;
5050                              else
5051                                if(ptr[offset9] > cb)
5052                                  if(ptr[offset8] > cb)
5053                                    if(ptr[offset10] > cb)
5054                                      goto success_structured;
5055                                    else
5056                                      goto structured;
5057                                  else
5058                                    goto structured;
5059                                else
5060                                  goto structured;
5061                            else
5062                              if(ptr[offset9] > cb)
5063                                if(ptr[offset8] > cb)
5064                                  if(ptr[offset10] > cb)
5065                                    if(ptr[offset11] > cb)
5066                                      goto success_structured;
5067                                    else
5068                                      goto structured;
5069                                  else
5070                                    goto structured;
5071                                else
5072                                  goto structured;
5073                              else
5074                                goto structured;
5075                          else
5076                            goto structured;
5077                        else
5078                          if(ptr[offset9] > cb)
5079                            if(ptr[offset6] > cb)
5080                              if(ptr[offset8] > cb)
5081                                if(ptr[offset4] > cb)
5082                                  if(ptr[offset3] > cb)
5083                                    goto success_structured;
5084                                  else
5085                                    if(ptr[offset10] > cb)
5086                                      goto success_structured;
5087                                    else
5088                                      goto structured;
5089                                else
5090                                  if(ptr[offset10] > cb)
5091                                    if(ptr[offset11] > cb)
5092                                      goto success_structured;
5093                                    else
5094                                      goto structured;
5095                                  else
5096                                    goto structured;
5097                              else
5098                                goto structured;
5099                            else
5100                              goto structured;
5101                          else
5102                            goto structured;
5103                      else
5104                        goto structured;
5105                    else
5106                      if(ptr[offset7] < c_b)
5107                        if(ptr[offset9] < c_b)
5108                          if(ptr[offset8] < c_b)
5109                            if(ptr[offset5] < c_b)
5110                              if(ptr[offset1] < c_b)
5111                                if(ptr[offset10] < c_b)
5112                                  if(ptr[offset11] < c_b)
5113                                    goto success_structured;
5114                                  else
5115                                    if(ptr[offset6] < c_b)
5116                                      if(ptr[offset4] < c_b)
5117                                        goto success_structured;
5118                                      else
5119                                        goto structured;
5120                                    else
5121                                      goto structured;
5122                                else
5123                                  if(ptr[offset6] < c_b)
5124                                    if(ptr[offset3] < c_b)
5125                                      if(ptr[offset4] < c_b)
5126                                        goto success_structured;
5127                                      else
5128                                        goto structured;
5129                                    else
5130                                      goto structured;
5131                                  else
5132                                    goto structured;
5133                              else
5134                                if(ptr[offset6] < c_b)
5135                                  if(ptr[offset4] < c_b)
5136                                    if(ptr[offset3] < c_b)
5137                                      goto success_structured;
5138                                    else
5139                                      if(ptr[offset10] < c_b)
5140                                        goto success_structured;
5141                                      else
5142                                        goto structured;
5143                                  else
5144                                    if(ptr[offset10] < c_b)
5145                                      if(ptr[offset11] < c_b)
5146                                        goto success_structured;
5147                                      else
5148                                        goto structured;
5149                                    else
5150                                      goto structured;
5151                                else
5152                                  goto structured;
5153                            else
5154                              if(ptr[offset10] < c_b)
5155                                if(ptr[offset11] < c_b)
5156                                  if(ptr[offset1] < c_b)
5157                                    goto success_structured;
5158                                  else
5159                                    if(ptr[offset6] < c_b)
5160                                      goto success_structured;
5161                                    else
5162                                      goto structured;
5163                                else
5164                                  goto structured;
5165                              else
5166                                goto structured;
5167                          else
5168                            goto structured;
5169                        else
5170                          goto structured;
5171                      else
5172                        goto structured;
5173                else
5174                  if(ptr[offset5] > cb)
5175                    if(ptr[offset7] > cb)
5176                      if(ptr[offset9] > cb)
5177                        if(ptr[offset6] > cb)
5178                          if(ptr[offset4] > cb)
5179                            if(ptr[offset3] > cb)
5180                              if(ptr[offset8] > cb)
5181                                goto success_structured;
5182                              else
5183                                if(ptr[offset1] > cb)
5184                                  if(ptr[offset2] > cb)
5185                                    goto success_structured;
5186                                  else
5187                                    goto structured;
5188                                else
5189                                  goto structured;
5190                            else
5191                              if(ptr[offset8] > cb)
5192                                if(ptr[offset10] > cb)
5193                                  goto success_structured;
5194                                else
5195                                  goto structured;
5196                              else
5197                                goto structured;
5198                          else
5199                            if(ptr[offset11] > cb)
5200                              if(ptr[offset8] > cb)
5201                                if(ptr[offset10] > cb)
5202                                  goto success_structured;
5203                                else
5204                                  goto structured;
5205                              else
5206                                goto structured;
5207                            else
5208                              goto structured;
5209                        else
5210                          goto structured;
5211                      else
5212                        if(ptr[offset2] > cb)
5213                          if(ptr[offset3] > cb)
5214                            if(ptr[offset4] > cb)
5215                              if(ptr[offset1] > cb)
5216                                if(ptr[offset6] > cb)
5217                                  goto success_structured;
5218                                else
5219                                  goto structured;
5220                              else
5221                                if(ptr[offset6] > cb)
5222                                  if(ptr[offset8] > cb)
5223                                    goto success_structured;
5224                                  else
5225                                    goto structured;
5226                                else
5227                                  goto structured;
5228                            else
5229                              goto structured;
5230                          else
5231                            goto structured;
5232                        else
5233                          goto structured;
5234                    else
5235                      goto structured;
5236                  else
5237                    if(ptr[offset5] < c_b)
5238                      if(ptr[offset7] < c_b)
5239                        if(ptr[offset9] < c_b)
5240                          if(ptr[offset6] < c_b)
5241                            if(ptr[offset4] < c_b)
5242                              if(ptr[offset3] < c_b)
5243                                if(ptr[offset8] < c_b)
5244                                  goto success_structured;
5245                                else
5246                                  if(ptr[offset1] < c_b)
5247                                    if(ptr[offset2] < c_b)
5248                                      goto success_structured;
5249                                    else
5250                                      goto structured;
5251                                  else
5252                                    goto structured;
5253                              else
5254                                if(ptr[offset8] < c_b)
5255                                  if(ptr[offset10] < c_b)
5256                                    goto success_structured;
5257                                  else
5258                                    goto structured;
5259                                else
5260                                  goto structured;
5261                            else
5262                              if(ptr[offset11] < c_b)
5263                                if(ptr[offset8] < c_b)
5264                                  if(ptr[offset10] < c_b)
5265                                    goto success_structured;
5266                                  else
5267                                    goto structured;
5268                                else
5269                                  goto structured;
5270                              else
5271                                goto structured;
5272                          else
5273                            goto structured;
5274                        else
5275                          if(ptr[offset2] < c_b)
5276                            if(ptr[offset3] < c_b)
5277                              if(ptr[offset4] < c_b)
5278                                if(ptr[offset1] < c_b)
5279                                  if(ptr[offset6] < c_b)
5280                                    goto success_structured;
5281                                  else
5282                                    goto structured;
5283                                else
5284                                  if(ptr[offset6] < c_b)
5285                                    if(ptr[offset8] < c_b)
5286                                      goto success_structured;
5287                                    else
5288                                      goto structured;
5289                                  else
5290                                    goto structured;
5291                              else
5292                                goto structured;
5293                            else
5294                              goto structured;
5295                          else
5296                            goto structured;
5297                      else
5298                        goto structured;
5299                    else
5300                      goto homogeneous;
5301            }
5302          }
5303          success_homogeneous:
5304            if(total == nExpectedCorners)
5305            {
5306                if(nExpectedCorners == 0)
5307                {
5308                    nExpectedCorners = 512;
5309                    keypoints.reserve(nExpectedCorners);
5310                }
5311                else
5312                {
5313                    nExpectedCorners *= 2;
5314                    keypoints.reserve(nExpectedCorners);
5315                }
5316            }
5317            keypoints.push_back(KeyPoint(Point2f((float)x, (float)y), 1.0f));
5318            total++;
5319            goto homogeneous;
5320          success_structured:
5321            if(total == nExpectedCorners)
5322            {
5323                if(nExpectedCorners == 0)
5324                {
5325                    nExpectedCorners = 512;
5326                    keypoints.reserve(nExpectedCorners);
5327                }
5328                else
5329                {
5330                    nExpectedCorners *= 2;
5331                    keypoints.reserve(nExpectedCorners);
5332                }
5333            }
5334            keypoints.push_back(KeyPoint(Point2f((float)x, (float)y), 1.0f));
5335            total++;
5336            goto structured;
5337        }
5338    }
5339}
5340
5341static void OAST_9_16(InputArray _img, std::vector<KeyPoint>& keypoints, int threshold)
5342{
5343    cv::Mat img;
5344    if(!_img.getMat().isContinuous())
5345      img = _img.getMat().clone();
5346    else
5347      img = _img.getMat();
5348
5349    size_t total = 0;
5350    int xsize = img.cols;
5351    int ysize = img.rows;
5352    size_t nExpectedCorners = keypoints.capacity();
5353    register int x, y;
5354    register int xsizeB=xsize - 4;
5355    register int ysizeB=ysize - 3;
5356    register int width;
5357
5358    keypoints.resize(0);
5359
5360    int pixel_9_16_[16];
5361    makeAgastOffsets(pixel_9_16_, (int)img.step, AgastFeatureDetector::OAST_9_16);
5362
5363    register short offset0 = (short) pixel_9_16_[0];
5364    register short offset1 = (short) pixel_9_16_[1];
5365    register short offset2 = (short) pixel_9_16_[2];
5366    register short offset3 = (short) pixel_9_16_[3];
5367    register short offset4 = (short) pixel_9_16_[4];
5368    register short offset5 = (short) pixel_9_16_[5];
5369    register short offset6 = (short) pixel_9_16_[6];
5370    register short offset7 = (short) pixel_9_16_[7];
5371    register short offset8 = (short) pixel_9_16_[8];
5372    register short offset9 = (short) pixel_9_16_[9];
5373    register short offset10 = (short) pixel_9_16_[10];
5374    register short offset11 = (short) pixel_9_16_[11];
5375    register short offset12 = (short) pixel_9_16_[12];
5376    register short offset13 = (short) pixel_9_16_[13];
5377    register short offset14 = (short) pixel_9_16_[14];
5378    register short offset15 = (short) pixel_9_16_[15];
5379
5380    width = xsize;
5381
5382    for(y = 3; y < ysizeB; y++)
5383    {
5384        x = 2;
5385        while(true)
5386        {
5387            x++;
5388            if(x > xsizeB)
5389                break;
5390            else
5391            {
5392                register const unsigned char* const ptr = img.ptr() + y*width + x;
5393                register const int cb = *ptr + threshold;
5394                register const int c_b = *ptr - threshold;
5395                if(ptr[offset0] > cb)
5396                  if(ptr[offset2] > cb)
5397                    if(ptr[offset4] > cb)
5398                      if(ptr[offset5] > cb)
5399                        if(ptr[offset7] > cb)
5400                          if(ptr[offset3] > cb)
5401                            if(ptr[offset1] > cb)
5402                              if(ptr[offset6] > cb)
5403                                if(ptr[offset8] > cb)
5404                                  {}
5405                                else
5406                                  if(ptr[offset15] > cb)
5407                                    {}
5408                                  else
5409                                    continue;
5410                              else
5411                                if(ptr[offset13] > cb)
5412                                  if(ptr[offset14] > cb)
5413                                    if(ptr[offset15] > cb)
5414                                      {}
5415                                    else
5416                                      continue;
5417                                  else
5418                                    continue;
5419                                else
5420                                  continue;
5421                            else
5422                              if(ptr[offset8] > cb)
5423                                if(ptr[offset9] > cb)
5424                                  if(ptr[offset10] > cb)
5425                                    if(ptr[offset6] > cb)
5426                                      {}
5427                                    else
5428                                      if(ptr[offset11] > cb)
5429                                        if(ptr[offset12] > cb)
5430                                          if(ptr[offset13] > cb)
5431                                            if(ptr[offset14] > cb)
5432                                              if(ptr[offset15] > cb)
5433                                                {}
5434                                              else
5435                                                continue;
5436                                            else
5437                                              continue;
5438                                          else
5439                                            continue;
5440                                        else
5441                                          continue;
5442                                      else
5443                                        continue;
5444                                  else
5445                                    continue;
5446                                else
5447                                  continue;
5448                              else
5449                                continue;
5450                          else
5451                            if(ptr[offset10] > cb)
5452                              if(ptr[offset11] > cb)
5453                                if(ptr[offset12] > cb)
5454                                  if(ptr[offset8] > cb)
5455                                    if(ptr[offset9] > cb)
5456                                      if(ptr[offset6] > cb)
5457                                        {}
5458                                      else
5459                                        if(ptr[offset13] > cb)
5460                                          if(ptr[offset14] > cb)
5461                                            if(ptr[offset15] > cb)
5462                                              {}
5463                                            else
5464                                              continue;
5465                                          else
5466                                            continue;
5467                                        else
5468                                          continue;
5469                                    else
5470                                      if(ptr[offset1] > cb)
5471                                        if(ptr[offset13] > cb)
5472                                          if(ptr[offset14] > cb)
5473                                            if(ptr[offset15] > cb)
5474                                              {}
5475                                            else
5476                                              continue;
5477                                          else
5478                                            continue;
5479                                        else
5480                                          continue;
5481                                      else
5482                                        continue;
5483                                  else
5484                                    if(ptr[offset1] > cb)
5485                                      if(ptr[offset13] > cb)
5486                                        if(ptr[offset14] > cb)
5487                                          if(ptr[offset15] > cb)
5488                                            {}
5489                                          else
5490                                            continue;
5491                                        else
5492                                          continue;
5493                                      else
5494                                        continue;
5495                                    else
5496                                      continue;
5497                                else
5498                                  continue;
5499                              else
5500                                continue;
5501                            else
5502                              continue;
5503                        else if(ptr[offset7] < c_b)
5504                          if(ptr[offset14] > cb)
5505                            if(ptr[offset15] > cb)
5506                              if(ptr[offset1] > cb)
5507                                if(ptr[offset3] > cb)
5508                                  if(ptr[offset6] > cb)
5509                                    {}
5510                                  else
5511                                    if(ptr[offset13] > cb)
5512                                      {}
5513                                    else
5514                                      continue;
5515                                else
5516                                  if(ptr[offset10] > cb)
5517                                    if(ptr[offset11] > cb)
5518                                      if(ptr[offset12] > cb)
5519                                        if(ptr[offset13] > cb)
5520                                          {}
5521                                        else
5522                                          continue;
5523                                      else
5524                                        continue;
5525                                    else
5526                                      continue;
5527                                  else
5528                                    continue;
5529                              else
5530                                if(ptr[offset8] > cb)
5531                                  if(ptr[offset9] > cb)
5532                                    if(ptr[offset10] > cb)
5533                                      if(ptr[offset11] > cb)
5534                                        if(ptr[offset12] > cb)
5535                                          if(ptr[offset13] > cb)
5536                                            {}
5537                                          else
5538                                            continue;
5539                                        else
5540                                          continue;
5541                                      else
5542                                        continue;
5543                                    else
5544                                      continue;
5545                                  else
5546                                    continue;
5547                                else
5548                                  continue;
5549                            else
5550                              continue;
5551                          else if(ptr[offset14] < c_b)
5552                            if(ptr[offset8] < c_b)
5553                              if(ptr[offset9] < c_b)
5554                                if(ptr[offset10] < c_b)
5555                                  if(ptr[offset11] < c_b)
5556                                    if(ptr[offset12] < c_b)
5557                                      if(ptr[offset13] < c_b)
5558                                        if(ptr[offset6] < c_b)
5559                                          {}
5560                                        else
5561                                          if(ptr[offset15] < c_b)
5562                                            {}
5563                                          else
5564                                            continue;
5565                                      else
5566                                        continue;
5567                                    else
5568                                      continue;
5569                                  else
5570                                    continue;
5571                                else
5572                                  continue;
5573                              else
5574                                continue;
5575                            else
5576                              continue;
5577                          else
5578                            continue;
5579                        else
5580                          if(ptr[offset14] > cb)
5581                            if(ptr[offset15] > cb)
5582                              if(ptr[offset1] > cb)
5583                                if(ptr[offset3] > cb)
5584                                  if(ptr[offset6] > cb)
5585                                    {}
5586                                  else
5587                                    if(ptr[offset13] > cb)
5588                                      {}
5589                                    else
5590                                      continue;
5591                                else
5592                                  if(ptr[offset10] > cb)
5593                                    if(ptr[offset11] > cb)
5594                                      if(ptr[offset12] > cb)
5595                                        if(ptr[offset13] > cb)
5596                                          {}
5597                                        else
5598                                          continue;
5599                                      else
5600                                        continue;
5601                                    else
5602                                      continue;
5603                                  else
5604                                    continue;
5605                              else
5606                                if(ptr[offset8] > cb)
5607                                  if(ptr[offset9] > cb)
5608                                    if(ptr[offset10] > cb)
5609                                      if(ptr[offset11] > cb)
5610                                        if(ptr[offset12] > cb)
5611                                          if(ptr[offset13] > cb)
5612                                            {}
5613                                          else
5614                                            continue;
5615                                        else
5616                                          continue;
5617                                      else
5618                                        continue;
5619                                    else
5620                                      continue;
5621                                  else
5622                                    continue;
5623                                else
5624                                  continue;
5625                            else
5626                              continue;
5627                          else
5628                            continue;
5629                      else if(ptr[offset5] < c_b)
5630                        if(ptr[offset12] > cb)
5631                          if(ptr[offset13] > cb)
5632                            if(ptr[offset14] > cb)
5633                              if(ptr[offset15] > cb)
5634                                if(ptr[offset1] > cb)
5635                                  if(ptr[offset3] > cb)
5636                                    {}
5637                                  else
5638                                    if(ptr[offset10] > cb)
5639                                      if(ptr[offset11] > cb)
5640                                        {}
5641                                      else
5642                                        continue;
5643                                    else
5644                                      continue;
5645                                else
5646                                  if(ptr[offset8] > cb)
5647                                    if(ptr[offset9] > cb)
5648                                      if(ptr[offset10] > cb)
5649                                        if(ptr[offset11] > cb)
5650                                          {}
5651                                        else
5652                                          continue;
5653                                      else
5654                                        continue;
5655                                    else
5656                                      continue;
5657                                  else
5658                                    continue;
5659                              else
5660                                if(ptr[offset6] > cb)
5661                                  if(ptr[offset7] > cb)
5662                                    if(ptr[offset8] > cb)
5663                                      if(ptr[offset9] > cb)
5664                                        if(ptr[offset10] > cb)
5665                                          if(ptr[offset11] > cb)
5666                                            {}
5667                                          else
5668                                            continue;
5669                                        else
5670                                          continue;
5671                                      else
5672                                        continue;
5673                                    else
5674                                      continue;
5675                                  else
5676                                    continue;
5677                                else
5678                                  continue;
5679                            else
5680                              continue;
5681                          else
5682                            continue;
5683                        else if(ptr[offset12] < c_b)
5684                          if(ptr[offset7] < c_b)
5685                            if(ptr[offset8] < c_b)
5686                              if(ptr[offset9] < c_b)
5687                                if(ptr[offset10] < c_b)
5688                                  if(ptr[offset11] < c_b)
5689                                    if(ptr[offset13] < c_b)
5690                                      if(ptr[offset6] < c_b)
5691                                        {}
5692                                      else
5693                                        if(ptr[offset14] < c_b)
5694                                          if(ptr[offset15] < c_b)
5695                                            {}
5696                                          else
5697                                            continue;
5698                                        else
5699                                          continue;
5700                                    else
5701                                      continue;
5702                                  else
5703                                    continue;
5704                                else
5705                                  continue;
5706                              else
5707                                continue;
5708                            else
5709                              continue;
5710                          else
5711                            continue;
5712                        else
5713                          continue;
5714                      else
5715                        if(ptr[offset12] > cb)
5716                          if(ptr[offset13] > cb)
5717                            if(ptr[offset14] > cb)
5718                              if(ptr[offset15] > cb)
5719                                if(ptr[offset1] > cb)
5720                                  if(ptr[offset3] > cb)
5721                                    {}
5722                                  else
5723                                    if(ptr[offset10] > cb)
5724                                      if(ptr[offset11] > cb)
5725                                        {}
5726                                      else
5727                                        continue;
5728                                    else
5729                                      continue;
5730                                else
5731                                  if(ptr[offset8] > cb)
5732                                    if(ptr[offset9] > cb)
5733                                      if(ptr[offset10] > cb)
5734                                        if(ptr[offset11] > cb)
5735                                          {}
5736                                        else
5737                                          continue;
5738                                      else
5739                                        continue;
5740                                    else
5741                                      continue;
5742                                  else
5743                                    continue;
5744                              else
5745                                if(ptr[offset6] > cb)
5746                                  if(ptr[offset7] > cb)
5747                                    if(ptr[offset8] > cb)
5748                                      if(ptr[offset9] > cb)
5749                                        if(ptr[offset10] > cb)
5750                                          if(ptr[offset11] > cb)
5751                                            {}
5752                                          else
5753                                            continue;
5754                                        else
5755                                          continue;
5756                                      else
5757                                        continue;
5758                                    else
5759                                      continue;
5760                                  else
5761                                    continue;
5762                                else
5763                                  continue;
5764                            else
5765                              continue;
5766                          else
5767                            continue;
5768                        else if(ptr[offset12] < c_b)
5769                          if(ptr[offset7] < c_b)
5770                            if(ptr[offset8] < c_b)
5771                              if(ptr[offset9] < c_b)
5772                                if(ptr[offset10] < c_b)
5773                                  if(ptr[offset11] < c_b)
5774                                    if(ptr[offset13] < c_b)
5775                                      if(ptr[offset14] < c_b)
5776                                        if(ptr[offset6] < c_b)
5777                                          {}
5778                                        else
5779                                          if(ptr[offset15] < c_b)
5780                                            {}
5781                                          else
5782                                            continue;
5783                                      else
5784                                        continue;
5785                                    else
5786                                      continue;
5787                                  else
5788                                    continue;
5789                                else
5790                                  continue;
5791                              else
5792                                continue;
5793                            else
5794                              continue;
5795                          else
5796                            continue;
5797                        else
5798                          continue;
5799                    else if(ptr[offset4] < c_b)
5800                      if(ptr[offset11] > cb)
5801                        if(ptr[offset12] > cb)
5802                          if(ptr[offset13] > cb)
5803                            if(ptr[offset10] > cb)
5804                              if(ptr[offset14] > cb)
5805                                if(ptr[offset15] > cb)
5806                                  if(ptr[offset1] > cb)
5807                                    {}
5808                                  else
5809                                    if(ptr[offset8] > cb)
5810                                      if(ptr[offset9] > cb)
5811                                        {}
5812                                      else
5813                                        continue;
5814                                    else
5815                                      continue;
5816                                else
5817                                  if(ptr[offset6] > cb)
5818                                    if(ptr[offset7] > cb)
5819                                      if(ptr[offset8] > cb)
5820                                        if(ptr[offset9] > cb)
5821                                          {}
5822                                        else
5823                                          continue;
5824                                      else
5825                                        continue;
5826                                    else
5827                                      continue;
5828                                  else
5829                                    continue;
5830                              else
5831                                if(ptr[offset5] > cb)
5832                                  if(ptr[offset6] > cb)
5833                                    if(ptr[offset7] > cb)
5834                                      if(ptr[offset8] > cb)
5835                                        if(ptr[offset9] > cb)
5836                                          {}
5837                                        else
5838                                          continue;
5839                                      else
5840                                        continue;
5841                                    else
5842                                      continue;
5843                                  else
5844                                    continue;
5845                                else
5846                                  continue;
5847                            else
5848                              if(ptr[offset1] > cb)
5849                                if(ptr[offset3] > cb)
5850                                  if(ptr[offset14] > cb)
5851                                    if(ptr[offset15] > cb)
5852                                      {}
5853                                    else
5854                                      continue;
5855                                  else
5856                                    continue;
5857                                else
5858                                  continue;
5859                              else
5860                                continue;
5861                          else
5862                            continue;
5863                        else
5864                          continue;
5865                      else if(ptr[offset11] < c_b)
5866                        if(ptr[offset7] < c_b)
5867                          if(ptr[offset8] < c_b)
5868                            if(ptr[offset9] < c_b)
5869                              if(ptr[offset10] < c_b)
5870                                if(ptr[offset6] < c_b)
5871                                  if(ptr[offset5] < c_b)
5872                                    if(ptr[offset3] < c_b)
5873                                      {}
5874                                    else
5875                                      if(ptr[offset12] < c_b)
5876                                        {}
5877                                      else
5878                                        continue;
5879                                  else
5880                                    if(ptr[offset12] < c_b)
5881                                      if(ptr[offset13] < c_b)
5882                                        if(ptr[offset14] < c_b)
5883                                          {}
5884                                        else
5885                                          continue;
5886                                      else
5887                                        continue;
5888                                    else
5889                                      continue;
5890                                else
5891                                  if(ptr[offset12] < c_b)
5892                                    if(ptr[offset13] < c_b)
5893                                      if(ptr[offset14] < c_b)
5894                                        if(ptr[offset15] < c_b)
5895                                          {}
5896                                        else
5897                                          continue;
5898                                      else
5899                                        continue;
5900                                    else
5901                                      continue;
5902                                  else
5903                                    continue;
5904                              else
5905                                continue;
5906                            else
5907                              continue;
5908                          else
5909                            continue;
5910                        else
5911                          continue;
5912                      else
5913                        continue;
5914                    else
5915                      if(ptr[offset11] > cb)
5916                        if(ptr[offset12] > cb)
5917                          if(ptr[offset13] > cb)
5918                            if(ptr[offset10] > cb)
5919                              if(ptr[offset14] > cb)
5920                                if(ptr[offset15] > cb)
5921                                  if(ptr[offset1] > cb)
5922                                    {}
5923                                  else
5924                                    if(ptr[offset8] > cb)
5925                                      if(ptr[offset9] > cb)
5926                                        {}
5927                                      else
5928                                        continue;
5929                                    else
5930                                      continue;
5931                                else
5932                                  if(ptr[offset6] > cb)
5933                                    if(ptr[offset7] > cb)
5934                                      if(ptr[offset8] > cb)
5935                                        if(ptr[offset9] > cb)
5936                                          {}
5937                                        else
5938                                          continue;
5939                                      else
5940                                        continue;
5941                                    else
5942                                      continue;
5943                                  else
5944                                    continue;
5945                              else
5946                                if(ptr[offset5] > cb)
5947                                  if(ptr[offset6] > cb)
5948                                    if(ptr[offset7] > cb)
5949                                      if(ptr[offset8] > cb)
5950                                        if(ptr[offset9] > cb)
5951                                          {}
5952                                        else
5953                                          continue;
5954                                      else
5955                                        continue;
5956                                    else
5957                                      continue;
5958                                  else
5959                                    continue;
5960                                else
5961                                  continue;
5962                            else
5963                              if(ptr[offset1] > cb)
5964                                if(ptr[offset3] > cb)
5965                                  if(ptr[offset14] > cb)
5966                                    if(ptr[offset15] > cb)
5967                                      {}
5968                                    else
5969                                      continue;
5970                                  else
5971                                    continue;
5972                                else
5973                                  continue;
5974                              else
5975                                continue;
5976                          else
5977                            continue;
5978                        else
5979                          continue;
5980                      else if(ptr[offset11] < c_b)
5981                        if(ptr[offset7] < c_b)
5982                          if(ptr[offset8] < c_b)
5983                            if(ptr[offset9] < c_b)
5984                              if(ptr[offset10] < c_b)
5985                                if(ptr[offset12] < c_b)
5986                                  if(ptr[offset13] < c_b)
5987                                    if(ptr[offset6] < c_b)
5988                                      if(ptr[offset5] < c_b)
5989                                        {}
5990                                      else
5991                                        if(ptr[offset14] < c_b)
5992                                          {}
5993                                        else
5994                                          continue;
5995                                    else
5996                                      if(ptr[offset14] < c_b)
5997                                        if(ptr[offset15] < c_b)
5998                                          {}
5999                                        else
6000                                          continue;
6001                                      else
6002                                        continue;
6003                                  else
6004                                    continue;
6005                                else
6006                                  continue;
6007                              else
6008                                continue;
6009                            else
6010                              continue;
6011                          else
6012                            continue;
6013                        else
6014                          continue;
6015                      else
6016                        continue;
6017                  else if(ptr[offset2] < c_b)
6018                    if(ptr[offset9] > cb)
6019                      if(ptr[offset10] > cb)
6020                        if(ptr[offset11] > cb)
6021                          if(ptr[offset8] > cb)
6022                            if(ptr[offset12] > cb)
6023                              if(ptr[offset13] > cb)
6024                                if(ptr[offset14] > cb)
6025                                  if(ptr[offset15] > cb)
6026                                    {}
6027                                  else
6028                                    if(ptr[offset6] > cb)
6029                                      if(ptr[offset7] > cb)
6030                                        {}
6031                                      else
6032                                        continue;
6033                                    else
6034                                      continue;
6035                                else
6036                                  if(ptr[offset5] > cb)
6037                                    if(ptr[offset6] > cb)
6038                                      if(ptr[offset7] > cb)
6039                                        {}
6040                                      else
6041                                        continue;
6042                                    else
6043                                      continue;
6044                                  else
6045                                    continue;
6046                              else
6047                                if(ptr[offset4] > cb)
6048                                  if(ptr[offset5] > cb)
6049                                    if(ptr[offset6] > cb)
6050                                      if(ptr[offset7] > cb)
6051                                        {}
6052                                      else
6053                                        continue;
6054                                    else
6055                                      continue;
6056                                  else
6057                                    continue;
6058                                else
6059                                  continue;
6060                            else
6061                              if(ptr[offset3] > cb)
6062                                if(ptr[offset4] > cb)
6063                                  if(ptr[offset5] > cb)
6064                                    if(ptr[offset6] > cb)
6065                                      if(ptr[offset7] > cb)
6066                                        {}
6067                                      else
6068                                        continue;
6069                                    else
6070                                      continue;
6071                                  else
6072                                    continue;
6073                                else
6074                                  continue;
6075                              else
6076                                continue;
6077                          else
6078                            if(ptr[offset1] > cb)
6079                              if(ptr[offset12] > cb)
6080                                if(ptr[offset13] > cb)
6081                                  if(ptr[offset14] > cb)
6082                                    if(ptr[offset15] > cb)
6083                                      {}
6084                                    else
6085                                      continue;
6086                                  else
6087                                    continue;
6088                                else
6089                                  continue;
6090                              else
6091                                continue;
6092                            else
6093                              continue;
6094                        else
6095                          continue;
6096                      else
6097                        continue;
6098                    else if(ptr[offset9] < c_b)
6099                      if(ptr[offset7] < c_b)
6100                        if(ptr[offset8] < c_b)
6101                          if(ptr[offset6] < c_b)
6102                            if(ptr[offset5] < c_b)
6103                              if(ptr[offset4] < c_b)
6104                                if(ptr[offset3] < c_b)
6105                                  if(ptr[offset1] < c_b)
6106                                    {}
6107                                  else
6108                                    if(ptr[offset10] < c_b)
6109                                      {}
6110                                    else
6111                                      continue;
6112                                else
6113                                  if(ptr[offset10] < c_b)
6114                                    if(ptr[offset11] < c_b)
6115                                      if(ptr[offset12] < c_b)
6116                                        {}
6117                                      else
6118                                        continue;
6119                                    else
6120                                      continue;
6121                                  else
6122                                    continue;
6123                              else
6124                                if(ptr[offset10] < c_b)
6125                                  if(ptr[offset11] < c_b)
6126                                    if(ptr[offset12] < c_b)
6127                                      if(ptr[offset13] < c_b)
6128                                        {}
6129                                      else
6130                                        continue;
6131                                    else
6132                                      continue;
6133                                  else
6134                                    continue;
6135                                else
6136                                  continue;
6137                            else
6138                              if(ptr[offset10] < c_b)
6139                                if(ptr[offset11] < c_b)
6140                                  if(ptr[offset12] < c_b)
6141                                    if(ptr[offset13] < c_b)
6142                                      if(ptr[offset14] < c_b)
6143                                        {}
6144                                      else
6145                                        continue;
6146                                    else
6147                                      continue;
6148                                  else
6149                                    continue;
6150                                else
6151                                  continue;
6152                              else
6153                                continue;
6154                          else
6155                            if(ptr[offset10] < c_b)
6156                              if(ptr[offset11] < c_b)
6157                                if(ptr[offset12] < c_b)
6158                                  if(ptr[offset13] < c_b)
6159                                    if(ptr[offset14] < c_b)
6160                                      if(ptr[offset15] < c_b)
6161                                        {}
6162                                      else
6163                                        continue;
6164                                    else
6165                                      continue;
6166                                  else
6167                                    continue;
6168                                else
6169                                  continue;
6170                              else
6171                                continue;
6172                            else
6173                              continue;
6174                        else
6175                          continue;
6176                      else
6177                        continue;
6178                    else
6179                      continue;
6180                  else
6181                    if(ptr[offset9] > cb)
6182                      if(ptr[offset10] > cb)
6183                        if(ptr[offset11] > cb)
6184                          if(ptr[offset8] > cb)
6185                            if(ptr[offset12] > cb)
6186                              if(ptr[offset13] > cb)
6187                                if(ptr[offset14] > cb)
6188                                  if(ptr[offset15] > cb)
6189                                    {}
6190                                  else
6191                                    if(ptr[offset6] > cb)
6192                                      if(ptr[offset7] > cb)
6193                                        {}
6194                                      else
6195                                        continue;
6196                                    else
6197                                      continue;
6198                                else
6199                                  if(ptr[offset5] > cb)
6200                                    if(ptr[offset6] > cb)
6201                                      if(ptr[offset7] > cb)
6202                                        {}
6203                                      else
6204                                        continue;
6205                                    else
6206                                      continue;
6207                                  else
6208                                    continue;
6209                              else
6210                                if(ptr[offset4] > cb)
6211                                  if(ptr[offset5] > cb)
6212                                    if(ptr[offset6] > cb)
6213                                      if(ptr[offset7] > cb)
6214                                        {}
6215                                      else
6216                                        continue;
6217                                    else
6218                                      continue;
6219                                  else
6220                                    continue;
6221                                else
6222                                  continue;
6223                            else
6224                              if(ptr[offset3] > cb)
6225                                if(ptr[offset4] > cb)
6226                                  if(ptr[offset5] > cb)
6227                                    if(ptr[offset6] > cb)
6228                                      if(ptr[offset7] > cb)
6229                                        {}
6230                                      else
6231                                        continue;
6232                                    else
6233                                      continue;
6234                                  else
6235                                    continue;
6236                                else
6237                                  continue;
6238                              else
6239                                continue;
6240                          else
6241                            if(ptr[offset1] > cb)
6242                              if(ptr[offset12] > cb)
6243                                if(ptr[offset13] > cb)
6244                                  if(ptr[offset14] > cb)
6245                                    if(ptr[offset15] > cb)
6246                                      {}
6247                                    else
6248                                      continue;
6249                                  else
6250                                    continue;
6251                                else
6252                                  continue;
6253                              else
6254                                continue;
6255                            else
6256                              continue;
6257                        else
6258                          continue;
6259                      else
6260                        continue;
6261                    else if(ptr[offset9] < c_b)
6262                      if(ptr[offset7] < c_b)
6263                        if(ptr[offset8] < c_b)
6264                          if(ptr[offset10] < c_b)
6265                            if(ptr[offset11] < c_b)
6266                              if(ptr[offset6] < c_b)
6267                                if(ptr[offset5] < c_b)
6268                                  if(ptr[offset4] < c_b)
6269                                    if(ptr[offset3] < c_b)
6270                                      {}
6271                                    else
6272                                      if(ptr[offset12] < c_b)
6273                                        {}
6274                                      else
6275                                        continue;
6276                                  else
6277                                    if(ptr[offset12] < c_b)
6278                                      if(ptr[offset13] < c_b)
6279                                        {}
6280                                      else
6281                                        continue;
6282                                    else
6283                                      continue;
6284                                else
6285                                  if(ptr[offset12] < c_b)
6286                                    if(ptr[offset13] < c_b)
6287                                      if(ptr[offset14] < c_b)
6288                                        {}
6289                                      else
6290                                        continue;
6291                                    else
6292                                      continue;
6293                                  else
6294                                    continue;
6295                              else
6296                                if(ptr[offset12] < c_b)
6297                                  if(ptr[offset13] < c_b)
6298                                    if(ptr[offset14] < c_b)
6299                                      if(ptr[offset15] < c_b)
6300                                        {}
6301                                      else
6302                                        continue;
6303                                    else
6304                                      continue;
6305                                  else
6306                                    continue;
6307                                else
6308                                  continue;
6309                            else
6310                              continue;
6311                          else
6312                            continue;
6313                        else
6314                          continue;
6315                      else
6316                        continue;
6317                    else
6318                      continue;
6319                else if(ptr[offset0] < c_b)
6320                  if(ptr[offset2] > cb)
6321                    if(ptr[offset9] > cb)
6322                      if(ptr[offset7] > cb)
6323                        if(ptr[offset8] > cb)
6324                          if(ptr[offset6] > cb)
6325                            if(ptr[offset5] > cb)
6326                              if(ptr[offset4] > cb)
6327                                if(ptr[offset3] > cb)
6328                                  if(ptr[offset1] > cb)
6329                                    {}
6330                                  else
6331                                    if(ptr[offset10] > cb)
6332                                      {}
6333                                    else
6334                                      continue;
6335                                else
6336                                  if(ptr[offset10] > cb)
6337                                    if(ptr[offset11] > cb)
6338                                      if(ptr[offset12] > cb)
6339                                        {}
6340                                      else
6341                                        continue;
6342                                    else
6343                                      continue;
6344                                  else
6345                                    continue;
6346                              else
6347                                if(ptr[offset10] > cb)
6348                                  if(ptr[offset11] > cb)
6349                                    if(ptr[offset12] > cb)
6350                                      if(ptr[offset13] > cb)
6351                                        {}
6352                                      else
6353                                        continue;
6354                                    else
6355                                      continue;
6356                                  else
6357                                    continue;
6358                                else
6359                                  continue;
6360                            else
6361                              if(ptr[offset10] > cb)
6362                                if(ptr[offset11] > cb)
6363                                  if(ptr[offset12] > cb)
6364                                    if(ptr[offset13] > cb)
6365                                      if(ptr[offset14] > cb)
6366                                        {}
6367                                      else
6368                                        continue;
6369                                    else
6370                                      continue;
6371                                  else
6372                                    continue;
6373                                else
6374                                  continue;
6375                              else
6376                                continue;
6377                          else
6378                            if(ptr[offset10] > cb)
6379                              if(ptr[offset11] > cb)
6380                                if(ptr[offset12] > cb)
6381                                  if(ptr[offset13] > cb)
6382                                    if(ptr[offset14] > cb)
6383                                      if(ptr[offset15] > cb)
6384                                        {}
6385                                      else
6386                                        continue;
6387                                    else
6388                                      continue;
6389                                  else
6390                                    continue;
6391                                else
6392                                  continue;
6393                              else
6394                                continue;
6395                            else
6396                              continue;
6397                        else
6398                          continue;
6399                      else
6400                        continue;
6401                    else if(ptr[offset9] < c_b)
6402                      if(ptr[offset10] < c_b)
6403                        if(ptr[offset11] < c_b)
6404                          if(ptr[offset8] < c_b)
6405                            if(ptr[offset12] < c_b)
6406                              if(ptr[offset13] < c_b)
6407                                if(ptr[offset14] < c_b)
6408                                  if(ptr[offset15] < c_b)
6409                                    {}
6410                                  else
6411                                    if(ptr[offset6] < c_b)
6412                                      if(ptr[offset7] < c_b)
6413                                        {}
6414                                      else
6415                                        continue;
6416                                    else
6417                                      continue;
6418                                else
6419                                  if(ptr[offset5] < c_b)
6420                                    if(ptr[offset6] < c_b)
6421                                      if(ptr[offset7] < c_b)
6422                                        {}
6423                                      else
6424                                        continue;
6425                                    else
6426                                      continue;
6427                                  else
6428                                    continue;
6429                              else
6430                                if(ptr[offset4] < c_b)
6431                                  if(ptr[offset5] < c_b)
6432                                    if(ptr[offset6] < c_b)
6433                                      if(ptr[offset7] < c_b)
6434                                        {}
6435                                      else
6436                                        continue;
6437                                    else
6438                                      continue;
6439                                  else
6440                                    continue;
6441                                else
6442                                  continue;
6443                            else
6444                              if(ptr[offset3] < c_b)
6445                                if(ptr[offset4] < c_b)
6446                                  if(ptr[offset5] < c_b)
6447                                    if(ptr[offset6] < c_b)
6448                                      if(ptr[offset7] < c_b)
6449                                        {}
6450                                      else
6451                                        continue;
6452                                    else
6453                                      continue;
6454                                  else
6455                                    continue;
6456                                else
6457                                  continue;
6458                              else
6459                                continue;
6460                          else
6461                            if(ptr[offset1] < c_b)
6462                              if(ptr[offset12] < c_b)
6463                                if(ptr[offset13] < c_b)
6464                                  if(ptr[offset14] < c_b)
6465                                    if(ptr[offset15] < c_b)
6466                                      {}
6467                                    else
6468                                      continue;
6469                                  else
6470                                    continue;
6471                                else
6472                                  continue;
6473                              else
6474                                continue;
6475                            else
6476                              continue;
6477                        else
6478                          continue;
6479                      else
6480                        continue;
6481                    else
6482                      continue;
6483                  else if(ptr[offset2] < c_b)
6484                    if(ptr[offset4] > cb)
6485                      if(ptr[offset11] > cb)
6486                        if(ptr[offset7] > cb)
6487                          if(ptr[offset8] > cb)
6488                            if(ptr[offset9] > cb)
6489                              if(ptr[offset10] > cb)
6490                                if(ptr[offset6] > cb)
6491                                  if(ptr[offset5] > cb)
6492                                    if(ptr[offset3] > cb)
6493                                      {}
6494                                    else
6495                                      if(ptr[offset12] > cb)
6496                                        {}
6497                                      else
6498                                        continue;
6499                                  else
6500                                    if(ptr[offset12] > cb)
6501                                      if(ptr[offset13] > cb)
6502                                        if(ptr[offset14] > cb)
6503                                          {}
6504                                        else
6505                                          continue;
6506                                      else
6507                                        continue;
6508                                    else
6509                                      continue;
6510                                else
6511                                  if(ptr[offset12] > cb)
6512                                    if(ptr[offset13] > cb)
6513                                      if(ptr[offset14] > cb)
6514                                        if(ptr[offset15] > cb)
6515                                          {}
6516                                        else
6517                                          continue;
6518                                      else
6519                                        continue;
6520                                    else
6521                                      continue;
6522                                  else
6523                                    continue;
6524                              else
6525                                continue;
6526                            else
6527                              continue;
6528                          else
6529                            continue;
6530                        else
6531                          continue;
6532                      else if(ptr[offset11] < c_b)
6533                        if(ptr[offset12] < c_b)
6534                          if(ptr[offset13] < c_b)
6535                            if(ptr[offset10] < c_b)
6536                              if(ptr[offset14] < c_b)
6537                                if(ptr[offset15] < c_b)
6538                                  if(ptr[offset1] < c_b)
6539                                    {}
6540                                  else
6541                                    if(ptr[offset8] < c_b)
6542                                      if(ptr[offset9] < c_b)
6543                                        {}
6544                                      else
6545                                        continue;
6546                                    else
6547                                      continue;
6548                                else
6549                                  if(ptr[offset6] < c_b)
6550                                    if(ptr[offset7] < c_b)
6551                                      if(ptr[offset8] < c_b)
6552                                        if(ptr[offset9] < c_b)
6553                                          {}
6554                                        else
6555                                          continue;
6556                                      else
6557                                        continue;
6558                                    else
6559                                      continue;
6560                                  else
6561                                    continue;
6562                              else
6563                                if(ptr[offset5] < c_b)
6564                                  if(ptr[offset6] < c_b)
6565                                    if(ptr[offset7] < c_b)
6566                                      if(ptr[offset8] < c_b)
6567                                        if(ptr[offset9] < c_b)
6568                                          {}
6569                                        else
6570                                          continue;
6571                                      else
6572                                        continue;
6573                                    else
6574                                      continue;
6575                                  else
6576                                    continue;
6577                                else
6578                                  continue;
6579                            else
6580                              if(ptr[offset1] < c_b)
6581                                if(ptr[offset3] < c_b)
6582                                  if(ptr[offset14] < c_b)
6583                                    if(ptr[offset15] < c_b)
6584                                      {}
6585                                    else
6586                                      continue;
6587                                  else
6588                                    continue;
6589                                else
6590                                  continue;
6591                              else
6592                                continue;
6593                          else
6594                            continue;
6595                        else
6596                          continue;
6597                      else
6598                        continue;
6599                    else if(ptr[offset4] < c_b)
6600                      if(ptr[offset5] > cb)
6601                        if(ptr[offset12] > cb)
6602                          if(ptr[offset7] > cb)
6603                            if(ptr[offset8] > cb)
6604                              if(ptr[offset9] > cb)
6605                                if(ptr[offset10] > cb)
6606                                  if(ptr[offset11] > cb)
6607                                    if(ptr[offset13] > cb)
6608                                      if(ptr[offset6] > cb)
6609                                        {}
6610                                      else
6611                                        if(ptr[offset14] > cb)
6612                                          if(ptr[offset15] > cb)
6613                                            {}
6614                                          else
6615                                            continue;
6616                                        else
6617                                          continue;
6618                                    else
6619                                      continue;
6620                                  else
6621                                    continue;
6622                                else
6623                                  continue;
6624                              else
6625                                continue;
6626                            else
6627                              continue;
6628                          else
6629                            continue;
6630                        else if(ptr[offset12] < c_b)
6631                          if(ptr[offset13] < c_b)
6632                            if(ptr[offset14] < c_b)
6633                              if(ptr[offset15] < c_b)
6634                                if(ptr[offset1] < c_b)
6635                                  if(ptr[offset3] < c_b)
6636                                    {}
6637                                  else
6638                                    if(ptr[offset10] < c_b)
6639                                      if(ptr[offset11] < c_b)
6640                                        {}
6641                                      else
6642                                        continue;
6643                                    else
6644                                      continue;
6645                                else
6646                                  if(ptr[offset8] < c_b)
6647                                    if(ptr[offset9] < c_b)
6648                                      if(ptr[offset10] < c_b)
6649                                        if(ptr[offset11] < c_b)
6650                                          {}
6651                                        else
6652                                          continue;
6653                                      else
6654                                        continue;
6655                                    else
6656                                      continue;
6657                                  else
6658                                    continue;
6659                              else
6660                                if(ptr[offset6] < c_b)
6661                                  if(ptr[offset7] < c_b)
6662                                    if(ptr[offset8] < c_b)
6663                                      if(ptr[offset9] < c_b)
6664                                        if(ptr[offset10] < c_b)
6665                                          if(ptr[offset11] < c_b)
6666                                            {}
6667                                          else
6668                                            continue;
6669                                        else
6670                                          continue;
6671                                      else
6672                                        continue;
6673                                    else
6674                                      continue;
6675                                  else
6676                                    continue;
6677                                else
6678                                  continue;
6679                            else
6680                              continue;
6681                          else
6682                            continue;
6683                        else
6684                          continue;
6685                      else if(ptr[offset5] < c_b)
6686                        if(ptr[offset7] > cb)
6687                          if(ptr[offset14] > cb)
6688                            if(ptr[offset8] > cb)
6689                              if(ptr[offset9] > cb)
6690                                if(ptr[offset10] > cb)
6691                                  if(ptr[offset11] > cb)
6692                                    if(ptr[offset12] > cb)
6693                                      if(ptr[offset13] > cb)
6694                                        if(ptr[offset6] > cb)
6695                                          {}
6696                                        else
6697                                          if(ptr[offset15] > cb)
6698                                            {}
6699                                          else
6700                                            continue;
6701                                      else
6702                                        continue;
6703                                    else
6704                                      continue;
6705                                  else
6706                                    continue;
6707                                else
6708                                  continue;
6709                              else
6710                                continue;
6711                            else
6712                              continue;
6713                          else if(ptr[offset14] < c_b)
6714                            if(ptr[offset15] < c_b)
6715                              if(ptr[offset1] < c_b)
6716                                if(ptr[offset3] < c_b)
6717                                  if(ptr[offset6] < c_b)
6718                                    {}
6719                                  else
6720                                    if(ptr[offset13] < c_b)
6721                                      {}
6722                                    else
6723                                      continue;
6724                                else
6725                                  if(ptr[offset10] < c_b)
6726                                    if(ptr[offset11] < c_b)
6727                                      if(ptr[offset12] < c_b)
6728                                        if(ptr[offset13] < c_b)
6729                                          {}
6730                                        else
6731                                          continue;
6732                                      else
6733                                        continue;
6734                                    else
6735                                      continue;
6736                                  else
6737                                    continue;
6738                              else
6739                                if(ptr[offset8] < c_b)
6740                                  if(ptr[offset9] < c_b)
6741                                    if(ptr[offset10] < c_b)
6742                                      if(ptr[offset11] < c_b)
6743                                        if(ptr[offset12] < c_b)
6744                                          if(ptr[offset13] < c_b)
6745                                            {}
6746                                          else
6747                                            continue;
6748                                        else
6749                                          continue;
6750                                      else
6751                                        continue;
6752                                    else
6753                                      continue;
6754                                  else
6755                                    continue;
6756                                else
6757                                  continue;
6758                            else
6759                              continue;
6760                          else
6761                            continue;
6762                        else if(ptr[offset7] < c_b)
6763                          if(ptr[offset3] < c_b)
6764                            if(ptr[offset1] < c_b)
6765                              if(ptr[offset6] < c_b)
6766                                if(ptr[offset8] < c_b)
6767                                  {}
6768                                else
6769                                  if(ptr[offset15] < c_b)
6770                                    {}
6771                                  else
6772                                    continue;
6773                              else
6774                                if(ptr[offset13] < c_b)
6775                                  if(ptr[offset14] < c_b)
6776                                    if(ptr[offset15] < c_b)
6777                                      {}
6778                                    else
6779                                      continue;
6780                                  else
6781                                    continue;
6782                                else
6783                                  continue;
6784                            else
6785                              if(ptr[offset8] < c_b)
6786                                if(ptr[offset9] < c_b)
6787                                  if(ptr[offset10] < c_b)
6788                                    if(ptr[offset6] < c_b)
6789                                      {}
6790                                    else
6791                                      if(ptr[offset11] < c_b)
6792                                        if(ptr[offset12] < c_b)
6793                                          if(ptr[offset13] < c_b)
6794                                            if(ptr[offset14] < c_b)
6795                                              if(ptr[offset15] < c_b)
6796                                                {}
6797                                              else
6798                                                continue;
6799                                            else
6800                                              continue;
6801                                          else
6802                                            continue;
6803                                        else
6804                                          continue;
6805                                      else
6806                                        continue;
6807                                  else
6808                                    continue;
6809                                else
6810                                  continue;
6811                              else
6812                                continue;
6813                          else
6814                            if(ptr[offset10] < c_b)
6815                              if(ptr[offset11] < c_b)
6816                                if(ptr[offset12] < c_b)
6817                                  if(ptr[offset8] < c_b)
6818                                    if(ptr[offset9] < c_b)
6819                                      if(ptr[offset6] < c_b)
6820                                        {}
6821                                      else
6822                                        if(ptr[offset13] < c_b)
6823                                          if(ptr[offset14] < c_b)
6824                                            if(ptr[offset15] < c_b)
6825                                              {}
6826                                            else
6827                                              continue;
6828                                          else
6829                                            continue;
6830                                        else
6831                                          continue;
6832                                    else
6833                                      if(ptr[offset1] < c_b)
6834                                        if(ptr[offset13] < c_b)
6835                                          if(ptr[offset14] < c_b)
6836                                            if(ptr[offset15] < c_b)
6837                                              {}
6838                                            else
6839                                              continue;
6840                                          else
6841                                            continue;
6842                                        else
6843                                          continue;
6844                                      else
6845                                        continue;
6846                                  else
6847                                    if(ptr[offset1] < c_b)
6848                                      if(ptr[offset13] < c_b)
6849                                        if(ptr[offset14] < c_b)
6850                                          if(ptr[offset15] < c_b)
6851                                            {}
6852                                          else
6853                                            continue;
6854                                        else
6855                                          continue;
6856                                      else
6857                                        continue;
6858                                    else
6859                                      continue;
6860                                else
6861                                  continue;
6862                              else
6863                                continue;
6864                            else
6865                              continue;
6866                        else
6867                          if(ptr[offset14] < c_b)
6868                            if(ptr[offset15] < c_b)
6869                              if(ptr[offset1] < c_b)
6870                                if(ptr[offset3] < c_b)
6871                                  if(ptr[offset6] < c_b)
6872                                    {}
6873                                  else
6874                                    if(ptr[offset13] < c_b)
6875                                      {}
6876                                    else
6877                                      continue;
6878                                else
6879                                  if(ptr[offset10] < c_b)
6880                                    if(ptr[offset11] < c_b)
6881                                      if(ptr[offset12] < c_b)
6882                                        if(ptr[offset13] < c_b)
6883                                          {}
6884                                        else
6885                                          continue;
6886                                      else
6887                                        continue;
6888                                    else
6889                                      continue;
6890                                  else
6891                                    continue;
6892                              else
6893                                if(ptr[offset8] < c_b)
6894                                  if(ptr[offset9] < c_b)
6895                                    if(ptr[offset10] < c_b)
6896                                      if(ptr[offset11] < c_b)
6897                                        if(ptr[offset12] < c_b)
6898                                          if(ptr[offset13] < c_b)
6899                                            {}
6900                                          else
6901                                            continue;
6902                                        else
6903                                          continue;
6904                                      else
6905                                        continue;
6906                                    else
6907                                      continue;
6908                                  else
6909                                    continue;
6910                                else
6911                                  continue;
6912                            else
6913                              continue;
6914                          else
6915                            continue;
6916                      else
6917                        if(ptr[offset12] > cb)
6918                          if(ptr[offset7] > cb)
6919                            if(ptr[offset8] > cb)
6920                              if(ptr[offset9] > cb)
6921                                if(ptr[offset10] > cb)
6922                                  if(ptr[offset11] > cb)
6923                                    if(ptr[offset13] > cb)
6924                                      if(ptr[offset14] > cb)
6925                                        if(ptr[offset6] > cb)
6926                                          {}
6927                                        else
6928                                          if(ptr[offset15] > cb)
6929                                            {}
6930                                          else
6931                                            continue;
6932                                      else
6933                                        continue;
6934                                    else
6935                                      continue;
6936                                  else
6937                                    continue;
6938                                else
6939                                  continue;
6940                              else
6941                                continue;
6942                            else
6943                              continue;
6944                          else
6945                            continue;
6946                        else if(ptr[offset12] < c_b)
6947                          if(ptr[offset13] < c_b)
6948                            if(ptr[offset14] < c_b)
6949                              if(ptr[offset15] < c_b)
6950                                if(ptr[offset1] < c_b)
6951                                  if(ptr[offset3] < c_b)
6952                                    {}
6953                                  else
6954                                    if(ptr[offset10] < c_b)
6955                                      if(ptr[offset11] < c_b)
6956                                        {}
6957                                      else
6958                                        continue;
6959                                    else
6960                                      continue;
6961                                else
6962                                  if(ptr[offset8] < c_b)
6963                                    if(ptr[offset9] < c_b)
6964                                      if(ptr[offset10] < c_b)
6965                                        if(ptr[offset11] < c_b)
6966                                          {}
6967                                        else
6968                                          continue;
6969                                      else
6970                                        continue;
6971                                    else
6972                                      continue;
6973                                  else
6974                                    continue;
6975                              else
6976                                if(ptr[offset6] < c_b)
6977                                  if(ptr[offset7] < c_b)
6978                                    if(ptr[offset8] < c_b)
6979                                      if(ptr[offset9] < c_b)
6980                                        if(ptr[offset10] < c_b)
6981                                          if(ptr[offset11] < c_b)
6982                                            {}
6983                                          else
6984                                            continue;
6985                                        else
6986                                          continue;
6987                                      else
6988                                        continue;
6989                                    else
6990                                      continue;
6991                                  else
6992                                    continue;
6993                                else
6994                                  continue;
6995                            else
6996                              continue;
6997                          else
6998                            continue;
6999                        else
7000                          continue;
7001                    else
7002                      if(ptr[offset11] > cb)
7003                        if(ptr[offset7] > cb)
7004                          if(ptr[offset8] > cb)
7005                            if(ptr[offset9] > cb)
7006                              if(ptr[offset10] > cb)
7007                                if(ptr[offset12] > cb)
7008                                  if(ptr[offset13] > cb)
7009                                    if(ptr[offset6] > cb)
7010                                      if(ptr[offset5] > cb)
7011                                        {}
7012                                      else
7013                                        if(ptr[offset14] > cb)
7014                                          {}
7015                                        else
7016                                          continue;
7017                                    else
7018                                      if(ptr[offset14] > cb)
7019                                        if(ptr[offset15] > cb)
7020                                          {}
7021                                        else
7022                                          continue;
7023                                      else
7024                                        continue;
7025                                  else
7026                                    continue;
7027                                else
7028                                  continue;
7029                              else
7030                                continue;
7031                            else
7032                              continue;
7033                          else
7034                            continue;
7035                        else
7036                          continue;
7037                      else if(ptr[offset11] < c_b)
7038                        if(ptr[offset12] < c_b)
7039                          if(ptr[offset13] < c_b)
7040                            if(ptr[offset10] < c_b)
7041                              if(ptr[offset14] < c_b)
7042                                if(ptr[offset15] < c_b)
7043                                  if(ptr[offset1] < c_b)
7044                                    {}
7045                                  else
7046                                    if(ptr[offset8] < c_b)
7047                                      if(ptr[offset9] < c_b)
7048                                        {}
7049                                      else
7050                                        continue;
7051                                    else
7052                                      continue;
7053                                else
7054                                  if(ptr[offset6] < c_b)
7055                                    if(ptr[offset7] < c_b)
7056                                      if(ptr[offset8] < c_b)
7057                                        if(ptr[offset9] < c_b)
7058                                          {}
7059                                        else
7060                                          continue;
7061                                      else
7062                                        continue;
7063                                    else
7064                                      continue;
7065                                  else
7066                                    continue;
7067                              else
7068                                if(ptr[offset5] < c_b)
7069                                  if(ptr[offset6] < c_b)
7070                                    if(ptr[offset7] < c_b)
7071                                      if(ptr[offset8] < c_b)
7072                                        if(ptr[offset9] < c_b)
7073                                          {}
7074                                        else
7075                                          continue;
7076                                      else
7077                                        continue;
7078                                    else
7079                                      continue;
7080                                  else
7081                                    continue;
7082                                else
7083                                  continue;
7084                            else
7085                              if(ptr[offset1] < c_b)
7086                                if(ptr[offset3] < c_b)
7087                                  if(ptr[offset14] < c_b)
7088                                    if(ptr[offset15] < c_b)
7089                                      {}
7090                                    else
7091                                      continue;
7092                                  else
7093                                    continue;
7094                                else
7095                                  continue;
7096                              else
7097                                continue;
7098                          else
7099                            continue;
7100                        else
7101                          continue;
7102                      else
7103                        continue;
7104                  else
7105                    if(ptr[offset9] > cb)
7106                      if(ptr[offset7] > cb)
7107                        if(ptr[offset8] > cb)
7108                          if(ptr[offset10] > cb)
7109                            if(ptr[offset11] > cb)
7110                              if(ptr[offset6] > cb)
7111                                if(ptr[offset5] > cb)
7112                                  if(ptr[offset4] > cb)
7113                                    if(ptr[offset3] > cb)
7114                                      {}
7115                                    else
7116                                      if(ptr[offset12] > cb)
7117                                        {}
7118                                      else
7119                                        continue;
7120                                  else
7121                                    if(ptr[offset12] > cb)
7122                                      if(ptr[offset13] > cb)
7123                                        {}
7124                                      else
7125                                        continue;
7126                                    else
7127                                      continue;
7128                                else
7129                                  if(ptr[offset12] > cb)
7130                                    if(ptr[offset13] > cb)
7131                                      if(ptr[offset14] > cb)
7132                                        {}
7133                                      else
7134                                        continue;
7135                                    else
7136                                      continue;
7137                                  else
7138                                    continue;
7139                              else
7140                                if(ptr[offset12] > cb)
7141                                  if(ptr[offset13] > cb)
7142                                    if(ptr[offset14] > cb)
7143                                      if(ptr[offset15] > cb)
7144                                        {}
7145                                      else
7146                                        continue;
7147                                    else
7148                                      continue;
7149                                  else
7150                                    continue;
7151                                else
7152                                  continue;
7153                            else
7154                              continue;
7155                          else
7156                            continue;
7157                        else
7158                          continue;
7159                      else
7160                        continue;
7161                    else if(ptr[offset9] < c_b)
7162                      if(ptr[offset10] < c_b)
7163                        if(ptr[offset11] < c_b)
7164                          if(ptr[offset8] < c_b)
7165                            if(ptr[offset12] < c_b)
7166                              if(ptr[offset13] < c_b)
7167                                if(ptr[offset14] < c_b)
7168                                  if(ptr[offset15] < c_b)
7169                                    {}
7170                                  else
7171                                    if(ptr[offset6] < c_b)
7172                                      if(ptr[offset7] < c_b)
7173                                        {}
7174                                      else
7175                                        continue;
7176                                    else
7177                                      continue;
7178                                else
7179                                  if(ptr[offset5] < c_b)
7180                                    if(ptr[offset6] < c_b)
7181                                      if(ptr[offset7] < c_b)
7182                                        {}
7183                                      else
7184                                        continue;
7185                                    else
7186                                      continue;
7187                                  else
7188                                    continue;
7189                              else
7190                                if(ptr[offset4] < c_b)
7191                                  if(ptr[offset5] < c_b)
7192                                    if(ptr[offset6] < c_b)
7193                                      if(ptr[offset7] < c_b)
7194                                        {}
7195                                      else
7196                                        continue;
7197                                    else
7198                                      continue;
7199                                  else
7200                                    continue;
7201                                else
7202                                  continue;
7203                            else
7204                              if(ptr[offset3] < c_b)
7205                                if(ptr[offset4] < c_b)
7206                                  if(ptr[offset5] < c_b)
7207                                    if(ptr[offset6] < c_b)
7208                                      if(ptr[offset7] < c_b)
7209                                        {}
7210                                      else
7211                                        continue;
7212                                    else
7213                                      continue;
7214                                  else
7215                                    continue;
7216                                else
7217                                  continue;
7218                              else
7219                                continue;
7220                          else
7221                            if(ptr[offset1] < c_b)
7222                              if(ptr[offset12] < c_b)
7223                                if(ptr[offset13] < c_b)
7224                                  if(ptr[offset14] < c_b)
7225                                    if(ptr[offset15] < c_b)
7226                                      {}
7227                                    else
7228                                      continue;
7229                                  else
7230                                    continue;
7231                                else
7232                                  continue;
7233                              else
7234                                continue;
7235                            else
7236                              continue;
7237                        else
7238                          continue;
7239                      else
7240                        continue;
7241                    else
7242                      continue;
7243                else
7244                  if(ptr[offset7] > cb)
7245                    if(ptr[offset8] > cb)
7246                      if(ptr[offset9] > cb)
7247                        if(ptr[offset6] > cb)
7248                          if(ptr[offset5] > cb)
7249                            if(ptr[offset4] > cb)
7250                              if(ptr[offset3] > cb)
7251                                if(ptr[offset2] > cb)
7252                                  if(ptr[offset1] > cb)
7253                                    {}
7254                                  else
7255                                    if(ptr[offset10] > cb)
7256                                      {}
7257                                    else
7258                                      continue;
7259                                else
7260                                  if(ptr[offset10] > cb)
7261                                    if(ptr[offset11] > cb)
7262                                      {}
7263                                    else
7264                                      continue;
7265                                  else
7266                                    continue;
7267                              else
7268                                if(ptr[offset10] > cb)
7269                                  if(ptr[offset11] > cb)
7270                                    if(ptr[offset12] > cb)
7271                                      {}
7272                                    else
7273                                      continue;
7274                                  else
7275                                    continue;
7276                                else
7277                                  continue;
7278                            else
7279                              if(ptr[offset10] > cb)
7280                                if(ptr[offset11] > cb)
7281                                  if(ptr[offset12] > cb)
7282                                    if(ptr[offset13] > cb)
7283                                      {}
7284                                    else
7285                                      continue;
7286                                  else
7287                                    continue;
7288                                else
7289                                  continue;
7290                              else
7291                                continue;
7292                          else
7293                            if(ptr[offset10] > cb)
7294                              if(ptr[offset11] > cb)
7295                                if(ptr[offset12] > cb)
7296                                  if(ptr[offset13] > cb)
7297                                    if(ptr[offset14] > cb)
7298                                      {}
7299                                    else
7300                                      continue;
7301                                  else
7302                                    continue;
7303                                else
7304                                  continue;
7305                              else
7306                                continue;
7307                            else
7308                              continue;
7309                        else
7310                          if(ptr[offset10] > cb)
7311                            if(ptr[offset11] > cb)
7312                              if(ptr[offset12] > cb)
7313                                if(ptr[offset13] > cb)
7314                                  if(ptr[offset14] > cb)
7315                                    if(ptr[offset15] > cb)
7316                                      {}
7317                                    else
7318                                      continue;
7319                                  else
7320                                    continue;
7321                                else
7322                                  continue;
7323                              else
7324                                continue;
7325                            else
7326                              continue;
7327                          else
7328                            continue;
7329                      else
7330                        continue;
7331                    else
7332                      continue;
7333                  else if(ptr[offset7] < c_b)
7334                    if(ptr[offset8] < c_b)
7335                      if(ptr[offset9] < c_b)
7336                        if(ptr[offset6] < c_b)
7337                          if(ptr[offset5] < c_b)
7338                            if(ptr[offset4] < c_b)
7339                              if(ptr[offset3] < c_b)
7340                                if(ptr[offset2] < c_b)
7341                                  if(ptr[offset1] < c_b)
7342                                    {}
7343                                  else
7344                                    if(ptr[offset10] < c_b)
7345                                      {}
7346                                    else
7347                                      continue;
7348                                else
7349                                  if(ptr[offset10] < c_b)
7350                                    if(ptr[offset11] < c_b)
7351                                      {}
7352                                    else
7353                                      continue;
7354                                  else
7355                                    continue;
7356                              else
7357                                if(ptr[offset10] < c_b)
7358                                  if(ptr[offset11] < c_b)
7359                                    if(ptr[offset12] < c_b)
7360                                      {}
7361                                    else
7362                                      continue;
7363                                  else
7364                                    continue;
7365                                else
7366                                  continue;
7367                            else
7368                              if(ptr[offset10] < c_b)
7369                                if(ptr[offset11] < c_b)
7370                                  if(ptr[offset12] < c_b)
7371                                    if(ptr[offset13] < c_b)
7372                                      {}
7373                                    else
7374                                      continue;
7375                                  else
7376                                    continue;
7377                                else
7378                                  continue;
7379                              else
7380                                continue;
7381                          else
7382                            if(ptr[offset10] < c_b)
7383                              if(ptr[offset11] < c_b)
7384                                if(ptr[offset12] < c_b)
7385                                  if(ptr[offset13] < c_b)
7386                                    if(ptr[offset14] < c_b)
7387                                      {}
7388                                    else
7389                                      continue;
7390                                  else
7391                                    continue;
7392                                else
7393                                  continue;
7394                              else
7395                                continue;
7396                            else
7397                              continue;
7398                        else
7399                          if(ptr[offset10] < c_b)
7400                            if(ptr[offset11] < c_b)
7401                              if(ptr[offset12] < c_b)
7402                                if(ptr[offset13] < c_b)
7403                                  if(ptr[offset14] < c_b)
7404                                    if(ptr[offset15] < c_b)
7405                                      {}
7406                                    else
7407                                      continue;
7408                                  else
7409                                    continue;
7410                                else
7411                                  continue;
7412                              else
7413                                continue;
7414                            else
7415                              continue;
7416                          else
7417                            continue;
7418                      else
7419                        continue;
7420                    else
7421                      continue;
7422                  else
7423                    continue;
7424            }
7425            if(total == nExpectedCorners)
7426            {
7427                if(nExpectedCorners == 0)
7428                {
7429                    nExpectedCorners = 512;
7430                    keypoints.reserve(nExpectedCorners);
7431                }
7432                else
7433                {
7434                    nExpectedCorners *= 2;
7435                    keypoints.reserve(nExpectedCorners);
7436                }
7437            }
7438            keypoints.push_back(KeyPoint(Point2f((float)x, (float)y), 1.0f));
7439            total++;
7440        }
7441    }
7442}
7443
7444
7445void AGAST(InputArray _img, std::vector<KeyPoint>& keypoints, int threshold, bool nonmax_suppression)
7446{
7447    AGAST(_img, keypoints, threshold, nonmax_suppression, AgastFeatureDetector::OAST_9_16);
7448}
7449
7450
7451class AgastFeatureDetector_Impl : public AgastFeatureDetector
7452{
7453public:
7454    AgastFeatureDetector_Impl( int _threshold, bool _nonmaxSuppression, int _type )
7455    : threshold(_threshold), nonmaxSuppression(_nonmaxSuppression), type((short)_type)
7456    {}
7457
7458    void detect( InputArray _image, std::vector<KeyPoint>& keypoints, InputArray _mask )
7459    {
7460        Mat mask = _mask.getMat(), grayImage;
7461        UMat ugrayImage;
7462        _InputArray gray = _image;
7463        if( _image.type() != CV_8U )
7464        {
7465            _OutputArray ogray = _image.isUMat() ? _OutputArray(ugrayImage) : _OutputArray(grayImage);
7466            cvtColor( _image, ogray, COLOR_BGR2GRAY );
7467            gray = ogray;
7468        }
7469        AGAST( gray, keypoints, threshold, nonmaxSuppression, type );
7470        KeyPointsFilter::runByPixelsMask( keypoints, mask );
7471    }
7472
7473    void set(int prop, double value)
7474    {
7475        if(prop == THRESHOLD)
7476            threshold = cvRound(value);
7477        else if(prop == NONMAX_SUPPRESSION)
7478            nonmaxSuppression = value != 0;
7479        else
7480            CV_Error(Error::StsBadArg, "");
7481    }
7482
7483    double get(int prop) const
7484    {
7485        if(prop == THRESHOLD)
7486            return threshold;
7487        if(prop == NONMAX_SUPPRESSION)
7488            return nonmaxSuppression;
7489        CV_Error(Error::StsBadArg, "");
7490        return 0;
7491    }
7492
7493    void setThreshold(int threshold_) { threshold = threshold_; }
7494    int getThreshold() const { return threshold; }
7495
7496    void setNonmaxSuppression(bool f) { nonmaxSuppression = f; }
7497    bool getNonmaxSuppression() const { return nonmaxSuppression; }
7498
7499    void setType(int type_) { type = type_; }
7500    int getType() const { return type; }
7501
7502    int threshold;
7503    bool nonmaxSuppression;
7504    int type;
7505};
7506
7507Ptr<AgastFeatureDetector> AgastFeatureDetector::create( int threshold, bool nonmaxSuppression, int type )
7508{
7509    return makePtr<AgastFeatureDetector_Impl>(threshold, nonmaxSuppression, type);
7510}
7511
7512void AGAST(InputArray _img, std::vector<KeyPoint>& keypoints, int threshold, bool nonmax_suppression, int type)
7513{
7514    // detect
7515    switch(type) {
7516      case AgastFeatureDetector::AGAST_5_8:
7517        AGAST_5_8(_img, keypoints, threshold);
7518        break;
7519      case AgastFeatureDetector::AGAST_7_12d:
7520        AGAST_7_12d(_img, keypoints, threshold);
7521        break;
7522      case AgastFeatureDetector::AGAST_7_12s:
7523        AGAST_7_12s(_img, keypoints, threshold);
7524        break;
7525      case AgastFeatureDetector::OAST_9_16:
7526        OAST_9_16(_img, keypoints, threshold);
7527        break;
7528    }
7529
7530    cv::Mat img = _img.getMat();
7531
7532    // score
7533    int pixel_[16];
7534    makeAgastOffsets(pixel_, (int)img.step, type);
7535
7536    std::vector<KeyPoint>::iterator kpt;
7537    for(kpt = keypoints.begin(); kpt != keypoints.end(); kpt++)
7538    {
7539        switch(type) {
7540          case AgastFeatureDetector::AGAST_5_8:
7541            kpt->response = (float)agast_cornerScore<AgastFeatureDetector::AGAST_5_8>
7542                (&img.at<uchar>((int)kpt->pt.y, (int)kpt->pt.x), pixel_, threshold);
7543            break;
7544          case AgastFeatureDetector::AGAST_7_12d:
7545            kpt->response = (float)agast_cornerScore<AgastFeatureDetector::AGAST_7_12d>
7546                (&img.at<uchar>((int)kpt->pt.y, (int)kpt->pt.x), pixel_, threshold);
7547            break;
7548          case AgastFeatureDetector::AGAST_7_12s:
7549            kpt->response = (float)agast_cornerScore<AgastFeatureDetector::AGAST_7_12s>
7550                (&img.at<uchar>((int)kpt->pt.y, (int)kpt->pt.x), pixel_, threshold);
7551            break;
7552          case AgastFeatureDetector::OAST_9_16:
7553            kpt->response = (float)agast_cornerScore<AgastFeatureDetector::OAST_9_16>
7554                (&img.at<uchar>((int)kpt->pt.y, (int)kpt->pt.x), pixel_, threshold);
7555            break;
7556        }
7557    }
7558    // suppression
7559    if(nonmax_suppression)
7560    {
7561        size_t j;
7562        size_t curr_idx;
7563        size_t lastRow = 0, next_lastRow = 0;
7564        size_t num_Corners = keypoints.size();
7565        size_t lastRowCorner_ind = 0, next_lastRowCorner_ind = 0;
7566
7567        std::vector<int> nmsFlags;
7568        std::vector<KeyPoint>::iterator currCorner_nms;
7569        std::vector<KeyPoint>::const_iterator currCorner;
7570
7571        currCorner = keypoints.begin();
7572
7573        nmsFlags.resize((int)num_Corners);
7574
7575        // set all flags to MAXIMUM
7576        for(j = 0; j < num_Corners; j++)
7577            nmsFlags[j] = -1;
7578
7579        for(curr_idx = 0; curr_idx < num_Corners; curr_idx++)
7580        {
7581            int t;
7582            // check above
7583            if(lastRow + 1 < currCorner->pt.y)
7584            {
7585                lastRow = next_lastRow;
7586                lastRowCorner_ind = next_lastRowCorner_ind;
7587            }
7588            if(next_lastRow != currCorner->pt.y)
7589            {
7590                next_lastRow = (size_t) currCorner->pt.y;
7591                next_lastRowCorner_ind = curr_idx;
7592            }
7593            if(lastRow + 1 == currCorner->pt.y)
7594            {
7595                // find the corner above the current one
7596                while( (keypoints[lastRowCorner_ind].pt.x < currCorner->pt.x)
7597                    && (keypoints[lastRowCorner_ind].pt.y == lastRow) )
7598                    lastRowCorner_ind++;
7599
7600                    if( (keypoints[lastRowCorner_ind].pt.x == currCorner->pt.x)
7601                     && (lastRowCorner_ind != curr_idx) )
7602                    {
7603                        size_t w = lastRowCorner_ind;
7604                        // find the maximum in this block
7605                        while(nmsFlags[w] != -1)
7606                            w = nmsFlags[w];
7607
7608                        if(keypoints[curr_idx].response < keypoints[w].response)
7609                            nmsFlags[curr_idx] = (int)w;
7610                        else
7611                            nmsFlags[w] = (int)curr_idx;
7612                    }
7613            }
7614
7615            // check left
7616            t = (int)curr_idx - 1;
7617            if( (curr_idx != 0) && (keypoints[t].pt.y == currCorner->pt.y)
7618             && (keypoints[t].pt.x + 1 == currCorner->pt.x) )
7619            {
7620                int currCornerMaxAbove_ind = nmsFlags[curr_idx];
7621                // find the maximum in that area
7622                while(nmsFlags[t] != -1)
7623                    t = nmsFlags[t];
7624                // no maximum above
7625                if(currCornerMaxAbove_ind == -1)
7626                {
7627                    if((size_t)t != curr_idx)
7628                    {
7629                        if ( keypoints[curr_idx].response < keypoints[t].response )
7630                            nmsFlags[curr_idx] = t;
7631                        else
7632                            nmsFlags[t] = (int)curr_idx;
7633                    }
7634                }
7635                else // maximum above
7636                {
7637                    if(t != currCornerMaxAbove_ind)
7638                    {
7639                        if(keypoints[currCornerMaxAbove_ind].response < keypoints[t].response)
7640                        {
7641                            nmsFlags[currCornerMaxAbove_ind] = t;
7642                            nmsFlags[curr_idx] = t;
7643                        }
7644                        else
7645                        {
7646                            nmsFlags[t] = currCornerMaxAbove_ind;
7647                            nmsFlags[curr_idx] = currCornerMaxAbove_ind;
7648                        }
7649                    }
7650                }
7651            }
7652            currCorner++;
7653        }
7654
7655        // marks non-maximum corners
7656        for(curr_idx = 0; curr_idx < num_Corners; curr_idx++)
7657        {
7658            if (nmsFlags[curr_idx] != -1)
7659                keypoints[curr_idx].response = -1;
7660        }
7661
7662        // erase non-maximum corners
7663        for (j = keypoints.size(); j > 0; j--)
7664        {
7665            if (keypoints[j - 1].response == -1)
7666                keypoints.erase(keypoints.begin() + j - 1 );
7667        }
7668    }
7669}
7670
7671} // END NAMESPACE CV
7672