Add treelookups for nonintel
authoraskourik <askourik@users.noreply.github.com>
Thu, 19 Nov 2015 04:06:20 +0000 (07:06 +0300)
committeraskourik <askourik@users.noreply.github.com>
Thu, 19 Nov 2015 04:06:20 +0000 (07:06 +0300)
modules/features2d/include/opencv2/features2d.hpp
modules/features2d/src/agast.cpp
modules/features2d/src/agast_score.cpp
modules/features2d/src/agast_score.hpp
modules/features2d/src/mser.cpp

index cf95e7d..40f23a4 100644 (file)
@@ -424,6 +424,9 @@ circle around this pixel.
 AgastFeatureDetector::AGAST_5_8, AgastFeatureDetector::AGAST_7_12d,
 AgastFeatureDetector::AGAST_7_12s, AgastFeatureDetector::OAST_9_16
 
+For non-Intel platforms, there is a tree optimised variant of AGAST with same numerical results.
+The 32-bit binary tree tables were generated automatically from original code using perl script.
+The perl script and examples of tree generation are placed in features2d/doc folder.
 Detects corners using the AGAST algorithm by @cite mair2010_agast .
 
  */
index 95c74fb..ed8e4ea 100644 (file)
@@ -52,6 +52,10 @@ The references are:
 namespace cv
 {
 
+#if (defined __i386__ || defined(_M_IX86) || defined __x86_64__ || defined(_M_X64))
+
+#if (defined __i386__ || defined(_M_IX86) || defined __x86_64__ || defined(_M_X64))
+
 static void AGAST_5_8(InputArray _img, std::vector<KeyPoint>& keypoints, int threshold)
 {
 
@@ -214,7 +218,8 @@ static void AGAST_5_8(InputArray _img, std::vector<KeyPoint>& keypoints, int thr
                           goto homogeneous;
                       else
                         goto homogeneous;
-                else if(ptr[offset0] < c_b)
+                else
+                if(ptr[offset0] < c_b)
                   if(ptr[offset2] < c_b)
                     if(ptr[offset7] > cb)
                       if(ptr[offset3] < c_b)
@@ -562,7 +567,8 @@ static void AGAST_5_8(InputArray _img, std::vector<KeyPoint>& keypoints, int thr
                           goto structured;
                       else
                         goto homogeneous;
-                else if(ptr[offset0] < c_b)
+                else
+                if(ptr[offset0] < c_b)
                   if(ptr[offset2] < c_b)
                     if(ptr[offset7] > cb)
                       if(ptr[offset3] < c_b)
@@ -3257,6 +3263,7 @@ static void AGAST_7_12d(InputArray _img, std::vector<KeyPoint>& keypoints, int t
     }
 }
 
+
 static void AGAST_7_12s(InputArray _img, std::vector<KeyPoint>& keypoints, int threshold)
 {
     cv::Mat img;
@@ -7441,12 +7448,1669 @@ static void OAST_9_16(InputArray _img, std::vector<KeyPoint>& keypoints, int thr
     }
 }
 
+#else // !(defined __i386__ || defined(_M_IX86) || defined __x86_64__ || defined(_M_X64))
+
+static void AGAST_ALL(InputArray _img, std::vector<KeyPoint>& keypoints, int threshold, int agasttype)
+{
+    cv::Mat img;
+    if(!_img.getMat().isContinuous())
+      img = _img.getMat().clone();
+    else
+      img = _img.getMat();
+
+    int agastbase;
+#ifdef AGAST_TREE_24BIT
+    unsigned char *table_struct1;
+    unsigned char *table_struct2;
+    int result;
+    static const unsigned char table_5_8_struct1[][3] =
+    {{  0,  1, 38},{  2,  1, 22},{  3,  1, 10},{  5,  1,  6},{  1,  1,  3},{  4,255,  1},{  7,255,252},{  4,  1,252},
+    {  6,255,252},{  1,  1,252},{  4,253,  1},{  7,253,252},{  7,  1,  6},{  6,  1,252},{  5,  1,  3},{  1,255,  1},
+    {  4,255,252},{  1,253,252},{133,  1,252},{131,  1,252},{135,  1,252},{132,  1,252},{134,255,254},{  5,  1,  5},
+    {  7,  1,252},{  6,  1,252},{  1,253,  1},{  4,253,252},{133,  1,252},{131,  1,252},{130,  1,  5},{129,  1,  2},
+    {132,255,252},{132,  1,252},{134,255,252},{135,  1,252},{132,  1,252},{134,255,252},{128,  1, 50},{130,  1, 34},
+    {  7,  1, 13},{131,  1,  8},{133,  1,  5},{129,  1,  2},{132,255,254},{132,  1,252},{134,255,254},{129,  1,252},
+    {132,255,252},{  5,  1,252},{  3,  1,252},{  4,  1,252},{  6,255,254},{135,  1, 12},{131,  1,  6},{133,  1,  4},
+    {129,255,  1},{132,  1,252},{134,255,254},{129,253,252},{134,  1,252},{133,  1,  3},{129,255,  1},{132,255,252},
+    {129,253,252},{131,  1,252},{133,  1,  5},{129,  1,  2},{132,255,252},{132,  1,252},{134,255,252},{129,  1,252},
+    {132,253,252},{  5,  1, 10},{  3,  1,252},{  2,  1,  5},{  1,  1,  2},{  4,255,252},{  4,  1,252},{  6,255,252},
+    {  7,  1,252},{  4,  1,252},{  6,255,252},{133,  1,252},{135,  1,252},{134,  1,252},{129,253,  1},{132,253,252},
+    {  3,  1, 10},{  5,  1,252},{  2,  1,  5},{  1,  1,  2},{  4,253,252},{  4,  1,252},{  6,253,252},{  7,  1,252},
+    {  4,  1,252},{  6,253,252},{131,  1,252},{133,  1,252},{130,  1,  5},{129,  1,  2},{132,253,252},{132,  1,252},
+    {134,253,252},{135,  1,252},{132,  1,252},{134,253,252}};
+
+    static const unsigned char table_5_8_struct2[][3] =
+    {{  0,  1, 42},{  2,  1, 26},{  3,  1, 14},{  5,  1,  9},{  7,  1,  4},{  1,255,  1},{  4,  1,254},{  6,255,254},
+    {  1,  1,  2},{  4,255,254},{  4,  1,254},{  6,255,254},{  7,  1,  2},{  1,255,254},{  1,  1,254},{  4,255,254},
+    {  7,  1,  6},{  6,  1,254},{  5,  1,  3},{  1,255,  1},{  4,255,254},{  1,255,254},{133,  1,254},{131,  1,252},
+    {135,  1,252},{132,  1,254},{134,255,254},{  5,  1,  5},{  7,  1,254},{  6,  1,254},{  1,255,  1},{  4,255,254},
+    {133,  1,252},{131,  1,254},{130,  1,  5},{129,  1,  2},{132,255,254},{132,  1,254},{134,255,254},{135,  1,252},
+    {132,  1,252},{134,253,252},{128,  1, 50},{130,  1, 34},{  7,  1, 13},{131,  1,  8},{133,  1,  5},{129,  1,  2},
+    {132,255,254},{132,  1,254},{134,255,254},{129,  1,254},{132,255,254},{  5,  1,254},{  3,  1,252},{  4,  1,254},
+    {  6,255,254},{135,  1, 12},{131,  1,  6},{133,  1,  4},{129,255,  1},{132,  1,254},{134,255,254},{129,255,254},
+    {134,  1,254},{133,  1,  3},{129,255,  1},{132,255,254},{129,255,254},{131,  1,252},{133,  1,  5},{129,  1,  2},
+    {132,253,252},{132,  1,252},{134,253,252},{129,  1,252},{132,253,252},{  5,  1, 10},{  3,  1,254},{  2,  1,  5},
+    {  1,  1,  2},{  4,255,254},{  4,  1,254},{  6,255,254},{  7,  1,252},{  4,  1,252},{  6,253,252},{133,  1,252},
+    {135,  1,254},{134,  1,254},{129,255,  1},{132,255,254},{  3,  1, 10},{  5,  1,252},{  2,  1,  5},{  1,  1,  2},
+    {  4,253,252},{  4,  1,252},{  6,253,252},{  7,  1,252},{  4,  1,252},{  6,253,252},{131,  1,252},{133,  1,252},
+    {130,  1,  5},{129,  1,  2},{132,253,252},{132,  1,252},{134,253,252},{135,  1,252},{132,  1,252},{134,253,252}};
+
+    static const unsigned char table_7_12d_struct1[][3] =
+    {{  0,  1,181},{  5,  1, 53},{  2,  1, 35},{  9,  1, 26},{  1,  1, 17},{  6,  1, 10},{  3,  1,  4},{  4,253,  1},
+    { 10,  1,252},{ 11,255,252},{  8,  1,252},{ 10,  1,252},{ 11,255,  1},{  4,  1,252},{  7,255,254},{ 11,  1,252},
+    {  3,  1,  3},{  4,253,  1},{ 10,253,252},{  8,  1,252},{ 10,253,252},{  6,  1,252},{  7,  1,252},{  8,  1,252},
+    {  4,  1,  3},{  3,255,  1},{ 10,255,252},{ 10,  1,252},{ 11,255,252},{  3,  1,252},{  4,  1,252},{  1,  1,  3},
+    {  6,253,  1},{ 11,253,252},{  6,  1,252},{  7,  1,252},{  8,253,252},{  9,  1,252},{  7,  1,252},{  8,  1,252},
+    {  1,  1,  8},{ 10,  1,  4},{ 11,253,  1},{  6,  1,252},{  4,255,252},{  6,  1,252},{  3,  1,252},{  4,255,252},
+    {  6,  1,252},{  4,  1,  3},{  3,253,  1},{ 10,253,252},{ 10,  1,252},{ 11,253,252},{133,  1,107},{  9,  1, 52},
+    {131,  1, 35},{132,  1, 26},{ 11,  1, 19},{  1,  1,  9},{  8,  1,  4},{ 10,  1,252},{  2,255,  1},{  7,255,254},
+    {134,  1,252},{130,  1,252},{135,  1,254},{136,255,254},{  6,  1,  4},{  7,  1,252},{  8,  1,252},{ 10,255,254},
+    {134,  1,252},{130,  1,252},{135,  1,252},{129,255,  1},{136,255,254},{130,  1,252},{135,  1,252},{129,  1,  2},
+    {134,255,252},{134,  1,252},{136,255,252},{ 11,  1,252},{  8,  1,252},{ 10,  1,252},{  1,  1,  3},{  2,255,  1},
+    {  7,255,252},{  6,  1,252},{  7,255,252},{ 11,  1,252},{ 10,  1,252},{  3,  1,  8},{  1,  1,  4},{  2,253,  1},
+    {  7,  1,252},{  8,255,252},{  6,  1,252},{  7,  1,252},{  8,255,252},{  8,  1,252},{  1,  1,  3},{  2,253,  1},
+    {  7,253,252},{  6,  1,252},{  7,253,252},{137,  1, 40},{  2,  1, 27},{  1,  1, 18},{  4,  1,  9},{ 10,  1,  3},
+    {  3,  1,252},{ 11,255,252},{134,  1,252},{135,  1,252},{136,  1,252},{139,  1,254},{138,255,254},{134,  1,252},
+    {135,  1,252},{136,  1,252},{138,  1,  3},{132,255,  1},{139,255,254},{131,  1,252},{132,255,254},{134,  1,252},
+    {135,  1,252},{136,  1,252},{132,  1,  3},{131,255,  1},{138,255,252},{138,  1,252},{139,255,252},{134,  1,252},
+    {135,  1,252},{136,  1,  6},{132,  1,  3},{131,253,  1},{138,253,252},{138,  1,252},{139,253,252},{130,  1,252},
+    {129,  1,252},{131,  1,252},{132,255,252},{  2,  1,  6},{  1,  1,252},{  3,  1,252},{  4,  1,252},{ 10,  1,252},
+    { 11,253,252},{130,  1,252},{131,  1,252},{132,  1,252},{135,  1,252},{129,  1,  2},{134,253,252},{134,  1,252},
+    {136,253,252},{  2,  1, 13},{ 10,  1,252},{ 11,  1,252},{  9,  1,  7},{  1,  1,  3},{  3,253,  1},{  8,253,252},
+    {  6,  1,252},{  7,  1,252},{  8,253,252},{  1,  1,252},{  3,  1,252},{  4,253,252},{  9,  1,252},{  7,  1,252},
+    {  8,  1,252},{ 10,  1,252},{ 11,  1,252},{  1,253,  1},{  6,253,252},{128,  1,165},{  2,  1, 44},{  5,  1, 21},
+    {  7,  1, 13},{  6,  1,252},{  4,  1,  7},{  3,  1,  3},{  1,253,  1},{  8,253,252},{  9,  1,252},{  8,  1,252},
+    { 10,255,252},{  9,  1,252},{  8,  1,252},{ 10,  1,252},{ 11,255,252},{137,  1,252},{136,  1,252},{138,  1,252},
+    {139,  1,252},{135,  1,252},{129,255,  1},{134,255,252},{137,  1,252},{135,  1,252},{136,  1,252},{133,  1, 15},
+    {129,  1,  8},{138,  1,  4},{139,255,  1},{134,  1,252},{132,255,254},{134,  1,252},{131,  1,252},{132,255,254},
+    {134,  1,252},{132,  1,  3},{131,255,  1},{138,255,252},{138,  1,252},{139,255,252},{138,  1,252},{139,  1,252},
+    {129,253,  1},{134,253,252},{130,  1, 88},{  9,  1, 40},{  5,  1, 27},{129,  1, 18},{132,  1,  9},{138,  1,  3},
+    {131,  1,252},{139,255,252},{  6,  1,252},{  7,  1,252},{  8,  1,252},{ 11,  1,254},{ 10,255,254},{  6,  1,252},
+    {  7,  1,252},{  8,  1,252},{ 10,  1,  3},{  4,255,  1},{ 11,255,254},{  3,  1,252},{  4,255,254},{  6,  1,252},
+    {  7,  1,252},{  8,  1,252},{  4,  1,  3},{  3,255,  1},{ 10,255,252},{ 10,  1,252},{ 11,255,252},{131,  1,252},
+    {132,  1,252},{133,  1,  7},{129,  1,  3},{134,253,  1},{139,253,252},{134,  1,252},{135,  1,252},{136,255,252},
+    {129,  1,252},{138,  1,252},{139,253,252},{137,  1, 35},{133,  1, 26},{129,  1, 17},{134,  1, 10},{131,  1,  4},
+    {132,253,  1},{138,  1,252},{139,255,252},{136,  1,252},{138,  1,252},{139,255,  1},{132,  1,252},{135,255,254},
+    {139,  1,252},{131,  1,  3},{132,253,  1},{138,253,252},{136,  1,252},{138,253,252},{134,  1,252},{135,  1,252},
+    {136,  1,252},{132,  1,  3},{131,255,  1},{138,255,252},{138,  1,252},{139,255,252},{138,  1,252},{139,  1,252},
+    {129,  1,  3},{131,253,  1},{136,253,252},{134,  1,252},{135,  1,252},{136,253,252},{131,  1,252},{132,  1,252},
+    {133,  1,  7},{129,  1,  3},{134,253,  1},{139,253,252},{134,  1,252},{135,  1,252},{136,253,252},{129,  1,252},
+    {138,  1,252},{139,253,252},{137,  1, 22},{135,  1,252},{136,  1,252},{133,  1, 15},{129,  1,  8},{138,  1,  4},
+    {139,253,  1},{134,  1,252},{132,255,252},{134,  1,252},{131,  1,252},{132,255,252},{134,  1,252},{132,  1,  3},
+    {131,253,  1},{138,253,252},{138,  1,252},{139,253,252},{138,  1,252},{139,  1,252},{129,253,  1},{134,253,252},
+    {  5,  1,252},{  9,  1,252},{  6,  1,252},{  7,  1,252},{  8,  1,252},{  4,  1,  3},{  3,253,  1},{ 10,253,252},
+    { 10,  1,252},{ 11,253,252},{  5,  1, 22},{  9,  1, 13},{  6,  1,252},{  7,  1,252},{  4,  1,  7},{  3,  1,  4},
+    {  8,253,  1},{  1,  1,252},{  2,253,252},{  8,  1,252},{ 10,253,252},{ 11,  1,252},{  8,  1,252},{ 10,253,252},
+    {  2,  1,252},{  3,  1,252},{  4,  1,252},{  7,  1,252},{  1,  1,  2},{  6,253,252},{  6,  1,252},{  8,253,252},
+    {133,  1,252},{137,  1, 13},{134,  1,252},{135,  1,252},{132,  1,  7},{131,  1,  4},{136,253,  1},{129,  1,252},
+    {130,253,252},{136,  1,252},{138,253,252},{139,  1,252},{136,  1,252},{138,253,252},{130,  1,252},{131,  1,252},
+    {132,  1,252},{135,  1,252},{129,  1,  2},{134,253,252},{134,  1,252},{136,253,252}};
+
+    static const unsigned char table_7_12d_struct2[][3] =
+    {{  0,  1,181},{  5,  1, 53},{  2,  1, 35},{  9,  1, 26},{  1,  1, 17},{  6,  1, 10},{  3,  1,  4},{  4,255,  1},
+    { 10,  1,254},{ 11,255,254},{  8,  1,254},{ 10,  1,254},{ 11,255,  1},{  4,  1,254},{  7,255,254},{ 11,  1,254},
+    {  3,  1,  3},{  4,255,  1},{ 10,255,254},{  8,  1,254},{ 10,255,254},{  6,  1,254},{  7,  1,254},{  8,  1,254},
+    {  4,  1,  3},{  3,255,  1},{ 10,255,254},{ 10,  1,254},{ 11,255,254},{  3,  1,254},{  4,  1,254},{  1,  1,  3},
+    {  6,255,  1},{ 11,255,254},{  6,  1,254},{  7,  1,254},{  8,255,254},{  9,  1,254},{  7,  1,254},{  8,  1,254},
+    {  1,  1,  8},{ 10,  1,  4},{ 11,255,  1},{  6,  1,254},{  4,255,254},{  6,  1,254},{  3,  1,254},{  4,255,254},
+    {  6,  1,254},{  4,  1,  3},{  3,255,  1},{ 10,255,254},{ 10,  1,254},{ 11,255,254},{133,  1,107},{  9,  1, 52},
+    {131,  1, 35},{132,  1, 26},{ 11,  1, 19},{  1,  1,  9},{  8,  1,  4},{ 10,  1,254},{  2,255,  1},{  7,255,254},
+    {134,  1,254},{130,  1,254},{135,  1,254},{136,255,254},{  6,  1,  4},{  7,  1,254},{  8,  1,254},{ 10,255,254},
+    {134,  1,254},{130,  1,254},{135,  1,254},{129,255,  1},{136,255,254},{130,  1,254},{135,  1,254},{129,  1,  2},
+    {134,255,254},{134,  1,254},{136,255,254},{ 11,  1,254},{  8,  1,254},{ 10,  1,254},{  1,  1,  3},{  2,255,  1},
+    {  7,255,254},{  6,  1,254},{  7,255,254},{ 11,  1,254},{ 10,  1,254},{  3,  1,  8},{  1,  1,  4},{  2,255,  1},
+    {  7,  1,254},{  8,255,254},{  6,  1,254},{  7,  1,254},{  8,255,254},{  8,  1,254},{  1,  1,  3},{  2,255,  1},
+    {  7,255,254},{  6,  1,254},{  7,255,254},{137,  1, 40},{  2,  1, 27},{  1,  1, 18},{  4,  1,  9},{ 10,  1,  3},
+    {  3,  1,254},{ 11,255,254},{134,  1,254},{135,  1,254},{136,  1,254},{139,  1,254},{138,255,254},{134,  1,254},
+    {135,  1,254},{136,  1,254},{138,  1,  3},{132,255,  1},{139,255,254},{131,  1,254},{132,255,254},{134,  1,254},
+    {135,  1,254},{136,  1,254},{132,  1,  3},{131,255,  1},{138,255,254},{138,  1,254},{139,255,254},{134,  1,254},
+    {135,  1,254},{136,  1,  6},{132,  1,  3},{131,255,  1},{138,255,254},{138,  1,254},{139,255,254},{130,  1,254},
+    {129,  1,254},{131,  1,254},{132,255,254},{  2,  1,  6},{  1,  1,254},{  3,  1,254},{  4,  1,254},{ 10,  1,254},
+    { 11,255,254},{130,  1,252},{131,  1,254},{132,  1,254},{135,  1,254},{129,  1,  2},{134,255,254},{134,  1,254},
+    {136,255,254},{  2,  1, 13},{ 10,  1,254},{ 11,  1,254},{  9,  1,  7},{  1,  1,  3},{  3,255,  1},{  8,255,254},
+    {  6,  1,254},{  7,  1,254},{  8,255,254},{  1,  1,254},{  3,  1,254},{  4,255,254},{  9,  1,254},{  7,  1,254},
+    {  8,  1,254},{ 10,  1,254},{ 11,  1,254},{  1,255,  1},{  6,255,254},{128,  1,165},{  2,  1, 44},{  5,  1, 21},
+    {  7,  1, 13},{  6,  1,254},{  4,  1,  7},{  3,  1,  3},{  1,255,  1},{  8,255,254},{  9,  1,254},{  8,  1,254},
+    { 10,255,254},{  9,  1,254},{  8,  1,254},{ 10,  1,254},{ 11,255,254},{137,  1,254},{136,  1,254},{138,  1,254},
+    {139,  1,254},{135,  1,254},{129,255,  1},{134,255,254},{137,  1,254},{135,  1,254},{136,  1,254},{133,  1, 15},
+    {129,  1,  8},{138,  1,  4},{139,255,  1},{134,  1,254},{132,255,254},{134,  1,254},{131,  1,254},{132,255,254},
+    {134,  1,254},{132,  1,  3},{131,255,  1},{138,255,254},{138,  1,254},{139,255,254},{138,  1,254},{139,  1,254},
+    {129,255,  1},{134,255,254},{130,  1, 88},{  9,  1, 40},{  5,  1, 27},{129,  1, 18},{132,  1,  9},{138,  1,  3},
+    {131,  1,254},{139,255,254},{  6,  1,254},{  7,  1,254},{  8,  1,254},{ 11,  1,254},{ 10,255,254},{  6,  1,254},
+    {  7,  1,254},{  8,  1,254},{ 10,  1,  3},{  4,255,  1},{ 11,255,254},{  3,  1,254},{  4,255,254},{  6,  1,254},
+    {  7,  1,254},{  8,  1,254},{  4,  1,  3},{  3,255,  1},{ 10,255,254},{ 10,  1,254},{ 11,255,254},{131,  1,254},
+    {132,  1,254},{133,  1,  7},{129,  1,  3},{134,255,  1},{139,255,254},{134,  1,254},{135,  1,254},{136,255,254},
+    {129,  1,254},{138,  1,254},{139,255,254},{137,  1, 35},{133,  1, 26},{129,  1, 17},{134,  1, 10},{131,  1,  4},
+    {132,255,  1},{138,  1,254},{139,255,254},{136,  1,254},{138,  1,254},{139,255,  1},{132,  1,254},{135,255,254},
+    {139,  1,254},{131,  1,  3},{132,255,  1},{138,255,254},{136,  1,254},{138,255,254},{134,  1,254},{135,  1,254},
+    {136,  1,254},{132,  1,  3},{131,255,  1},{138,255,254},{138,  1,254},{139,255,254},{138,  1,254},{139,  1,254},
+    {129,  1,  3},{131,255,  1},{136,255,254},{134,  1,254},{135,  1,254},{136,255,254},{131,  1,254},{132,  1,254},
+    {133,  1,  7},{129,  1,  3},{134,255,  1},{139,255,254},{134,  1,254},{135,  1,254},{136,255,254},{129,  1,254},
+    {138,  1,254},{139,255,254},{137,  1, 22},{135,  1,254},{136,  1,254},{133,  1, 15},{129,  1,  8},{138,  1,  4},
+    {139,255,  1},{134,  1,254},{132,255,254},{134,  1,254},{131,  1,254},{132,255,254},{134,  1,254},{132,  1,  3},
+    {131,255,  1},{138,255,254},{138,  1,254},{139,255,254},{138,  1,254},{139,  1,254},{129,255,  1},{134,255,254},
+    {  5,  1,254},{  9,  1,252},{  6,  1,254},{  7,  1,254},{  8,  1,254},{  4,  1,  3},{  3,255,  1},{ 10,255,254},
+    { 10,  1,254},{ 11,255,254},{  5,  1, 22},{  9,  1, 13},{  6,  1,254},{  7,  1,254},{  4,  1,  7},{  3,  1,  4},
+    {  8,255,  1},{  1,  1,254},{  2,255,254},{  8,  1,254},{ 10,255,254},{ 11,  1,254},{  8,  1,254},{ 10,255,254},
+    {  2,  1,254},{  3,  1,254},{  4,  1,254},{  7,  1,254},{  1,  1,  2},{  6,255,254},{  6,  1,254},{  8,255,254},
+    {133,  1,252},{137,  1, 13},{134,  1,254},{135,  1,254},{132,  1,  7},{131,  1,  4},{136,255,  1},{129,  1,254},
+    {130,255,254},{136,  1,254},{138,255,254},{139,  1,254},{136,  1,254},{138,255,254},{130,  1,254},{131,  1,254},
+    {132,  1,254},{135,  1,254},{129,  1,  2},{134,255,254},{134,  1,254},{136,255,254}};
+
+    static const unsigned char table_7_12s_struct1[][3] =
+    {{  0,  1,145},{  2,  1, 99},{  5,  1, 47},{  9,  1, 35},{  7,  1, 24},{  1,  1, 16},{  6,  1,  9},{  3,  1,  4},
+    {  4,255,  1},{ 10,  1,252},{ 11,255,254},{  8,  1,252},{ 10,  1,252},{  4,255,  1},{ 11,255,254},{ 11,  1,252},
+    {  3,  1,  3},{  4,255,  1},{ 10,255,252},{  8,  1,252},{ 10,255,252},{  6,  1,252},{  8,  1,252},{  4,  1,  3},
+    {  3,255,  1},{ 10,255,252},{ 10,  1,252},{ 11,255,252},{  1,  1,252},{ 11,  1,  6},{  3,  1,  3},{  4,253,  1},
+    { 10,253,252},{  8,  1,252},{ 10,253,252},{  6,  1,252},{  3,  1,252},{  4,253,252},{  3,  1,252},{  4,  1,252},
+    {  7,  1,  6},{  1,  1,  3},{  6,253,  1},{ 11,253,252},{  6,  1,252},{  8,253,252},{  1,  1,252},{  6,253,  1},
+    { 11,253,252},{137,  1, 36},{135,  1, 30},{133,  1, 24},{  1,  1, 16},{  4,  1,  8},{ 10,  1,  3},{  3,  1,252},
+    { 11,255,254},{134,  1,252},{136,  1,252},{139,  1,254},{138,255,254},{134,  1,252},{136,  1,252},{138,  1,  3},
+    {132,255,  1},{139,255,254},{131,  1,252},{132,255,254},{134,  1,252},{136,  1,252},{132,  1,  3},{131,255,  1},
+    {138,255,252},{138,  1,252},{139,255,252},{  1,  1,252},{  3,  1,252},{  4,  1,252},{ 10,  1,252},{ 11,255,252},
+    {  1,  1,252},{  3,  1,252},{  4,  1,252},{ 10,  1,252},{ 11,253,252},{ 10,  1,252},{ 11,  1,252},{  9,  1, 10},
+    {  7,  1,  6},{  1,  1,  3},{  3,253,  1},{  8,253,252},{  6,  1,252},{  8,253,252},{  1,  1,252},{  3,253,  1},
+    {  8,253,252},{  1,  1,252},{  3,  1,252},{  4,253,252},{  7,  1, 22},{  9,  1,252},{  8,  1,252},{  5,  1, 15},
+    {  1,  1,  8},{ 10,  1,  4},{ 11,253,  1},{  6,  1,252},{  4,255,252},{  6,  1,252},{  3,  1,252},{  4,255,252},
+    {  6,  1,252},{  4,  1,  3},{  3,253,  1},{ 10,253,252},{ 10,  1,252},{ 11,253,252},{ 10,  1,252},{ 11,  1,252},
+    {  1,253,  1},{  6,253,252},{135,  1,252},{133,  1,252},{130,  1, 13},{134,  1,252},{132,  1,  7},{131,  1,  3},
+    {129,253,  1},{136,253,252},{137,  1,252},{136,  1,252},{138,255,252},{137,  1,252},{136,  1,252},{138,  1,252},
+    {139,255,252},{137,  1,252},{134,  1,252},{136,  1,252},{132,  1,  3},{131,253,  1},{138,253,252},{138,  1,252},
+    {139,253,252},{128,  1,155},{130,  1,109},{137,  1, 47},{133,  1, 35},{135,  1, 24},{129,  1, 16},{134,  1,  9},
+    {131,  1,  4},{132,255,  1},{138,  1,252},{139,255,254},{136,  1,252},{138,  1,252},{132,255,  1},{139,255,254},
+    {139,  1,252},{131,  1,  3},{132,255,  1},{138,255,252},{136,  1,252},{138,255,252},{134,  1,252},{136,  1,252},
+    {132,  1,  3},{131,255,  1},{138,255,252},{138,  1,252},{139,255,252},{129,  1,252},{139,  1,  6},{131,  1,  3},
+    {132,253,  1},{138,253,252},{136,  1,252},{138,253,252},{134,  1,252},{131,  1,252},{132,253,252},{138,  1,252},
+    {139,  1,252},{135,  1,  6},{129,  1,  3},{131,253,  1},{136,253,252},{134,  1,252},{136,253,252},{129,  1,252},
+    {131,253,  1},{136,253,252},{  9,  1, 46},{  5,  1, 30},{  7,  1, 24},{129,  1, 16},{132,  1,  8},{138,  1,  3},
+    {131,  1,252},{139,255,254},{  6,  1,252},{  8,  1,252},{ 11,  1,254},{ 10,255,254},{  6,  1,252},{  8,  1,252},
+    { 10,  1,  3},{  4,255,  1},{ 11,255,254},{  3,  1,252},{  4,255,254},{  6,  1,252},{  8,  1,252},{  4,  1,  3},
+    {  3,255,  1},{ 10,255,252},{ 10,  1,252},{ 11,255,252},{129,  1,252},{131,  1,252},{132,  1,252},{138,  1,252},
+    {139,255,252},{131,  1,252},{132,  1,252},{133,  1, 10},{135,  1,  6},{129,  1,  3},{134,255,  1},{139,255,252},
+    {134,  1,252},{136,255,252},{129,  1,252},{134,253,  1},{139,253,252},{129,  1,252},{138,  1,252},{139,253,252},
+    {131,  1,252},{132,  1,252},{133,  1, 10},{135,  1,  6},{129,  1,  3},{134,253,  1},{139,253,252},{134,  1,252},
+    {136,253,252},{129,  1,252},{134,253,  1},{139,253,252},{129,  1,252},{138,  1,252},{139,253,252},{  7,  1, 23},
+    {  5,  1,252},{  2,  1, 13},{  6,  1,252},{  4,  1,  7},{  3,  1,  3},{  1,253,  1},{  8,253,252},{  9,  1,252},
+    {  8,  1,252},{ 10,255,252},{  9,  1,252},{  8,  1,252},{ 10,  1,252},{ 11,255,252},{  9,  1,252},{  6,  1,252},
+    {  8,  1,252},{  4,  1,  3},{  3,253,  1},{ 10,253,252},{ 10,  1,252},{ 11,253,252},{135,  1,252},{137,  1,252},
+    {136,  1,252},{133,  1, 15},{129,  1,  8},{138,  1,  4},{139,253,  1},{134,  1,252},{132,255,252},{134,  1,252},
+    {131,  1,252},{132,255,252},{134,  1,252},{132,  1,  3},{131,253,  1},{138,253,252},{138,  1,252},{139,253,252},
+    {138,  1,252},{139,  1,252},{129,253,  1},{134,253,252},{  5,  1, 21},{  7,  1,252},{  9,  1, 12},{  6,  1,252},
+    {  4,  1,  7},{  3,  1,  4},{  8,253,  1},{  1,  1,252},{  2,253,252},{  8,  1,252},{ 10,253,252},{ 11,  1,252},
+    {  8,  1,252},{ 10,253,252},{  2,  1,252},{  3,  1,252},{  4,  1,252},{  1,  1,  2},{  6,253,252},{  6,  1,252},
+    {  8,253,252},{133,  1,252},{135,  1,252},{137,  1, 12},{134,  1,252},{132,  1,  7},{131,  1,  4},{136,253,  1},
+    {129,  1,252},{130,253,252},{136,  1,252},{138,253,252},{139,  1,252},{136,  1,252},{138,253,252},{130,  1,252},
+    {131,  1,252},{132,  1,252},{129,  1,  2},{134,253,252},{134,  1,252},{136,253,252}};
+
+    static const unsigned char table_7_12s_struct2[][3] =
+    {{  0,  1,146},{  2,  1,100},{  5,  1, 47},{  9,  1, 35},{  7,  1, 24},{  1,  1, 16},{  6,  1,  9},{  3,  1,  4},
+    {  4,255,  1},{ 10,  1,254},{ 11,255,254},{  8,  1,254},{ 10,  1,254},{  4,255,  1},{ 11,255,254},{ 11,  1,254},
+    {  3,  1,  3},{  4,255,  1},{ 10,255,254},{  8,  1,254},{ 10,255,254},{  6,  1,254},{  8,  1,254},{  4,  1,  3},
+    {  3,255,  1},{ 10,255,254},{ 10,  1,254},{ 11,255,254},{  1,  1,254},{ 11,  1,  6},{  3,  1,  3},{  4,255,  1},
+    { 10,255,254},{  8,  1,254},{ 10,255,254},{  6,  1,254},{  3,  1,254},{  4,255,254},{  3,  1,254},{  4,  1,254},
+    {  7,  1,  6},{  1,  1,  3},{  6,255,  1},{ 11,255,254},{  6,  1,254},{  8,255,254},{  1,  1,254},{  6,255,  1},
+    { 11,255,254},{135,  1, 40},{137,  1, 30},{133,  1, 24},{  1,  1, 16},{  4,  1,  8},{ 10,  1,  3},{  3,  1,254},
+    { 11,255,254},{134,  1,254},{136,  1,254},{139,  1,254},{138,255,254},{134,  1,254},{136,  1,254},{138,  1,  3},
+    {132,255,  1},{139,255,254},{131,  1,254},{132,255,254},{134,  1,254},{136,  1,254},{132,  1,  3},{131,255,  1},
+    {138,255,254},{138,  1,254},{139,255,254},{  1,  1,254},{  3,  1,254},{  4,  1,254},{ 10,  1,254},{ 11,255,254},
+    { 10,  1,254},{ 11,  1,254},{  9,  1,  4},{  1,  1,254},{  3,255,  1},{  8,255,254},{  1,  1,254},{  3,  1,254},
+    {  4,255,254},{ 10,  1,254},{ 11,  1,254},{  9,  1,  7},{  1,  1,  3},{  3,255,  1},{  8,255,254},{  6,  1,254},
+    {  8,  1,254},{  7,255,254},{  1,  1,254},{  3,  1,254},{  4,255,254},{  7,  1, 22},{  9,  1,254},{  8,  1,254},
+    {  5,  1, 15},{  1,  1,  8},{ 10,  1,  4},{ 11,255,  1},{  6,  1,254},{  4,255,254},{  6,  1,254},{  3,  1,254},
+    {  4,255,254},{  6,  1,254},{  4,  1,  3},{  3,255,  1},{ 10,255,254},{ 10,  1,254},{ 11,255,254},{ 10,  1,254},
+    { 11,  1,254},{  1,255,  1},{  6,255,254},{135,  1,254},{133,  1,254},{130,  1, 13},{134,  1,254},{132,  1,  7},
+    {131,  1,  3},{129,255,  1},{136,255,254},{137,  1,254},{136,  1,254},{138,255,254},{137,  1,254},{136,  1,254},
+    {138,  1,254},{139,255,254},{137,  1,254},{134,  1,254},{136,  1,254},{132,  1,  3},{131,255,  1},{138,255,254},
+    {138,  1,254},{139,255,254},{128,  1,129},{130,  1, 83},{139,  1, 52},{131,  1, 36},{133,  1, 19},{137,  1, 12},
+    {135,  1,  8},{129,  1,  3},{132,255,  1},{138,255,254},{134,  1,254},{136,  1,254},{132,255,  1},{138,255,254},
+    {129,  1,254},{132,255,  1},{138,255,254},{132,  1,254},{135,  1,  4},{129,255,  1},{134,  1,254},{136,255,254},
+    {129,255,254},{138,  1,  9},{137,  1,  6},{135,  1,  4},{129,255,  1},{134,  1,254},{136,255,254},{129,255,254},
+    {129,  1,254},{132,255,254},{  7,  1,254},{  9,  1,254},{  5,  1,254},{  4,  1,254},{  6,  1,254},{  8,  1,254},
+    { 10,255,254},{137,  1,  7},{136,  1,254},{138,  1,254},{135,  1,  3},{129,255,  1},{134,255,254},{129,255,254},
+    {  5,  1,254},{  7,  1,254},{  9,  1,254},{  4,  1,254},{  6,  1,254},{  8,  1,254},{  3,255,  1},{ 10,255,254},
+    {132,  1, 20},{133,  1, 12},{135,  1,  8},{134,  1,254},{131,  1,  3},{129,255,  1},{136,255,254},{137,  1,254},
+    {136,  1,254},{138,255,254},{129,  1,254},{134,  1,254},{131,255,254},{  7,  1,254},{  9,  1,254},{  5,  1,254},
+    {  6,  1,254},{  8,  1,254},{ 10,  1,254},{ 11,255,254},{  5,  1,254},{  7,  1,254},{  9,  1,254},{  6,  1,254},
+    {  8,  1,254},{ 10,  1,  3},{  4,255,  1},{ 11,255,252},{  3,  1,254},{  4,255,254},{  7,  1, 23},{  5,  1,254},
+    {  2,  1, 13},{  6,  1,254},{  4,  1,  7},{  3,  1,  3},{  1,255,  1},{  8,255,254},{  9,  1,254},{  8,  1,254},
+    { 10,255,254},{  9,  1,254},{  8,  1,254},{ 10,  1,254},{ 11,255,254},{  9,  1,254},{  6,  1,254},{  8,  1,254},
+    {  4,  1,  3},{  3,255,  1},{ 10,255,254},{ 10,  1,254},{ 11,255,254},{135,  1,254},{137,  1,254},{136,  1,254},
+    {133,  1, 15},{129,  1,  8},{138,  1,  4},{139,255,  1},{134,  1,254},{132,255,254},{134,  1,254},{131,  1,254},
+    {132,255,254},{134,  1,254},{132,  1,  3},{131,255,  1},{138,255,254},{138,  1,254},{139,255,254},{138,  1,254},
+    {139,  1,254},{129,255,  1},{134,255,254},{  5,  1, 21},{  7,  1,254},{  9,  1, 12},{  6,  1,254},{  4,  1,  7},
+    {  3,  1,  4},{  8,255,  1},{  1,  1,254},{  2,255,254},{  8,  1,254},{ 10,255,254},{ 11,  1,254},{  8,  1,254},
+    { 10,255,254},{  2,  1,254},{  3,  1,254},{  4,  1,254},{  1,  1,  2},{  6,255,254},{  6,  1,254},{  8,255,254},
+    {133,  1,252},{135,  1,254},{137,  1, 12},{134,  1,254},{132,  1,  7},{131,  1,  4},{136,255,  1},{129,  1,254},
+    {130,255,254},{136,  1,254},{138,255,254},{139,  1,254},{136,  1,254},{138,255,254},{130,  1,254},{131,  1,254},
+    {132,  1,254},{129,  1,  2},{134,255,254},{134,  1,254},{136,255,254}};
+
+    static const unsigned char table_9_16_struct[][3] =
+    {{  0,  1,211},{  2,  1,211},{  4,  1,136},{  5,  1, 78},{  7,  1, 35},{  3,  1, 17},{  1,  1,  7},{  6,  1,  3},
+    {  8,253,  1},{ 15,253,252},{ 13,  1,252},{ 14,  1,252},{ 15,253,252},{  8,  1,252},{  9,  1,252},{ 10,  1,252},
+    {  6,253,  1},{ 11,  1,252},{ 12,  1,252},{ 13,  1,252},{ 14,  1,252},{ 15,253,252},{ 10,  1,252},{ 11,  1,252},
+    { 12,  1,252},{  8,  1, 10},{  9,  1,  5},{  6,253,  1},{ 13,  1,252},{ 14,  1,252},{ 15,253,252},{  1,  1,252},
+    { 13,  1,252},{ 14,  1,252},{ 15,253,252},{  1,  1,252},{ 13,  1,252},{ 14,  1,252},{ 15,253,252},{135,  1, 26},
+    { 14,  1, 16},{ 15,  1,252},{  1,  1,  8},{  3,  1,  3},{  6,253,  1},{ 13,253,252},{ 10,  1,252},{ 11,  1,252},
+    { 12,  1,252},{ 13,253,252},{  8,  1,252},{  9,  1,252},{ 10,  1,252},{ 11,  1,252},{ 12,  1,252},{ 13,253,252},
+    {142,  1,252},{136,  1,252},{137,  1,252},{138,  1,252},{139,  1,252},{140,  1,252},{141,  1,252},{134,253,  1},
+    {143,253,252},{ 14,  1,252},{ 15,  1,252},{  1,  1,  8},{  3,  1,  3},{  6,253,  1},{ 13,253,252},{ 10,  1,252},
+    { 11,  1,252},{ 12,  1,252},{ 13,253,252},{  8,  1,252},{  9,  1,252},{ 10,  1,252},{ 11,  1,252},{ 12,  1,252},
+    { 13,253,252},{133,  1, 29},{ 12,  1, 18},{ 13,  1,252},{ 14,  1,252},{ 15,  1,  9},{  1,  1,  4},{  3,253,  1},
+    { 10,  1,252},{ 11,253,252},{  8,  1,252},{  9,  1,252},{ 10,  1,252},{ 11,253,252},{  6,  1,252},{  7,  1,252},
+    {  8,  1,252},{  9,  1,252},{ 10,  1,252},{ 11,253,252},{140,  1,252},{135,  1,252},{136,  1,252},{137,  1,252},
+    {138,  1,252},{139,  1,252},{141,  1,252},{134,253,  1},{142,  1,252},{143,253,252},{ 12,  1, 18},{ 13,  1,252},
+    { 14,  1,252},{ 15,  1,  9},{  1,  1,  4},{  3,253,  1},{ 10,  1,252},{ 11,253,252},{  8,  1,252},{  9,  1,252},
+    { 10,  1,252},{ 11,253,252},{  6,  1,252},{  7,  1,252},{  8,  1,252},{  9,  1,252},{ 10,  1,252},{ 11,253,252},
+    {140,  1,252},{135,  1,252},{136,  1,252},{137,  1,252},{138,  1,252},{139,  1,252},{141,  1,252},{142,  1,252},
+    {134,253,  1},{143,253,252},{132,  1, 39},{ 11,  1, 22},{ 12,  1,252},{ 13,  1,252},{ 10,  1, 15},{ 14,  1,  9},
+    { 15,  1,  4},{  1,253,  1},{  8,  1,252},{  9,253,252},{  6,  1,252},{  7,  1,252},{  8,  1,252},{  9,253,252},
+    {  5,  1,252},{  6,  1,252},{  7,  1,252},{  8,  1,252},{  9,253,252},{  1,  1,252},{  3,  1,252},{ 14,  1,252},
+    { 15,253,252},{139,  1,252},{135,  1,252},{136,  1,252},{137,  1,252},{138,  1,252},{134,  1,  7},{133,  1,  3},
+    {131,253,  1},{140,253,252},{140,  1,252},{141,  1,252},{142,253,252},{140,  1,252},{141,  1,252},{142,  1,252},
+    {143,253,252},{ 11,  1, 22},{ 12,  1,252},{ 13,  1,252},{ 10,  1, 15},{ 14,  1,  9},{ 15,  1,  4},{  1,253,  1},
+    {  8,  1,252},{  9,253,252},{  6,  1,252},{  7,  1,252},{  8,  1,252},{  9,253,252},{  5,  1,252},{  6,  1,252},
+    {  7,  1,252},{  8,  1,252},{  9,253,252},{  1,  1,252},{  3,  1,252},{ 14,  1,252},{ 15,253,252},{139,  1,252},
+    {135,  1,252},{136,  1,252},{137,  1,252},{138,  1,252},{140,  1,252},{141,  1,252},{134,  1,  3},{133,253,  1},
+    {142,253,252},{142,  1,252},{143,253,252},{  0,  1,102},{130,  1, 55},{  9,  1, 27},{ 10,  1,252},{ 11,  1,252},
+    {  8,  1, 19},{ 12,  1, 13},{ 13,  1,  8},{ 14,  1,  4},{ 15,253,  1},{  6,  1,252},{  7,253,252},{  5,  1,252},
+    {  6,  1,252},{  7,253,252},{  4,  1,252},{  5,  1,252},{  6,  1,252},{  7,253,252},{  3,  1,252},{  4,  1,252},
+    {  5,  1,252},{  6,  1,252},{  7,253,252},{  1,  1,252},{ 12,  1,252},{ 13,  1,252},{ 14,  1,252},{ 15,253,252},
+    {137,  1,252},{135,  1,252},{136,  1,252},{134,  1, 18},{133,  1, 12},{132,  1,  7},{131,  1,  3},{129,253,  1},
+    {138,253,252},{138,  1,252},{139,  1,252},{140,253,252},{138,  1,252},{139,  1,252},{140,  1,252},{141,253,252},
+    {138,  1,252},{139,  1,252},{140,  1,252},{141,  1,252},{142,253,252},{138,  1,252},{139,  1,252},{140,  1,252},
+    {141,  1,252},{142,  1,252},{143,253,252},{  9,  1, 27},{ 10,  1,252},{ 11,  1,252},{  8,  1, 19},{ 12,  1, 13},
+    { 13,  1,  8},{ 14,  1,  4},{ 15,253,  1},{  6,  1,252},{  7,253,252},{  5,  1,252},{  6,  1,252},{  7,253,252},
+    {  4,  1,252},{  5,  1,252},{  6,  1,252},{  7,253,252},{  3,  1,252},{  4,  1,252},{  5,  1,252},{  6,  1,252},
+    {  7,253,252},{  1,  1,252},{ 12,  1,252},{ 13,  1,252},{ 14,  1,252},{ 15,253,252},{137,  1,252},{135,  1,252},
+    {136,  1,252},{138,  1,252},{139,  1,252},{134,  1, 10},{133,  1,  6},{132,  1,  3},{131,253,  1},{140,253,252},
+    {140,  1,252},{141,253,252},{140,  1,252},{141,  1,252},{142,253,252},{140,  1,252},{141,  1,252},{142,  1,252},
+    {143,253,252},{128,  1, 56},{  2,  1, 56},{  9,  1, 27},{  7,  1,252},{  8,  1,252},{  6,  1, 18},{  5,  1, 12},
+    {  4,  1,  7},{  3,  1,  3},{  1,253,  1},{ 10,253,252},{ 10,  1,252},{ 11,  1,252},{ 12,253,252},{ 10,  1,252},
+    { 11,  1,252},{ 12,  1,252},{ 13,253,252},{ 10,  1,252},{ 11,  1,252},{ 12,  1,252},{ 13,  1,252},{ 14,253,252},
+    { 10,  1,252},{ 11,  1,252},{ 12,  1,252},{ 13,  1,252},{ 14,  1,252},{ 15,253,252},{137,  1,252},{138,  1,252},
+    {139,  1,252},{136,  1, 19},{140,  1, 13},{141,  1,  8},{142,  1,  4},{143,253,  1},{134,  1,252},{135,253,252},
+    {133,  1,252},{134,  1,252},{135,253,252},{132,  1,252},{133,  1,252},{134,  1,252},{135,253,252},{131,  1,252},
+    {132,  1,252},{133,  1,252},{134,  1,252},{135,253,252},{129,  1,252},{140,  1,252},{141,  1,252},{142,  1,252},
+    {143,253,252},{128,  1,211},{130,  1,211},{  4,  1, 39},{ 11,  1, 16},{  7,  1,252},{  8,  1,252},{  9,  1,252},
+    { 10,  1,252},{  6,  1,  7},{  5,  1,  3},{  3,253,  1},{ 12,253,252},{ 12,  1,252},{ 13,  1,252},{ 14,253,252},
+    { 12,  1,252},{ 13,  1,252},{ 14,  1,252},{ 15,253,252},{139,  1,252},{140,  1,252},{141,  1,252},{138,  1, 15},
+    {142,  1,  9},{143,  1,  4},{129,253,  1},{136,  1,252},{137,253,252},{134,  1,252},{135,  1,252},{136,  1,252},
+    {137,253,252},{133,  1,252},{134,  1,252},{135,  1,252},{136,  1,252},{137,253,252},{129,  1,252},{131,  1,252},
+    {142,  1,252},{143,253,252},{132,  1,136},{  5,  1, 29},{ 12,  1, 10},{  7,  1,252},{  8,  1,252},{  9,  1,252},
+    { 10,  1,252},{ 11,  1,252},{ 13,  1,252},{  6,253,  1},{ 14,  1,252},{ 15,253,252},{140,  1,252},{141,  1,252},
+    {142,  1,252},{143,  1,  9},{129,  1,  4},{131,253,  1},{138,  1,252},{139,253,252},{136,  1,252},{137,  1,252},
+    {138,  1,252},{139,253,252},{134,  1,252},{135,  1,252},{136,  1,252},{137,  1,252},{138,  1,252},{139,253,252},
+    {133,  1, 78},{  7,  1, 26},{ 14,  1,  9},{  8,  1,252},{  9,  1,252},{ 10,  1,252},{ 11,  1,252},{ 12,  1,252},
+    { 13,  1,252},{  6,253,  1},{ 15,253,252},{142,  1,252},{143,  1,252},{129,  1,  8},{131,  1,  3},{134,253,  1},
+    {141,253,252},{138,  1,252},{139,  1,252},{140,  1,252},{141,253,252},{136,  1,252},{137,  1,252},{138,  1,252},
+    {139,  1,252},{140,  1,252},{141,253,252},{135,  1, 35},{131,  1, 17},{129,  1,  7},{134,  1,  3},{136,253,  1},
+    {143,253,252},{141,  1,252},{142,  1,252},{143,253,252},{136,  1,252},{137,  1,252},{138,  1,252},{134,253,  1},
+    {139,  1,252},{140,  1,252},{141,  1,252},{142,  1,252},{143,253,252},{138,  1,252},{139,  1,252},{140,  1,252},
+    {136,  1, 10},{137,  1,  5},{134,253,  1},{141,  1,252},{142,  1,252},{143,253,252},{129,  1,252},{141,  1,252},
+    {142,  1,252},{143,253,252},{129,  1,252},{141,  1,252},{142,  1,252},{143,253,252},{142,  1,252},{143,  1,252},
+    {129,  1,  8},{131,  1,  3},{134,253,  1},{141,253,252},{138,  1,252},{139,  1,252},{140,  1,252},{141,253,252},
+    {136,  1,252},{137,  1,252},{138,  1,252},{139,  1,252},{140,  1,252},{141,253,252},{ 12,  1, 10},{  7,  1,252},
+    {  8,  1,252},{  9,  1,252},{ 10,  1,252},{ 11,  1,252},{ 13,  1,252},{ 14,  1,252},{  6,253,  1},{ 15,253,252},
+    {140,  1,252},{141,  1,252},{142,  1,252},{143,  1,  9},{129,  1,  4},{131,253,  1},{138,  1,252},{139,253,252},
+    {136,  1,252},{137,  1,252},{138,  1,252},{139,253,252},{134,  1,252},{135,  1,252},{136,  1,252},{137,  1,252},
+    {138,  1,252},{139,253,252},{ 11,  1, 12},{  7,  1,252},{  8,  1,252},{  9,  1,252},{ 10,  1,252},{ 12,  1,252},
+    { 13,  1,252},{  6,  1,  3},{  5,253,  1},{ 14,253,252},{ 14,  1,252},{ 15,253,252},{139,  1,252},{140,  1,252},
+    {141,  1,252},{138,  1, 15},{142,  1,  9},{143,  1,  4},{129,253,  1},{136,  1,252},{137,253,252},{134,  1,252},
+    {135,  1,252},{136,  1,252},{137,253,252},{133,  1,252},{134,  1,252},{135,  1,252},{136,  1,252},{137,253,252},
+    {129,  1,252},{131,  1,252},{142,  1,252},{143,253,252},{128,  1, 47},{  9,  1, 19},{  7,  1,252},{  8,  1,252},
+    { 10,  1,252},{ 11,  1,252},{  6,  1, 10},{  5,  1,  6},{  4,  1,  3},{  3,253,  1},{ 12,253,252},{ 12,  1,252},
+    { 13,253,252},{ 12,  1,252},{ 13,  1,252},{ 14,253,252},{ 12,  1,252},{ 13,  1,252},{ 14,  1,252},{ 15,253,252},
+    {137,  1,252},{138,  1,252},{139,  1,252},{136,  1, 19},{140,  1, 13},{141,  1,  8},{142,  1,  4},{143,253,  1},
+    {134,  1,252},{135,253,252},{133,  1,252},{134,  1,252},{135,253,252},{132,  1,252},{133,  1,252},{134,  1,252},
+    {135,253,252},{131,  1,252},{132,  1,252},{133,  1,252},{134,  1,252},{135,253,252},{129,  1,252},{140,  1,252},
+    {141,  1,252},{142,  1,252},{143,253,252},{  7,  1, 30},{  8,  1,252},{  9,  1,252},{  6,  1, 21},{  5,  1, 15},
+    {  4,  1, 10},{  3,  1,  6},{  2,  1,  3},{  1,253,  1},{ 10,253,252},{ 10,  1,252},{ 11,253,252},{ 10,  1,252},
+    { 11,  1,252},{ 12,253,252},{ 10,  1,252},{ 11,  1,252},{ 12,  1,252},{ 13,253,252},{ 10,  1,252},{ 11,  1,252},
+    { 12,  1,252},{ 13,  1,252},{ 14,253,252},{ 10,  1,252},{ 11,  1,252},{ 12,  1,252},{ 13,  1,252},{ 14,  1,252},
+    { 15,253,252},{135,  1,252},{136,  1,252},{137,  1,252},{134,  1, 21},{133,  1, 15},{132,  1, 10},{131,  1,  6},
+    {130,  1,  3},{129,253,  1},{138,253,252},{138,  1,252},{139,253,252},{138,  1,252},{139,  1,252},{140,253,252},
+    {138,  1,252},{139,  1,252},{140,  1,252},{141,253,252},{138,  1,252},{139,  1,252},{140,  1,252},{141,  1,252},
+    {142,253,252},{138,  1,252},{139,  1,252},{140,  1,252},{141,  1,252},{142,  1,252},{143,253,252}};
+    switch(agasttype) {
+      case AgastFeatureDetector::AGAST_5_8:
+        agastbase=0;
+        table_struct1=(unsigned char *)(table_5_8_struct1);
+        table_struct2=(unsigned char *)(table_5_8_struct2);
+        break;
+      case AgastFeatureDetector::AGAST_7_12d:
+        agastbase=2;
+        table_struct1=(unsigned char *)(table_7_12d_struct1);
+        table_struct2=(unsigned char *)(table_7_12d_struct2);
+        break;
+      case AgastFeatureDetector::AGAST_7_12s:
+        agastbase=1;
+        table_struct1=(unsigned char *)(table_7_12s_struct1);
+        table_struct2=(unsigned char *)(table_7_12s_struct2);
+        break;
+      case AgastFeatureDetector::OAST_9_16:
+      default:
+        agastbase=2;
+        table_struct1=(unsigned char *)(table_9_16_struct);
+        table_struct2=(unsigned char *)(table_9_16_struct);
+        break;
+    }
+
+#else //AGAST_TREE
+    int result;
+    unsigned long *table_struct1;
+    unsigned long *table_struct2;
+    static const unsigned long table_5_8_struct1[] =
+    {
+        0x00010026,0x20020017,0x3003000c,0x50040009,0x10050007,0x406f0006,0x706f006c,0x4008006c,
+        0x606f006c,0x100a006c,0x406d000b,0x706d006c,0x700d0012,0x600e006c,0x500f0011,0x106f0010,
+        0x406f006c,0x106d006c,0x5013106c,0x3014106c,0x7015106c,0x4016106c,0x606f106e,0x5018001c,
+        0x7019006c,0x601a006c,0x106d001b,0x406d006c,0x501d106c,0x301e106c,0x201f1023,0x10201021,
+        0x406f106c,0x4022106c,0x606f106c,0x7024106c,0x4025106c,0x606f106c,0x00271058,0x20281049,
+        0x70290035,0x302a1031,0x502b102f,0x102c102d,0x406f106e,0x402e106c,0x606f106e,0x1030106c,
+        0x406f106c,0x5032006c,0x3033006c,0x4034006c,0x606f006e,0x70361041,0x3037103c,0x5038103b,
+        0x106f1039,0x403a106c,0x606f106e,0x106d106c,0x603d106c,0x503e1040,0x106f103f,0x406f106c,
+        0x106d106c,0x3042106c,0x50431047,0x10441045,0x406f106c,0x4046106c,0x606f106c,0x1048106c,
+        0x406d106c,0x504a0053,0x304b006c,0x204c0050,0x104d004e,0x406f006c,0x404f006c,0x606f006c,
+        0x7051006c,0x4052006c,0x606f006c,0x5054106c,0x7055106c,0x6056106c,0x106d1057,0x406d106c,
+        0x30590062,0x505a006c,0x205b005f,0x105c005d,0x406d006c,0x405e006c,0x606d006c,0x7060006c,
+        0x4061006c,0x606d006c,0x3063106c,0x5064106c,0x20651069,0x10661067,0x406d106c,0x4068106c,
+        0x606d106c,0x706a106c,0x406b106c,0x606d106c,0x000000fc,0x000000fd,0x000000fe,0x000000ff
+    };
+
+    static const unsigned long table_5_8_struct2[] =
+    {
+        0x0001002a,0x2002001b,0x30030010,0x5004000c,0x70050008,0x10730006,0x40070072,0x60730072,
+        0x1009000a,0x40730072,0x400b0072,0x60730072,0x700d000e,0x10730072,0x100f0072,0x40730072,
+        0x70110016,0x60120072,0x50130015,0x10730014,0x40730072,0x10730072,0x50171072,0x30181070,
+        0x70191070,0x401a1072,0x60731072,0x501c0020,0x701d0072,0x601e0072,0x1073001f,0x40730072,
+        0x50211070,0x30221072,0x20231027,0x10241025,0x40731072,0x40261072,0x60731072,0x70281070,
+        0x40291070,0x60711070,0x002b105c,0x202c104d,0x702d0039,0x302e1035,0x502f1033,0x10301031,
+        0x40731072,0x40321072,0x60731072,0x10341072,0x40731072,0x50360072,0x30370070,0x40380072,
+        0x60730072,0x703a1045,0x303b1040,0x503c103f,0x1073103d,0x403e1072,0x60731072,0x10731072,
+        0x60411072,0x50421044,0x10731043,0x40731072,0x10731072,0x30461070,0x5047104b,0x10481049,
+        0x40711070,0x404a1070,0x60711070,0x104c1070,0x40711070,0x504e0057,0x304f0072,0x20500054,
+        0x10510052,0x40730072,0x40530072,0x60730072,0x70550070,0x40560070,0x60710070,0x50581070,
+        0x70591072,0x605a1072,0x1073105b,0x40731072,0x305d0066,0x505e0070,0x205f0063,0x10600061,
+        0x40710070,0x40620070,0x60710070,0x70640070,0x40650070,0x60710070,0x30671070,0x50681070,
+        0x2069106d,0x106a106b,0x40711070,0x406c1070,0x60711070,0x706e1070,0x406f1070,0x60711070,
+        0x000000fc,0x000000fd,0x000000fe,0x000000ff
+    };
+
+    static const unsigned long table_7_12d_struct1[] =
+    {
+        0x000100b5,0x50020036,0x20030025,0x9004001d,0x10050015,0x6006000f,0x3007000a,0x41870008,
+        0xa0090186,0xb1890186,0x800b0186,0xa00c0186,0xb189000d,0x400e0186,0x71890188,0xb0100186,
+        0x30110013,0x41870012,0xa1870186,0x80140186,0xa1870186,0x60160186,0x70170186,0x80180186,
+        0x4019001b,0x3189001a,0xa1890186,0xa01c0186,0xb1890186,0x301e0186,0x401f0186,0x10200022,
+        0x61870021,0xb1870186,0x60230186,0x70240186,0x81870186,0x90260186,0x70270186,0x80280186,
+        0x10290030,0xa02a002d,0xb187002b,0x602c0186,0x41890186,0x602e0186,0x302f0186,0x41890186,
+        0x60310186,0x40320034,0x31870033,0xa1870186,0xa0350186,0xb1870186,0x503710a1,0x9038006b,
+        0x3039105b,0x403a1053,0xb03b004d,0x103c0044,0x803d0040,0xa03e0186,0x2189003f,0x71890188,
+        0x60411186,0x20421186,0x70431188,0x81891188,0x60450048,0x70460186,0x80470186,0xa1890188,
+        0x60491186,0x204a1186,0x704b1186,0x1189104c,0x81891188,0x204e1186,0x704f1186,0x10501051,
+        0x61891186,0x60521186,0x81891186,0xb0540186,0x80550186,0xa0560186,0x10570059,0x21890058,
+        0x71890186,0x605a0186,0x71890186,0xb05c0186,0xa05d0186,0x305e0065,0x105f0062,0x21870060,
+        0x70610186,0x81890186,0x60630186,0x70640186,0x81890186,0x80660186,0x10670069,0x21870068,
+        0x71870186,0x606a0186,0x71870186,0x906c1093,0x206d0087,0x106e007f,0x406f0077,0xa0700072,
+        0x30710186,0xb1890186,0x60731186,0x70741186,0x80751186,0xb0761188,0xa1891188,0x60781186,
+        0x70791186,0x807a1186,0xa07b107d,0x4189107c,0xb1891188,0x307e1186,0x41891188,0x60801186,
+        0x70811186,0x80821186,0x40831085,0x31891084,0xa1891186,0xa0861186,0xb1891186,0x60881186,
+        0x70891186,0x808a108f,0x408b108d,0x3187108c,0xa1871186,0xa08e1186,0xb1871186,0x20901186,
+        0x10911186,0x30921186,0x41891186,0x20940099,0x10950186,0x30960186,0x40970186,0xa0980186,
+        0xb1870186,0x209a1186,0x309b1186,0x409c1186,0x709d1186,0x109e109f,0x61871186,0x60a01186,
+        0x81871186,0x20a200ae,0xa0a30186,0xb0a40186,0x90a500ab,0x10a600a8,0x318700a7,0x81870186,
+        0x60a90186,0x70aa0186,0x81870186,0x10ac0186,0x30ad0186,0x41870186,0x90af0186,0x70b00186,
+        0x80b10186,0xa0b20186,0xb0b30186,0x118700b4,0x61870186,0x00b6115a,0x20b700e2,0x50b800cc,
+        0x70b900c5,0x60ba0186,0x40bb00c1,0x30bc00be,0x118700bd,0x81870186,0x90bf0186,0x80c00186,
+        0xa1890186,0x90c20186,0x80c30186,0xa0c40186,0xb1890186,0x90c61186,0x80c71186,0xa0c81186,
+        0xb0c91186,0x70ca1186,0x118910cb,0x61891186,0x90cd1186,0x70ce1186,0x80cf1186,0x50d010de,
+        0x10d110d8,0xa0d210d5,0xb18910d3,0x60d41186,0x41891188,0x60d61186,0x30d71186,0x41891188,
+        0x60d91186,0x40da10dc,0x318910db,0xa1891186,0xa0dd1186,0xb1891186,0xa0df1186,0xb0e01186,
+        0x118710e1,0x61871186,0x20e3113a,0x90e4010b,0x50e500ff,0x10e610f7,0x40e710ef,0xa0e810ea,
+        0x30e91186,0xb1891186,0x60eb0186,0x70ec0186,0x80ed0186,0xb0ee0188,0xa1890188,0x60f00186,
+        0x70f10186,0x80f20186,0xa0f300f5,0x418900f4,0xb1890188,0x30f60186,0x41890188,0x60f80186,
+        0x70f90186,0x80fa0186,0x40fb00fd,0x318900fc,0xa1890186,0xa0fe0186,0xb1890186,0x31001186,
+        0x41011186,0x51021108,0x11031105,0x61871104,0xb1871186,0x61061186,0x71071186,0x81891186,
+        0x11091186,0xa10a1186,0xb1871186,0x910c112e,0x510d1126,0x110e111e,0x610f1118,0x31101113,
+        0x41871111,0xa1121186,0xb1891186,0x81141186,0xa1151186,0xb1891116,0x41171186,0x71891188,
+        0xb1191186,0x311a111c,0x4187111b,0xa1871186,0x811d1186,0xa1871186,0x611f1186,0x71201186,
+        0x81211186,0x41221124,0x31891123,0xa1891186,0xa1251186,0xb1891186,0xa1271186,0xb1281186,
+        0x1129112b,0x3187112a,0x81871186,0x612c1186,0x712d1186,0x81871186,0x312f1186,0x41301186,
+        0x51311137,0x11321134,0x61871133,0xb1871186,0x61351186,0x71361186,0x81871186,0x11381186,
+        0xa1391186,0xb1871186,0x913b1150,0x713c1186,0x813d1186,0x513e114c,0x113f1146,0xa1401143,
+        0xb1871141,0x61421186,0x41891186,0x61441186,0x31451186,0x41891186,0x61471186,0x4148114a,
+        0x31871149,0xa1871186,0xa14b1186,0xb1871186,0xa14d1186,0xb14e1186,0x1187114f,0x61871186,
+        0x51510186,0x91520186,0x61530186,0x71540186,0x81550186,0x41560158,0x31870157,0xa1870186,
+        0xa1590186,0xb1870186,0x515b0170,0x915c0168,0x615d0186,0x715e0186,0x415f0165,0x31600163,
+        0x81870161,0x11620186,0x21870186,0x81640186,0xa1870186,0xb1660186,0x81670186,0xa1870186,
+        0x21690186,0x316a0186,0x416b0186,0x716c0186,0x116d016e,0x61870186,0x616f0186,0x81870186,
+        0x51711186,0x9172117e,0x61731186,0x71741186,0x4175117b,0x31761179,0x81871177,0x11781186,
+        0x21871186,0x817a1186,0xa1871186,0xb17c1186,0x817d1186,0xa1871186,0x217f1186,0x31801186,
+        0x41811186,0x71821186,0x11831184,0x61871186,0x61851186,0x81871186,0x000000fc,0x000000fd,
+        0x000000fe,0x000000ff
+    };
+
+    static const unsigned long table_7_12d_struct2[] =
+    {
+        0x000100b5,0x50020036,0x20030025,0x9004001d,0x10050015,0x6006000f,0x3007000a,0x41890008,
+        0xa0090188,0xb1890188,0x800b0188,0xa00c0188,0xb189000d,0x400e0188,0x71890188,0xb0100188,
+        0x30110013,0x41890012,0xa1890188,0x80140188,0xa1890188,0x60160188,0x70170188,0x80180188,
+        0x4019001b,0x3189001a,0xa1890188,0xa01c0188,0xb1890188,0x301e0188,0x401f0188,0x10200022,
+        0x61890021,0xb1890188,0x60230188,0x70240188,0x81890188,0x90260188,0x70270188,0x80280188,
+        0x10290030,0xa02a002d,0xb189002b,0x602c0188,0x41890188,0x602e0188,0x302f0188,0x41890188,
+        0x60310188,0x40320034,0x31890033,0xa1890188,0xa0350188,0xb1890188,0x503710a1,0x9038006b,
+        0x3039105b,0x403a1053,0xb03b004d,0x103c0044,0x803d0040,0xa03e0188,0x2189003f,0x71890188,
+        0x60411188,0x20421188,0x70431188,0x81891188,0x60450048,0x70460188,0x80470188,0xa1890188,
+        0x60491188,0x204a1188,0x704b1188,0x1189104c,0x81891188,0x204e1188,0x704f1188,0x10501051,
+        0x61891188,0x60521188,0x81891188,0xb0540188,0x80550188,0xa0560188,0x10570059,0x21890058,
+        0x71890188,0x605a0188,0x71890188,0xb05c0188,0xa05d0188,0x305e0065,0x105f0062,0x21890060,
+        0x70610188,0x81890188,0x60630188,0x70640188,0x81890188,0x80660188,0x10670069,0x21890068,
+        0x71890188,0x606a0188,0x71890188,0x906c1093,0x206d0087,0x106e007f,0x406f0077,0xa0700072,
+        0x30710188,0xb1890188,0x60731188,0x70741188,0x80751188,0xb0761188,0xa1891188,0x60781188,
+        0x70791188,0x807a1188,0xa07b107d,0x4189107c,0xb1891188,0x307e1188,0x41891188,0x60801188,
+        0x70811188,0x80821188,0x40831085,0x31891084,0xa1891188,0xa0861188,0xb1891188,0x60881188,
+        0x70891188,0x808a108f,0x408b108d,0x3189108c,0xa1891188,0xa08e1188,0xb1891188,0x20901188,
+        0x10911188,0x30921188,0x41891188,0x20940099,0x10950188,0x30960188,0x40970188,0xa0980188,
+        0xb1890188,0x209a1186,0x309b1188,0x409c1188,0x709d1188,0x109e109f,0x61891188,0x60a01188,
+        0x81891188,0x20a200ae,0xa0a30188,0xb0a40188,0x90a500ab,0x10a600a8,0x318900a7,0x81890188,
+        0x60a90188,0x70aa0188,0x81890188,0x10ac0188,0x30ad0188,0x41890188,0x90af0188,0x70b00188,
+        0x80b10188,0xa0b20188,0xb0b30188,0x118900b4,0x61890188,0x00b6115a,0x20b700e2,0x50b800cc,
+        0x70b900c5,0x60ba0188,0x40bb00c1,0x30bc00be,0x118900bd,0x81890188,0x90bf0188,0x80c00188,
+        0xa1890188,0x90c20188,0x80c30188,0xa0c40188,0xb1890188,0x90c61188,0x80c71188,0xa0c81188,
+        0xb0c91188,0x70ca1188,0x118910cb,0x61891188,0x90cd1188,0x70ce1188,0x80cf1188,0x50d010de,
+        0x10d110d8,0xa0d210d5,0xb18910d3,0x60d41188,0x41891188,0x60d61188,0x30d71188,0x41891188,
+        0x60d91188,0x40da10dc,0x318910db,0xa1891188,0xa0dd1188,0xb1891188,0xa0df1188,0xb0e01188,
+        0x118910e1,0x61891188,0x20e3113a,0x90e4010b,0x50e500ff,0x10e610f7,0x40e710ef,0xa0e810ea,
+        0x30e91188,0xb1891188,0x60eb0188,0x70ec0188,0x80ed0188,0xb0ee0188,0xa1890188,0x60f00188,
+        0x70f10188,0x80f20188,0xa0f300f5,0x418900f4,0xb1890188,0x30f60188,0x41890188,0x60f80188,
+        0x70f90188,0x80fa0188,0x40fb00fd,0x318900fc,0xa1890188,0xa0fe0188,0xb1890188,0x31001188,
+        0x41011188,0x51021108,0x11031105,0x61891104,0xb1891188,0x61061188,0x71071188,0x81891188,
+        0x11091188,0xa10a1188,0xb1891188,0x910c112e,0x510d1126,0x110e111e,0x610f1118,0x31101113,
+        0x41891111,0xa1121188,0xb1891188,0x81141188,0xa1151188,0xb1891116,0x41171188,0x71891188,
+        0xb1191188,0x311a111c,0x4189111b,0xa1891188,0x811d1188,0xa1891188,0x611f1188,0x71201188,
+        0x81211188,0x41221124,0x31891123,0xa1891188,0xa1251188,0xb1891188,0xa1271188,0xb1281188,
+        0x1129112b,0x3189112a,0x81891188,0x612c1188,0x712d1188,0x81891188,0x312f1188,0x41301188,
+        0x51311137,0x11321134,0x61891133,0xb1891188,0x61351188,0x71361188,0x81891188,0x11381188,
+        0xa1391188,0xb1891188,0x913b1150,0x713c1188,0x813d1188,0x513e114c,0x113f1146,0xa1401143,
+        0xb1891141,0x61421188,0x41891188,0x61441188,0x31451188,0x41891188,0x61471188,0x4148114a,
+        0x31891149,0xa1891188,0xa14b1188,0xb1891188,0xa14d1188,0xb14e1188,0x1189114f,0x61891188,
+        0x51510188,0x91520186,0x61530188,0x71540188,0x81550188,0x41560158,0x31890157,0xa1890188,
+        0xa1590188,0xb1890188,0x515b0170,0x915c0168,0x615d0188,0x715e0188,0x415f0165,0x31600163,
+        0x81890161,0x11620188,0x21890188,0x81640188,0xa1890188,0xb1660188,0x81670188,0xa1890188,
+        0x21690188,0x316a0188,0x416b0188,0x716c0188,0x116d016e,0x61890188,0x616f0188,0x81890188,
+        0x51711186,0x9172117e,0x61731188,0x71741188,0x4175117b,0x31761179,0x81891177,0x11781188,
+        0x21891188,0x817a1188,0xa1891188,0xb17c1188,0x817d1188,0xa1891188,0x217f1188,0x31801188,
+        0x41811188,0x71821188,0x11831184,0x61891188,0x61851188,0x81891188,0x000000fc,0x000000fd,
+        0x000000fe,0x000000ff
+    };
+
+    static const unsigned long table_7_12s_struct1[] =
+    {
+        0x00010091,0x20020064,0x50030031,0x90040026,0x7005001c,0x10060015,0x6007000f,0x3008000b,
+        0x41590009,0xa00a0156,0xb1590158,0x800c0156,0xa00d0156,0x4159000e,0xb1590158,0xb0100156,
+        0x30110013,0x41590012,0xa1590156,0x80140156,0xa1590156,0x60160156,0x80170156,0x4018001a,
+        0x31590019,0xa1590156,0xa01b0156,0xb1590156,0x101d0156,0xb01e0023,0x301f0021,0x41570020,
+        0xa1570156,0x80220156,0xa1570156,0x60240156,0x30250156,0x41570156,0x30270156,0x40280156,
+        0x7029002e,0x102a002c,0x6157002b,0xb1570156,0x602d0156,0x81570156,0x102f0156,0x61570030,
+        0xb1570156,0x90321055,0x70331050,0x5034104b,0x10350044,0x4036003d,0xa0370039,0x30380156,
+        0xb1590158,0x603a1156,0x803b1156,0xb03c1158,0xa1591158,0x603e1156,0x803f1156,0xa0401042,
+        0x41591041,0xb1591158,0x30431156,0x41591158,0x60451156,0x80461156,0x40471049,0x31591048,
+        0xa1591156,0xa04a1156,0xb1591156,0x104c0156,0x304d0156,0x404e0156,0xa04f0156,0xb1590156,
+        0x10510156,0x30520156,0x40530156,0xa0540156,0xb1570156,0xa0560156,0xb0570156,0x90580061,
+        0x7059005e,0x105a005c,0x3157005b,0x81570156,0x605d0156,0x81570156,0x105f0156,0x31570060,
+        0x81570156,0x10620156,0x30630156,0x41570156,0x7065007a,0x90660156,0x80670156,0x50680076,
+        0x10690070,0xa06a006d,0xb157006b,0x606c0156,0x41590156,0x606e0156,0x306f0156,0x41590156,
+        0x60710156,0x40720074,0x31570073,0xa1570156,0xa0750156,0xb1570156,0xa0770156,0xb0780156,
+        0x11570079,0x61570156,0x707b1156,0x507c1156,0x207d1089,0x607e1156,0x407f1085,0x30801082,
+        0x11571081,0x81571156,0x90831156,0x80841156,0xa1591156,0x90861156,0x80871156,0xa0881156,
+        0xb1591156,0x908a1156,0x608b1156,0x808c1156,0x408d108f,0x3157108e,0xa1571156,0xa0901156,
+        0xb1571156,0x0092112c,0x209310ff,0x909410c2,0x509510b7,0x709610ad,0x109710a6,0x609810a0,
+        0x3099109c,0x4159109a,0xa09b1156,0xb1591158,0x809d1156,0xa09e1156,0x4159109f,0xb1591158,
+        0xb0a11156,0x30a210a4,0x415910a3,0xa1591156,0x80a51156,0xa1591156,0x60a71156,0x80a81156,
+        0x40a910ab,0x315910aa,0xa1591156,0xa0ac1156,0xb1591156,0x10ae1156,0xb0af10b4,0x30b010b2,
+        0x415710b1,0xa1571156,0x80b31156,0xa1571156,0x60b51156,0x30b61156,0x41571156,0xa0b81156,
+        0xb0b91156,0x70ba10bf,0x10bb10bd,0x315710bc,0x81571156,0x60be1156,0x81571156,0x10c01156,
+        0x315710c1,0x81571156,0x90c300f0,0x50c400e1,0x70c500dc,0x10c610d5,0x40c710ce,0xa0c810ca,
+        0x30c91156,0xb1591158,0x60cb0156,0x80cc0156,0xb0cd0158,0xa1590158,0x60cf0156,0x80d00156,
+        0xa0d100d3,0x415900d2,0xb1590158,0x30d40156,0x41590158,0x60d60156,0x80d70156,0x40d800da,
+        0x315900d9,0xa1590156,0xa0db0156,0xb1590156,0x10dd1156,0x30de1156,0x40df1156,0xa0e01156,
+        0xb1591156,0x30e21156,0x40e31156,0x50e410ed,0x70e510ea,0x10e610e8,0x615910e7,0xb1591156,
+        0x60e91156,0x81591156,0x10eb1156,0x615710ec,0xb1571156,0x10ee1156,0xa0ef1156,0xb1571156,
+        0x30f11156,0x40f21156,0x50f310fc,0x70f410f9,0x10f510f7,0x615710f6,0xb1571156,0x60f81156,
+        0x81571156,0x10fa1156,0x615710fb,0xb1571156,0x10fd1156,0xa0fe1156,0xb1571156,0x71000116,
+        0x51010156,0x2102010e,0x61030156,0x4104010a,0x31050107,0x11570106,0x81570156,0x91080156,
+        0x81090156,0xa1590156,0x910b0156,0x810c0156,0xa10d0156,0xb1590156,0x910f0156,0x61100156,
+        0x81110156,0x41120114,0x31570113,0xa1570156,0xa1150156,0xb1570156,0x71171156,0x91181156,
+        0x81191156,0x511a1128,0x111b1122,0xa11c111f,0xb157111d,0x611e1156,0x41591156,0x61201156,
+        0x31211156,0x41591156,0x61231156,0x41241126,0x31571125,0xa1571156,0xa1271156,0xb1571156,
+        0xa1291156,0xb12a1156,0x1157112b,0x61571156,0x512d0141,0x712e0156,0x912f013a,0x61300156,
+        0x41310137,0x31320135,0x81570133,0x11340156,0x21570156,0x81360156,0xa1570156,0xb1380156,
+        0x81390156,0xa1570156,0x213b0156,0x313c0156,0x413d0156,0x113e013f,0x61570156,0x61400156,
+        0x81570156,0x51421156,0x71431156,0x9144114f,0x61451156,0x4146114c,0x3147114a,0x81571148,
+        0x11491156,0x21571156,0x814b1156,0xa1571156,0xb14d1156,0x814e1156,0xa1571156,0x21501156,
+        0x31511156,0x41521156,0x11531154,0x61571156,0x61551156,0x81571156,0x000000fc,0x000000fd,
+        0x000000fe,0x000000ff
+    };
+
+    static const unsigned long table_7_12s_struct2[] =
+    {
+        0x00010092,0x20020065,0x50030031,0x90040026,0x7005001c,0x10060015,0x6007000f,0x3008000b,
+        0x41400009,0xa00a013f,0xb140013f,0x800c013f,0xa00d013f,0x4140000e,0xb140013f,0xb010013f,
+        0x30110013,0x41400012,0xa140013f,0x8014013f,0xa140013f,0x6016013f,0x8017013f,0x4018001a,
+        0x31400019,0xa140013f,0xa01b013f,0xb140013f,0x101d013f,0xb01e0023,0x301f0021,0x41400020,
+        0xa140013f,0x8022013f,0xa140013f,0x6024013f,0x3025013f,0x4140013f,0x3027013f,0x4028013f,
+        0x7029002e,0x102a002c,0x6140002b,0xb140013f,0x602d013f,0x8140013f,0x102f013f,0x61400030,
+        0xb140013f,0x70321059,0x90331050,0x5034104b,0x10350044,0x4036003d,0xa0370039,0x3038013f,
+        0xb140013f,0x603a113f,0x803b113f,0xb03c113f,0xa140113f,0x603e113f,0x803f113f,0xa0401042,
+        0x41401041,0xb140113f,0x3043113f,0x4140113f,0x6045113f,0x8046113f,0x40471049,0x31401048,
+        0xa140113f,0xa04a113f,0xb140113f,0x104c013f,0x304d013f,0x404e013f,0xa04f013f,0xb140013f,
+        0xa051013f,0xb052013f,0x90530056,0x1054013f,0x31400055,0x8140013f,0x1057013f,0x3058013f,
+        0x4140013f,0xa05a013f,0xb05b013f,0x905c0062,0x105d005f,0x3140005e,0x8140013f,0x6060013f,
+        0x8061013f,0x7140013f,0x1063013f,0x3064013f,0x4140013f,0x7066007b,0x9067013f,0x8068013f,
+        0x50690077,0x106a0071,0xa06b006e,0xb140006c,0x606d013f,0x4140013f,0x606f013f,0x3070013f,
+        0x4140013f,0x6072013f,0x40730075,0x31400074,0xa140013f,0xa076013f,0xb140013f,0xa078013f,
+        0xb079013f,0x1140007a,0x6140013f,0x707c113f,0x507d113f,0x207e108a,0x607f113f,0x40801086,
+        0x30811083,0x11401082,0x8140113f,0x9084113f,0x8085113f,0xa140113f,0x9087113f,0x8088113f,
+        0xa089113f,0xb140113f,0x908b113f,0x608c113f,0x808d113f,0x408e1090,0x3140108f,0xa140113f,
+        0xa091113f,0xb140113f,0x00931113,0x209410e6,0xb09510c8,0x309610b9,0x509710a9,0x909810a3,
+        0x709910a0,0x109a109c,0x4140109b,0xa140113f,0x609d113f,0x809e113f,0x4140109f,0xa140113f,
+        0x10a1113f,0x414010a2,0xa140113f,0x40a4113f,0x70a510a8,0x114010a6,0x60a7113f,0x8140113f,
+        0x1140113f,0xa0aa10b2,0x90ab10b0,0x70ac10af,0x114010ad,0x60ae113f,0x8140113f,0x1140113f,
+        0x10b1113f,0x4140113f,0x70b3013f,0x90b4013f,0x50b5013f,0x40b6013f,0x60b7013f,0x80b8013f,
+        0xa140013f,0x90ba10c0,0x80bb113f,0xa0bc113f,0x70bd10bf,0x114010be,0x6140113f,0x1140113f,
+        0x50c1013f,0x70c2013f,0x90c3013f,0x40c4013f,0x60c5013f,0x80c6013f,0x314000c7,0xa140013f,
+        0x40c910dc,0x50ca10d5,0x70cb10d2,0x60cc113f,0x30cd10cf,0x114010ce,0x8140113f,0x90d0113f,
+        0x80d1113f,0xa140113f,0x10d3113f,0x60d4113f,0x3140113f,0x70d6013f,0x90d7013f,0x50d8013f,
+        0x60d9013f,0x80da013f,0xa0db013f,0xb140013f,0x50dd013f,0x70de013f,0x90df013f,0x60e0013f,
+        0x80e1013f,0xa0e200e4,0x414000e3,0xb140013d,0x30e5013f,0x4140013f,0x70e700fd,0x50e8013f,
+        0x20e900f5,0x60ea013f,0x40eb00f1,0x30ec00ee,0x114000ed,0x8140013f,0x90ef013f,0x80f0013f,
+        0xa140013f,0x90f2013f,0x80f3013f,0xa0f4013f,0xb140013f,0x90f6013f,0x60f7013f,0x80f8013f,
+        0x40f900fb,0x314000fa,0xa140013f,0xa0fc013f,0xb140013f,0x70fe113f,0x90ff113f,0x8100113f,
+        0x5101110f,0x11021109,0xa1031106,0xb1401104,0x6105113f,0x4140113f,0x6107113f,0x3108113f,
+        0x4140113f,0x610a113f,0x410b110d,0x3140110c,0xa140113f,0xa10e113f,0xb140113f,0xa110113f,
+        0xb111113f,0x11401112,0x6140113f,0x51140128,0x7115013f,0x91160121,0x6117013f,0x4118011e,
+        0x3119011c,0x8140011a,0x111b013f,0x2140013f,0x811d013f,0xa140013f,0xb11f013f,0x8120013f,
+        0xa140013f,0x2122013f,0x3123013f,0x4124013f,0x11250126,0x6140013f,0x6127013f,0x8140013f,
+        0x5129113d,0x712a113f,0x912b1136,0x612c113f,0x412d1133,0x312e1131,0x8140112f,0x1130113f,
+        0x2140113f,0x8132113f,0xa140113f,0xb134113f,0x8135113f,0xa140113f,0x2137113f,0x3138113f,
+        0x4139113f,0x113a113b,0x6140113f,0x613c113f,0x8140113f,0x000000fc,0x000000fd,0x000000fe,
+        0x000000ff
+    };
+
+    static const unsigned long table_9_16_struct[] =
+    {
+        0x00010138,0x200200d3,0x4003008a,0x50040051,0x70050027,0x30060016,0x1007000d,0x6008000a,
+        0x82ad0009,0xf2ad02ac,0xd00b02ac,0xe00c02ac,0xf2ad02ac,0x800e02ac,0x900f02ac,0xa01002ac,
+        0x62ad0011,0xb01202ac,0xc01302ac,0xd01402ac,0xe01502ac,0xf2ad02ac,0xa01702ac,0xb01802ac,
+        0xc01902ac,0x801a0023,0x901b001f,0x62ad001c,0xd01d02ac,0xe01e02ac,0xf2ad02ac,0x102002ac,
+        0xd02102ac,0xe02202ac,0xf2ad02ac,0x102402ac,0xd02502ac,0xe02602ac,0xf2ad02ac,0x70281041,
+        0xe0290038,0xf02a02ac,0x102b0032,0x302c002e,0x62ad002d,0xd2ad02ac,0xa02f02ac,0xb03002ac,
+        0xc03102ac,0xd2ad02ac,0x803302ac,0x903402ac,0xa03502ac,0xb03602ac,0xc03702ac,0xd2ad02ac,
+        0xe03912ac,0x803a12ac,0x903b12ac,0xa03c12ac,0xb03d12ac,0xc03e12ac,0xd03f12ac,0x62ad1040,
+        0xf2ad12ac,0xe04202ac,0xf04302ac,0x1044004b,0x30450047,0x62ad0046,0xd2ad02ac,0xa04802ac,
+        0xb04902ac,0xc04a02ac,0xd2ad02ac,0x804c02ac,0x904d02ac,0xa04e02ac,0xb04f02ac,0xc05002ac,
+        0xd2ad02ac,0x5052106e,0xc0530064,0xd05402ac,0xe05502ac,0xf056005e,0x1057005a,0x32ad0058,
+        0xa05902ac,0xb2ad02ac,0x805b02ac,0x905c02ac,0xa05d02ac,0xb2ad02ac,0x605f02ac,0x706002ac,
+        0x806102ac,0x906202ac,0xa06302ac,0xb2ad02ac,0xc06512ac,0x706612ac,0x806712ac,0x906812ac,
+        0xa06912ac,0xb06a12ac,0xd06b12ac,0x62ad106c,0xe06d12ac,0xf2ad12ac,0xc06f0080,0xd07002ac,
+        0xe07102ac,0xf072007a,0x10730076,0x32ad0074,0xa07502ac,0xb2ad02ac,0x807702ac,0x907802ac,
+        0xa07902ac,0xb2ad02ac,0x607b02ac,0x707c02ac,0x807d02ac,0x907e02ac,0xa07f02ac,0xb2ad02ac,
+        0xc08112ac,0x708212ac,0x808312ac,0x908412ac,0xa08512ac,0xb08612ac,0xd08712ac,0xe08812ac,
+        0x62ad1089,0xf2ad12ac,0x408b10b1,0xb08c00a1,0xc08d02ac,0xd08e02ac,0xa08f009d,0xe0900098,
+        0xf0910094,0x12ad0092,0x809302ac,0x92ad02ac,0x609502ac,0x709602ac,0x809702ac,0x92ad02ac,
+        0x509902ac,0x609a02ac,0x709b02ac,0x809c02ac,0x92ad02ac,0x109e02ac,0x309f02ac,0xe0a002ac,
+        0xf2ad02ac,0xb0a212ac,0x70a312ac,0x80a412ac,0x90a512ac,0xa0a612ac,0x60a710ad,0x50a810aa,
+        0x32ad10a9,0xc2ad12ac,0xc0ab12ac,0xd0ac12ac,0xe2ad12ac,0xc0ae12ac,0xd0af12ac,0xe0b012ac,
+        0xf2ad12ac,0xb0b200c7,0xc0b302ac,0xd0b402ac,0xa0b500c3,0xe0b600be,0xf0b700ba,0x12ad00b8,
+        0x80b902ac,0x92ad02ac,0x60bb02ac,0x70bc02ac,0x80bd02ac,0x92ad02ac,0x50bf02ac,0x60c002ac,
+        0x70c102ac,0x80c202ac,0x92ad02ac,0x10c402ac,0x30c502ac,0xe0c602ac,0xf2ad02ac,0xb0c812ac,
+        0x70c912ac,0x80ca12ac,0x90cb12ac,0xa0cc12ac,0xc0cd12ac,0xd0ce12ac,0x60cf10d1,0x52ad10d0,
+        0xe2ad12ac,0xe0d212ac,0xf2ad12ac,0x20d4110a,0x90d500ef,0xa0d602ac,0xb0d702ac,0x80d800ea,
+        0xc0d900e5,0xd0da00e1,0xe0db00de,0xf2ad00dc,0x60dd02ac,0x72ad02ac,0x50df02ac,0x60e002ac,
+        0x72ad02ac,0x40e202ac,0x50e302ac,0x60e402ac,0x72ad02ac,0x30e602ac,0x40e702ac,0x50e802ac,
+        0x60e902ac,0x72ad02ac,0x10eb02ac,0xc0ec02ac,0xd0ed02ac,0xe0ee02ac,0xf2ad02ac,0x90f012ac,
+        0x70f112ac,0x80f212ac,0x60f31104,0x50f410ff,0x40f510fb,0x30f610f8,0x12ad10f7,0xa2ad12ac,
+        0xa0f912ac,0xb0fa12ac,0xc2ad12ac,0xa0fc12ac,0xb0fd12ac,0xc0fe12ac,0xd2ad12ac,0xa10012ac,
+        0xb10112ac,0xc10212ac,0xd10312ac,0xe2ad12ac,0xa10512ac,0xb10612ac,0xc10712ac,0xd10812ac,
+        0xe10912ac,0xf2ad12ac,0x910b0125,0xa10c02ac,0xb10d02ac,0x810e0120,0xc10f011b,0xd1100117,
+        0xe1110114,0xf2ad0112,0x611302ac,0x72ad02ac,0x511502ac,0x611602ac,0x72ad02ac,0x411802ac,
+        0x511902ac,0x611a02ac,0x72ad02ac,0x311c02ac,0x411d02ac,0x511e02ac,0x611f02ac,0x72ad02ac,
+        0x112102ac,0xc12202ac,0xd12302ac,0xe12402ac,0xf2ad02ac,0x912612ac,0x712712ac,0x812812ac,
+        0xa12912ac,0xb12a12ac,0x612b1134,0x512c1131,0x412d112f,0x32ad112e,0xc2ad12ac,0xc13012ac,
+        0xd2ad12ac,0xc13212ac,0xd13312ac,0xe2ad12ac,0xc13512ac,0xd13612ac,0xe13712ac,0xf2ad12ac,
+        0x01391270,0x213a0170,0x913b0155,0x713c02ac,0x813d02ac,0x613e014f,0x513f014a,0x41400146,
+        0x31410143,0x12ad0142,0xa2ad02ac,0xa14402ac,0xb14502ac,0xc2ad02ac,0xa14702ac,0xb14802ac,
+        0xc14902ac,0xd2ad02ac,0xa14b02ac,0xb14c02ac,0xc14d02ac,0xd14e02ac,0xe2ad02ac,0xa15002ac,
+        0xb15102ac,0xc15202ac,0xd15302ac,0xe15402ac,0xf2ad02ac,0x915612ac,0xa15712ac,0xb15812ac,
+        0x8159116b,0xc15a1166,0xd15b1162,0xe15c115f,0xf2ad115d,0x615e12ac,0x72ad12ac,0x516012ac,
+        0x616112ac,0x72ad12ac,0x416312ac,0x516412ac,0x616512ac,0x72ad12ac,0x316712ac,0x416812ac,
+        0x516912ac,0x616a12ac,0x72ad12ac,0x116c12ac,0xc16d12ac,0xd16e12ac,0xe16f12ac,0xf2ad12ac,
+        0x21711242,0x41720198,0xb1730182,0x717402ac,0x817502ac,0x917602ac,0xa17702ac,0x6178017e,
+        0x5179017b,0x32ad017a,0xc2ad02ac,0xc17c02ac,0xd17d02ac,0xe2ad02ac,0xc17f02ac,0xd18002ac,
+        0xe18102ac,0xf2ad02ac,0xb18312ac,0xc18412ac,0xd18512ac,0xa1861194,0xe187118f,0xf188118b,
+        0x12ad1189,0x818a12ac,0x92ad12ac,0x618c12ac,0x718d12ac,0x818e12ac,0x92ad12ac,0x519012ac,
+        0x619112ac,0x719212ac,0x819312ac,0x92ad12ac,0x119512ac,0x319612ac,0xe19712ac,0xf2ad12ac,
+        0x41991220,0x519a01b6,0xc19b01a4,0x719c02ac,0x819d02ac,0x919e02ac,0xa19f02ac,0xb1a002ac,
+        0xd1a102ac,0x62ad01a2,0xe1a302ac,0xf2ad02ac,0xc1a512ac,0xd1a612ac,0xe1a712ac,0xf1a811b0,
+        0x11a911ac,0x32ad11aa,0xa1ab12ac,0xb2ad12ac,0x81ad12ac,0x91ae12ac,0xa1af12ac,0xb2ad12ac,
+        0x61b112ac,0x71b212ac,0x81b312ac,0x91b412ac,0xa1b512ac,0xb2ad12ac,0x51b71204,0x71b801d1,
+        0xe1b901c1,0x81ba02ac,0x91bb02ac,0xa1bc02ac,0xb1bd02ac,0xc1be02ac,0xd1bf02ac,0x62ad01c0,
+        0xf2ad02ac,0xe1c212ac,0xf1c312ac,0x11c411cb,0x31c511c7,0x62ad11c6,0xd2ad12ac,0xa1c812ac,
+        0xb1c912ac,0xc1ca12ac,0xd2ad12ac,0x81cc12ac,0x91cd12ac,0xa1ce12ac,0xb1cf12ac,0xc1d012ac,
+        0xd2ad12ac,0x71d211f4,0x31d311e3,0x11d411da,0x61d511d7,0x82ad11d6,0xf2ad12ac,0xd1d812ac,
+        0xe1d912ac,0xf2ad12ac,0x81db12ac,0x91dc12ac,0xa1dd12ac,0x62ad11de,0xb1df12ac,0xc1e012ac,
+        0xd1e112ac,0xe1e212ac,0xf2ad12ac,0xa1e412ac,0xb1e512ac,0xc1e612ac,0x81e711f0,0x91e811ec,
+        0x62ad11e9,0xd1ea12ac,0xe1eb12ac,0xf2ad12ac,0x11ed12ac,0xd1ee12ac,0xe1ef12ac,0xf2ad12ac,
+        0x11f112ac,0xd1f212ac,0xe1f312ac,0xf2ad12ac,0xe1f512ac,0xf1f612ac,0x11f711fe,0x31f811fa,
+        0x62ad11f9,0xd2ad12ac,0xa1fb12ac,0xb1fc12ac,0xc1fd12ac,0xd2ad12ac,0x81ff12ac,0x920012ac,
+        0xa20112ac,0xb20212ac,0xc20312ac,0xd2ad12ac,0xc205020e,0x720602ac,0x820702ac,0x920802ac,
+        0xa20902ac,0xb20a02ac,0xd20b02ac,0xe20c02ac,0x62ad020d,0xf2ad02ac,0xc20f12ac,0xd21012ac,
+        0xe21112ac,0xf212121a,0x12131216,0x32ad1214,0xa21512ac,0xb2ad12ac,0x821712ac,0x921812ac,
+        0xa21912ac,0xb2ad12ac,0x621b12ac,0x721c12ac,0x821d12ac,0x921e12ac,0xa21f12ac,0xb2ad12ac,
+        0xb221022c,0x722202ac,0x822302ac,0x922402ac,0xa22502ac,0xc22602ac,0xd22702ac,0x6228022a,
+        0x52ad0229,0xe2ad02ac,0xe22b02ac,0xf2ad02ac,0xb22d12ac,0xc22e12ac,0xd22f12ac,0xa230123e,
+        0xe2311239,0xf2321235,0x12ad1233,0x823412ac,0x92ad12ac,0x623612ac,0x723712ac,0x823812ac,
+        0x92ad12ac,0x523a12ac,0x623b12ac,0x723c12ac,0x823d12ac,0x92ad12ac,0x123f12ac,0x324012ac,
+        0xe24112ac,0xf2ad12ac,0x92430255,0x724402ac,0x824502ac,0xa24602ac,0xb24702ac,0x62480251,
+        0x5249024e,0x424a024c,0x32ad024b,0xc2ad02ac,0xc24d02ac,0xd2ad02ac,0xc24f02ac,0xd25002ac,
+        0xe2ad02ac,0xc25202ac,0xd25302ac,0xe25402ac,0xf2ad02ac,0x925612ac,0xa25712ac,0xb25812ac,
+        0x8259126b,0xc25a1266,0xd25b1262,0xe25c125f,0xf2ad125d,0x625e12ac,0x72ad12ac,0x526012ac,
+        0x626112ac,0x72ad12ac,0x426312ac,0x526412ac,0x626512ac,0x72ad12ac,0x326712ac,0x426812ac,
+        0x526912ac,0x626a12ac,0x72ad12ac,0x126c12ac,0xc26d12ac,0xd26e12ac,0xe26f12ac,0xf2ad12ac,
+        0x7271028e,0x827202ac,0x927302ac,0x62740288,0x52750283,0x4276027f,0x3277027c,0x2278027a,
+        0x12ad0279,0xa2ad02ac,0xa27b02ac,0xb2ad02ac,0xa27d02ac,0xb27e02ac,0xc2ad02ac,0xa28002ac,
+        0xb28102ac,0xc28202ac,0xd2ad02ac,0xa28402ac,0xb28502ac,0xc28602ac,0xd28702ac,0xe2ad02ac,
+        0xa28902ac,0xb28a02ac,0xc28b02ac,0xd28c02ac,0xe28d02ac,0xf2ad02ac,0x728f12ac,0x829012ac,
+        0x929112ac,0x629212a6,0x529312a1,0x4294129d,0x3295129a,0x22961298,0x12ad1297,0xa2ad12ac,
+        0xa29912ac,0xb2ad12ac,0xa29b12ac,0xb29c12ac,0xc2ad12ac,0xa29e12ac,0xb29f12ac,0xc2a012ac,
+        0xd2ad12ac,0xa2a212ac,0xb2a312ac,0xc2a412ac,0xd2a512ac,0xe2ad12ac,0xa2a712ac,0xb2a812ac,
+        0xc2a912ac,0xd2aa12ac,0xe2ab12ac,0xf2ad12ac,0x000000fc,0x000000fd,0x000000fe,0x000000ff
+    };
+    switch(agasttype) {
+      case AgastFeatureDetector::AGAST_5_8:
+        agastbase=0;
+        table_struct1=(unsigned long *)(table_5_8_struct1);
+        table_struct2=(unsigned long *)(table_5_8_struct2);
+        break;
+      case AgastFeatureDetector::AGAST_7_12d:
+        agastbase=2;
+        table_struct1=(unsigned long *)(table_7_12d_struct1);
+        table_struct2=(unsigned long *)(table_7_12d_struct2);
+        break;
+      case AgastFeatureDetector::AGAST_7_12s:
+        agastbase=1;
+        table_struct1=(unsigned long *)(table_7_12s_struct1);
+        table_struct2=(unsigned long *)(table_7_12s_struct2);
+        break;
+      case AgastFeatureDetector::OAST_9_16:
+      default:
+        agastbase=2;
+        table_struct1=(unsigned long *)(table_9_16_struct);
+        table_struct2=(unsigned long *)(table_9_16_struct);
+        break;
+    }
+
+#endif //AGAST_TREE
+
+    size_t total = 0;
+    int xsize = img.cols;
+    int ysize = img.rows;
+    size_t nExpectedCorners = keypoints.capacity();
+    register int x, y;
+    register int xsizeB = xsize - (agastbase + 2);
+    register int ysizeB = ysize - (agastbase + 1);
+    register int width;
+
+    keypoints.resize(0);
+
+    int pixel[16];
+    makeAgastOffsets(pixel, (int)img.step, agasttype);
+
+    width = xsize;
+
+    for(y = agastbase+1; y < ysizeB; y++)
+    {
+        x = agastbase;
+        while(true)
+        {
+          homogeneous:
+          {
+            x++;
+            if(x > xsizeB)
+                break;
+            else
+            {
+                register const unsigned char* const ptr = img.ptr() + y*width + x;
+                result = agast_tree_search(table_struct1, pixel, ptr, threshold);
+                switch (result)
+                {
+                case 252:
+                    goto homogeneous;
+                case 253:
+                    goto success_homogeneous;
+                case 254:
+                    goto structured;
+                case 255:
+                    goto success_structured;
+                }
+            }
+          }
+          structured:
+          {
+            x++;
+            if(x > xsizeB)
+                break;
+            else
+            {
+                register const unsigned char* const ptr = img.ptr() + y*width + x;
+                result = agast_tree_search(table_struct2, pixel, ptr, threshold);
+                switch (result)
+                {
+                case 252:
+                    goto homogeneous;
+                case 253:
+                    goto success_homogeneous;
+                case 254:
+                    goto structured;
+                case 255:
+                    goto success_structured;
+                }
+            }
+          }
+            success_homogeneous:
+            if(total == nExpectedCorners)
+            {
+                if(nExpectedCorners == 0)
+                {
+                    nExpectedCorners = 512;
+                    keypoints.reserve(nExpectedCorners);
+                }
+                else
+                {
+                    nExpectedCorners *= 2;
+                    keypoints.reserve(nExpectedCorners);
+                }
+            }
+            keypoints.push_back(KeyPoint(Point2f((float)x, (float)y), 1.0f));
+            total++;
+            goto homogeneous;
+            success_structured:
+            if(total == nExpectedCorners)
+            {
+                if(nExpectedCorners == 0)
+                {
+                    nExpectedCorners = 512;
+                    keypoints.reserve(nExpectedCorners);
+                }
+                else
+                {
+                    nExpectedCorners *= 2;
+                    keypoints.reserve(nExpectedCorners);
+                }
+            }
+            keypoints.push_back(KeyPoint(Point2f((float)x, (float)y), 1.0f));
+            total++;
+            goto structured;
+        }
+    }
+}
+
+static void AGAST_5_8(InputArray _img, std::vector<KeyPoint>& keypoints, int threshold)
+{
+    AGAST_ALL(_img, keypoints, threshold, AgastFeatureDetector::AGAST_5_8);
+}
+
+static void AGAST_7_12d(InputArray _img, std::vector<KeyPoint>& keypoints, int threshold)
+{
+    AGAST_ALL(_img, keypoints, threshold, AgastFeatureDetector::AGAST_7_12d);
+}
+
+
+static void AGAST_7_12s(InputArray _img, std::vector<KeyPoint>& keypoints, int threshold)
+{
+    AGAST_ALL(_img, keypoints, threshold, AgastFeatureDetector::AGAST_7_12s);
+}
+
+static void OAST_9_16(InputArray _img, std::vector<KeyPoint>& keypoints, int threshold)
+{
+    AGAST_ALL(_img, keypoints, threshold, AgastFeatureDetector::OAST_9_16);
+}
+
+#endif // !(defined __i386__ || defined(_M_IX86) || defined __x86_64__ || defined(_M_X64))
 
 void AGAST(InputArray _img, std::vector<KeyPoint>& keypoints, int threshold, bool nonmax_suppression)
 {
     AGAST(_img, keypoints, threshold, nonmax_suppression, AgastFeatureDetector::OAST_9_16);
 }
 
+#else // !(defined __i386__ || defined(_M_IX86) || defined __x86_64__ || defined(_M_X64))
+
+static void AGAST_ALL(InputArray _img, std::vector<KeyPoint>& keypoints, int threshold, int agasttype)
+{
+    cv::Mat img;
+    if(!_img.getMat().isContinuous())
+      img = _img.getMat().clone();
+    else
+      img = _img.getMat();
+
+    int agastbase;
+#ifdef AGAST_TREE_24BIT
+    unsigned char *table_struct1;
+    unsigned char *table_struct2;
+    int result;
+    static const unsigned char table_5_8_struct1[][3] =
+    {{  0,  1, 38},{  2,  1, 22},{  3,  1, 10},{  5,  1,  6},{  1,  1,  3},{  4,255,  1},{  7,255,252},{  4,  1,252},
+    {  6,255,252},{  1,  1,252},{  4,253,  1},{  7,253,252},{  7,  1,  6},{  6,  1,252},{  5,  1,  3},{  1,255,  1},
+    {  4,255,252},{  1,253,252},{133,  1,252},{131,  1,252},{135,  1,252},{132,  1,252},{134,255,254},{  5,  1,  5},
+    {  7,  1,252},{  6,  1,252},{  1,253,  1},{  4,253,252},{133,  1,252},{131,  1,252},{130,  1,  5},{129,  1,  2},
+    {132,255,252},{132,  1,252},{134,255,252},{135,  1,252},{132,  1,252},{134,255,252},{128,  1, 50},{130,  1, 34},
+    {  7,  1, 13},{131,  1,  8},{133,  1,  5},{129,  1,  2},{132,255,254},{132,  1,252},{134,255,254},{129,  1,252},
+    {132,255,252},{  5,  1,252},{  3,  1,252},{  4,  1,252},{  6,255,254},{135,  1, 12},{131,  1,  6},{133,  1,  4},
+    {129,255,  1},{132,  1,252},{134,255,254},{129,253,252},{134,  1,252},{133,  1,  3},{129,255,  1},{132,255,252},
+    {129,253,252},{131,  1,252},{133,  1,  5},{129,  1,  2},{132,255,252},{132,  1,252},{134,255,252},{129,  1,252},
+    {132,253,252},{  5,  1, 10},{  3,  1,252},{  2,  1,  5},{  1,  1,  2},{  4,255,252},{  4,  1,252},{  6,255,252},
+    {  7,  1,252},{  4,  1,252},{  6,255,252},{133,  1,252},{135,  1,252},{134,  1,252},{129,253,  1},{132,253,252},
+    {  3,  1, 10},{  5,  1,252},{  2,  1,  5},{  1,  1,  2},{  4,253,252},{  4,  1,252},{  6,253,252},{  7,  1,252},
+    {  4,  1,252},{  6,253,252},{131,  1,252},{133,  1,252},{130,  1,  5},{129,  1,  2},{132,253,252},{132,  1,252},
+    {134,253,252},{135,  1,252},{132,  1,252},{134,253,252}};
+
+    static const unsigned char table_5_8_struct2[][3] =
+    {{  0,  1, 42},{  2,  1, 26},{  3,  1, 14},{  5,  1,  9},{  7,  1,  4},{  1,255,  1},{  4,  1,254},{  6,255,254},
+    {  1,  1,  2},{  4,255,254},{  4,  1,254},{  6,255,254},{  7,  1,  2},{  1,255,254},{  1,  1,254},{  4,255,254},
+    {  7,  1,  6},{  6,  1,254},{  5,  1,  3},{  1,255,  1},{  4,255,254},{  1,255,254},{133,  1,254},{131,  1,252},
+    {135,  1,252},{132,  1,254},{134,255,254},{  5,  1,  5},{  7,  1,254},{  6,  1,254},{  1,255,  1},{  4,255,254},
+    {133,  1,252},{131,  1,254},{130,  1,  5},{129,  1,  2},{132,255,254},{132,  1,254},{134,255,254},{135,  1,252},
+    {132,  1,252},{134,253,252},{128,  1, 50},{130,  1, 34},{  7,  1, 13},{131,  1,  8},{133,  1,  5},{129,  1,  2},
+    {132,255,254},{132,  1,254},{134,255,254},{129,  1,254},{132,255,254},{  5,  1,254},{  3,  1,252},{  4,  1,254},
+    {  6,255,254},{135,  1, 12},{131,  1,  6},{133,  1,  4},{129,255,  1},{132,  1,254},{134,255,254},{129,255,254},
+    {134,  1,254},{133,  1,  3},{129,255,  1},{132,255,254},{129,255,254},{131,  1,252},{133,  1,  5},{129,  1,  2},
+    {132,253,252},{132,  1,252},{134,253,252},{129,  1,252},{132,253,252},{  5,  1, 10},{  3,  1,254},{  2,  1,  5},
+    {  1,  1,  2},{  4,255,254},{  4,  1,254},{  6,255,254},{  7,  1,252},{  4,  1,252},{  6,253,252},{133,  1,252},
+    {135,  1,254},{134,  1,254},{129,255,  1},{132,255,254},{  3,  1, 10},{  5,  1,252},{  2,  1,  5},{  1,  1,  2},
+    {  4,253,252},{  4,  1,252},{  6,253,252},{  7,  1,252},{  4,  1,252},{  6,253,252},{131,  1,252},{133,  1,252},
+    {130,  1,  5},{129,  1,  2},{132,253,252},{132,  1,252},{134,253,252},{135,  1,252},{132,  1,252},{134,253,252}};
+
+    static const unsigned char table_7_12d_struct1[][3] =
+    {{  0,  1,181},{  5,  1, 53},{  2,  1, 35},{  9,  1, 26},{  1,  1, 17},{  6,  1, 10},{  3,  1,  4},{  4,253,  1},
+    { 10,  1,252},{ 11,255,252},{  8,  1,252},{ 10,  1,252},{ 11,255,  1},{  4,  1,252},{  7,255,254},{ 11,  1,252},
+    {  3,  1,  3},{  4,253,  1},{ 10,253,252},{  8,  1,252},{ 10,253,252},{  6,  1,252},{  7,  1,252},{  8,  1,252},
+    {  4,  1,  3},{  3,255,  1},{ 10,255,252},{ 10,  1,252},{ 11,255,252},{  3,  1,252},{  4,  1,252},{  1,  1,  3},
+    {  6,253,  1},{ 11,253,252},{  6,  1,252},{  7,  1,252},{  8,253,252},{  9,  1,252},{  7,  1,252},{  8,  1,252},
+    {  1,  1,  8},{ 10,  1,  4},{ 11,253,  1},{  6,  1,252},{  4,255,252},{  6,  1,252},{  3,  1,252},{  4,255,252},
+    {  6,  1,252},{  4,  1,  3},{  3,253,  1},{ 10,253,252},{ 10,  1,252},{ 11,253,252},{133,  1,107},{  9,  1, 52},
+    {131,  1, 35},{132,  1, 26},{ 11,  1, 19},{  1,  1,  9},{  8,  1,  4},{ 10,  1,252},{  2,255,  1},{  7,255,254},
+    {134,  1,252},{130,  1,252},{135,  1,254},{136,255,254},{  6,  1,  4},{  7,  1,252},{  8,  1,252},{ 10,255,254},
+    {134,  1,252},{130,  1,252},{135,  1,252},{129,255,  1},{136,255,254},{130,  1,252},{135,  1,252},{129,  1,  2},
+    {134,255,252},{134,  1,252},{136,255,252},{ 11,  1,252},{  8,  1,252},{ 10,  1,252},{  1,  1,  3},{  2,255,  1},
+    {  7,255,252},{  6,  1,252},{  7,255,252},{ 11,  1,252},{ 10,  1,252},{  3,  1,  8},{  1,  1,  4},{  2,253,  1},
+    {  7,  1,252},{  8,255,252},{  6,  1,252},{  7,  1,252},{  8,255,252},{  8,  1,252},{  1,  1,  3},{  2,253,  1},
+    {  7,253,252},{  6,  1,252},{  7,253,252},{137,  1, 40},{  2,  1, 27},{  1,  1, 18},{  4,  1,  9},{ 10,  1,  3},
+    {  3,  1,252},{ 11,255,252},{134,  1,252},{135,  1,252},{136,  1,252},{139,  1,254},{138,255,254},{134,  1,252},
+    {135,  1,252},{136,  1,252},{138,  1,  3},{132,255,  1},{139,255,254},{131,  1,252},{132,255,254},{134,  1,252},
+    {135,  1,252},{136,  1,252},{132,  1,  3},{131,255,  1},{138,255,252},{138,  1,252},{139,255,252},{134,  1,252},
+    {135,  1,252},{136,  1,  6},{132,  1,  3},{131,253,  1},{138,253,252},{138,  1,252},{139,253,252},{130,  1,252},
+    {129,  1,252},{131,  1,252},{132,255,252},{  2,  1,  6},{  1,  1,252},{  3,  1,252},{  4,  1,252},{ 10,  1,252},
+    { 11,253,252},{130,  1,252},{131,  1,252},{132,  1,252},{135,  1,252},{129,  1,  2},{134,253,252},{134,  1,252},
+    {136,253,252},{  2,  1, 13},{ 10,  1,252},{ 11,  1,252},{  9,  1,  7},{  1,  1,  3},{  3,253,  1},{  8,253,252},
+    {  6,  1,252},{  7,  1,252},{  8,253,252},{  1,  1,252},{  3,  1,252},{  4,253,252},{  9,  1,252},{  7,  1,252},
+    {  8,  1,252},{ 10,  1,252},{ 11,  1,252},{  1,253,  1},{  6,253,252},{128,  1,165},{  2,  1, 44},{  5,  1, 21},
+    {  7,  1, 13},{  6,  1,252},{  4,  1,  7},{  3,  1,  3},{  1,253,  1},{  8,253,252},{  9,  1,252},{  8,  1,252},
+    { 10,255,252},{  9,  1,252},{  8,  1,252},{ 10,  1,252},{ 11,255,252},{137,  1,252},{136,  1,252},{138,  1,252},
+    {139,  1,252},{135,  1,252},{129,255,  1},{134,255,252},{137,  1,252},{135,  1,252},{136,  1,252},{133,  1, 15},
+    {129,  1,  8},{138,  1,  4},{139,255,  1},{134,  1,252},{132,255,254},{134,  1,252},{131,  1,252},{132,255,254},
+    {134,  1,252},{132,  1,  3},{131,255,  1},{138,255,252},{138,  1,252},{139,255,252},{138,  1,252},{139,  1,252},
+    {129,253,  1},{134,253,252},{130,  1, 88},{  9,  1, 40},{  5,  1, 27},{129,  1, 18},{132,  1,  9},{138,  1,  3},
+    {131,  1,252},{139,255,252},{  6,  1,252},{  7,  1,252},{  8,  1,252},{ 11,  1,254},{ 10,255,254},{  6,  1,252},
+    {  7,  1,252},{  8,  1,252},{ 10,  1,  3},{  4,255,  1},{ 11,255,254},{  3,  1,252},{  4,255,254},{  6,  1,252},
+    {  7,  1,252},{  8,  1,252},{  4,  1,  3},{  3,255,  1},{ 10,255,252},{ 10,  1,252},{ 11,255,252},{131,  1,252},
+    {132,  1,252},{133,  1,  7},{129,  1,  3},{134,253,  1},{139,253,252},{134,  1,252},{135,  1,252},{136,255,252},
+    {129,  1,252},{138,  1,252},{139,253,252},{137,  1, 35},{133,  1, 26},{129,  1, 17},{134,  1, 10},{131,  1,  4},
+    {132,253,  1},{138,  1,252},{139,255,252},{136,  1,252},{138,  1,252},{139,255,  1},{132,  1,252},{135,255,254},
+    {139,  1,252},{131,  1,  3},{132,253,  1},{138,253,252},{136,  1,252},{138,253,252},{134,  1,252},{135,  1,252},
+    {136,  1,252},{132,  1,  3},{131,255,  1},{138,255,252},{138,  1,252},{139,255,252},{138,  1,252},{139,  1,252},
+    {129,  1,  3},{131,253,  1},{136,253,252},{134,  1,252},{135,  1,252},{136,253,252},{131,  1,252},{132,  1,252},
+    {133,  1,  7},{129,  1,  3},{134,253,  1},{139,253,252},{134,  1,252},{135,  1,252},{136,253,252},{129,  1,252},
+    {138,  1,252},{139,253,252},{137,  1, 22},{135,  1,252},{136,  1,252},{133,  1, 15},{129,  1,  8},{138,  1,  4},
+    {139,253,  1},{134,  1,252},{132,255,252},{134,  1,252},{131,  1,252},{132,255,252},{134,  1,252},{132,  1,  3},
+    {131,253,  1},{138,253,252},{138,  1,252},{139,253,252},{138,  1,252},{139,  1,252},{129,253,  1},{134,253,252},
+    {  5,  1,252},{  9,  1,252},{  6,  1,252},{  7,  1,252},{  8,  1,252},{  4,  1,  3},{  3,253,  1},{ 10,253,252},
+    { 10,  1,252},{ 11,253,252},{  5,  1, 22},{  9,  1, 13},{  6,  1,252},{  7,  1,252},{  4,  1,  7},{  3,  1,  4},
+    {  8,253,  1},{  1,  1,252},{  2,253,252},{  8,  1,252},{ 10,253,252},{ 11,  1,252},{  8,  1,252},{ 10,253,252},
+    {  2,  1,252},{  3,  1,252},{  4,  1,252},{  7,  1,252},{  1,  1,  2},{  6,253,252},{  6,  1,252},{  8,253,252},
+    {133,  1,252},{137,  1, 13},{134,  1,252},{135,  1,252},{132,  1,  7},{131,  1,  4},{136,253,  1},{129,  1,252},
+    {130,253,252},{136,  1,252},{138,253,252},{139,  1,252},{136,  1,252},{138,253,252},{130,  1,252},{131,  1,252},
+    {132,  1,252},{135,  1,252},{129,  1,  2},{134,253,252},{134,  1,252},{136,253,252}};
+
+    static const unsigned char table_7_12d_struct2[][3] =
+    {{  0,  1,181},{  5,  1, 53},{  2,  1, 35},{  9,  1, 26},{  1,  1, 17},{  6,  1, 10},{  3,  1,  4},{  4,255,  1},
+    { 10,  1,254},{ 11,255,254},{  8,  1,254},{ 10,  1,254},{ 11,255,  1},{  4,  1,254},{  7,255,254},{ 11,  1,254},
+    {  3,  1,  3},{  4,255,  1},{ 10,255,254},{  8,  1,254},{ 10,255,254},{  6,  1,254},{  7,  1,254},{  8,  1,254},
+    {  4,  1,  3},{  3,255,  1},{ 10,255,254},{ 10,  1,254},{ 11,255,254},{  3,  1,254},{  4,  1,254},{  1,  1,  3},
+    {  6,255,  1},{ 11,255,254},{  6,  1,254},{  7,  1,254},{  8,255,254},{  9,  1,254},{  7,  1,254},{  8,  1,254},
+    {  1,  1,  8},{ 10,  1,  4},{ 11,255,  1},{  6,  1,254},{  4,255,254},{  6,  1,254},{  3,  1,254},{  4,255,254},
+    {  6,  1,254},{  4,  1,  3},{  3,255,  1},{ 10,255,254},{ 10,  1,254},{ 11,255,254},{133,  1,107},{  9,  1, 52},
+    {131,  1, 35},{132,  1, 26},{ 11,  1, 19},{  1,  1,  9},{  8,  1,  4},{ 10,  1,254},{  2,255,  1},{  7,255,254},
+    {134,  1,254},{130,  1,254},{135,  1,254},{136,255,254},{  6,  1,  4},{  7,  1,254},{  8,  1,254},{ 10,255,254},
+    {134,  1,254},{130,  1,254},{135,  1,254},{129,255,  1},{136,255,254},{130,  1,254},{135,  1,254},{129,  1,  2},
+    {134,255,254},{134,  1,254},{136,255,254},{ 11,  1,254},{  8,  1,254},{ 10,  1,254},{  1,  1,  3},{  2,255,  1},
+    {  7,255,254},{  6,  1,254},{  7,255,254},{ 11,  1,254},{ 10,  1,254},{  3,  1,  8},{  1,  1,  4},{  2,255,  1},
+    {  7,  1,254},{  8,255,254},{  6,  1,254},{  7,  1,254},{  8,255,254},{  8,  1,254},{  1,  1,  3},{  2,255,  1},
+    {  7,255,254},{  6,  1,254},{  7,255,254},{137,  1, 40},{  2,  1, 27},{  1,  1, 18},{  4,  1,  9},{ 10,  1,  3},
+    {  3,  1,254},{ 11,255,254},{134,  1,254},{135,  1,254},{136,  1,254},{139,  1,254},{138,255,254},{134,  1,254},
+    {135,  1,254},{136,  1,254},{138,  1,  3},{132,255,  1},{139,255,254},{131,  1,254},{132,255,254},{134,  1,254},
+    {135,  1,254},{136,  1,254},{132,  1,  3},{131,255,  1},{138,255,254},{138,  1,254},{139,255,254},{134,  1,254},
+    {135,  1,254},{136,  1,  6},{132,  1,  3},{131,255,  1},{138,255,254},{138,  1,254},{139,255,254},{130,  1,254},
+    {129,  1,254},{131,  1,254},{132,255,254},{  2,  1,  6},{  1,  1,254},{  3,  1,254},{  4,  1,254},{ 10,  1,254},
+    { 11,255,254},{130,  1,252},{131,  1,254},{132,  1,254},{135,  1,254},{129,  1,  2},{134,255,254},{134,  1,254},
+    {136,255,254},{  2,  1, 13},{ 10,  1,254},{ 11,  1,254},{  9,  1,  7},{  1,  1,  3},{  3,255,  1},{  8,255,254},
+    {  6,  1,254},{  7,  1,254},{  8,255,254},{  1,  1,254},{  3,  1,254},{  4,255,254},{  9,  1,254},{  7,  1,254},
+    {  8,  1,254},{ 10,  1,254},{ 11,  1,254},{  1,255,  1},{  6,255,254},{128,  1,165},{  2,  1, 44},{  5,  1, 21},
+    {  7,  1, 13},{  6,  1,254},{  4,  1,  7},{  3,  1,  3},{  1,255,  1},{  8,255,254},{  9,  1,254},{  8,  1,254},
+    { 10,255,254},{  9,  1,254},{  8,  1,254},{ 10,  1,254},{ 11,255,254},{137,  1,254},{136,  1,254},{138,  1,254},
+    {139,  1,254},{135,  1,254},{129,255,  1},{134,255,254},{137,  1,254},{135,  1,254},{136,  1,254},{133,  1, 15},
+    {129,  1,  8},{138,  1,  4},{139,255,  1},{134,  1,254},{132,255,254},{134,  1,254},{131,  1,254},{132,255,254},
+    {134,  1,254},{132,  1,  3},{131,255,  1},{138,255,254},{138,  1,254},{139,255,254},{138,  1,254},{139,  1,254},
+    {129,255,  1},{134,255,254},{130,  1, 88},{  9,  1, 40},{  5,  1, 27},{129,  1, 18},{132,  1,  9},{138,  1,  3},
+    {131,  1,254},{139,255,254},{  6,  1,254},{  7,  1,254},{  8,  1,254},{ 11,  1,254},{ 10,255,254},{  6,  1,254},
+    {  7,  1,254},{  8,  1,254},{ 10,  1,  3},{  4,255,  1},{ 11,255,254},{  3,  1,254},{  4,255,254},{  6,  1,254},
+    {  7,  1,254},{  8,  1,254},{  4,  1,  3},{  3,255,  1},{ 10,255,254},{ 10,  1,254},{ 11,255,254},{131,  1,254},
+    {132,  1,254},{133,  1,  7},{129,  1,  3},{134,255,  1},{139,255,254},{134,  1,254},{135,  1,254},{136,255,254},
+    {129,  1,254},{138,  1,254},{139,255,254},{137,  1, 35},{133,  1, 26},{129,  1, 17},{134,  1, 10},{131,  1,  4},
+    {132,255,  1},{138,  1,254},{139,255,254},{136,  1,254},{138,  1,254},{139,255,  1},{132,  1,254},{135,255,254},
+    {139,  1,254},{131,  1,  3},{132,255,  1},{138,255,254},{136,  1,254},{138,255,254},{134,  1,254},{135,  1,254},
+    {136,  1,254},{132,  1,  3},{131,255,  1},{138,255,254},{138,  1,254},{139,255,254},{138,  1,254},{139,  1,254},
+    {129,  1,  3},{131,255,  1},{136,255,254},{134,  1,254},{135,  1,254},{136,255,254},{131,  1,254},{132,  1,254},
+    {133,  1,  7},{129,  1,  3},{134,255,  1},{139,255,254},{134,  1,254},{135,  1,254},{136,255,254},{129,  1,254},
+    {138,  1,254},{139,255,254},{137,  1, 22},{135,  1,254},{136,  1,254},{133,  1, 15},{129,  1,  8},{138,  1,  4},
+    {139,255,  1},{134,  1,254},{132,255,254},{134,  1,254},{131,  1,254},{132,255,254},{134,  1,254},{132,  1,  3},
+    {131,255,  1},{138,255,254},{138,  1,254},{139,255,254},{138,  1,254},{139,  1,254},{129,255,  1},{134,255,254},
+    {  5,  1,254},{  9,  1,252},{  6,  1,254},{  7,  1,254},{  8,  1,254},{  4,  1,  3},{  3,255,  1},{ 10,255,254},
+    { 10,  1,254},{ 11,255,254},{  5,  1, 22},{  9,  1, 13},{  6,  1,254},{  7,  1,254},{  4,  1,  7},{  3,  1,  4},
+    {  8,255,  1},{  1,  1,254},{  2,255,254},{  8,  1,254},{ 10,255,254},{ 11,  1,254},{  8,  1,254},{ 10,255,254},
+    {  2,  1,254},{  3,  1,254},{  4,  1,254},{  7,  1,254},{  1,  1,  2},{  6,255,254},{  6,  1,254},{  8,255,254},
+    {133,  1,252},{137,  1, 13},{134,  1,254},{135,  1,254},{132,  1,  7},{131,  1,  4},{136,255,  1},{129,  1,254},
+    {130,255,254},{136,  1,254},{138,255,254},{139,  1,254},{136,  1,254},{138,255,254},{130,  1,254},{131,  1,254},
+    {132,  1,254},{135,  1,254},{129,  1,  2},{134,255,254},{134,  1,254},{136,255,254}};
+
+    static const unsigned char table_7_12s_struct1[][3] =
+    {{  0,  1,145},{  2,  1, 99},{  5,  1, 47},{  9,  1, 35},{  7,  1, 24},{  1,  1, 16},{  6,  1,  9},{  3,  1,  4},
+    {  4,255,  1},{ 10,  1,252},{ 11,255,254},{  8,  1,252},{ 10,  1,252},{  4,255,  1},{ 11,255,254},{ 11,  1,252},
+    {  3,  1,  3},{  4,255,  1},{ 10,255,252},{  8,  1,252},{ 10,255,252},{  6,  1,252},{  8,  1,252},{  4,  1,  3},
+    {  3,255,  1},{ 10,255,252},{ 10,  1,252},{ 11,255,252},{  1,  1,252},{ 11,  1,  6},{  3,  1,  3},{  4,253,  1},
+    { 10,253,252},{  8,  1,252},{ 10,253,252},{  6,  1,252},{  3,  1,252},{  4,253,252},{  3,  1,252},{  4,  1,252},
+    {  7,  1,  6},{  1,  1,  3},{  6,253,  1},{ 11,253,252},{  6,  1,252},{  8,253,252},{  1,  1,252},{  6,253,  1},
+    { 11,253,252},{137,  1, 36},{135,  1, 30},{133,  1, 24},{  1,  1, 16},{  4,  1,  8},{ 10,  1,  3},{  3,  1,252},
+    { 11,255,254},{134,  1,252},{136,  1,252},{139,  1,254},{138,255,254},{134,  1,252},{136,  1,252},{138,  1,  3},
+    {132,255,  1},{139,255,254},{131,  1,252},{132,255,254},{134,  1,252},{136,  1,252},{132,  1,  3},{131,255,  1},
+    {138,255,252},{138,  1,252},{139,255,252},{  1,  1,252},{  3,  1,252},{  4,  1,252},{ 10,  1,252},{ 11,255,252},
+    {  1,  1,252},{  3,  1,252},{  4,  1,252},{ 10,  1,252},{ 11,253,252},{ 10,  1,252},{ 11,  1,252},{  9,  1, 10},
+    {  7,  1,  6},{  1,  1,  3},{  3,253,  1},{  8,253,252},{  6,  1,252},{  8,253,252},{  1,  1,252},{  3,253,  1},
+    {  8,253,252},{  1,  1,252},{  3,  1,252},{  4,253,252},{  7,  1, 22},{  9,  1,252},{  8,  1,252},{  5,  1, 15},
+    {  1,  1,  8},{ 10,  1,  4},{ 11,253,  1},{  6,  1,252},{  4,255,252},{  6,  1,252},{  3,  1,252},{  4,255,252},
+    {  6,  1,252},{  4,  1,  3},{  3,253,  1},{ 10,253,252},{ 10,  1,252},{ 11,253,252},{ 10,  1,252},{ 11,  1,252},
+    {  1,253,  1},{  6,253,252},{135,  1,252},{133,  1,252},{130,  1, 13},{134,  1,252},{132,  1,  7},{131,  1,  3},
+    {129,253,  1},{136,253,252},{137,  1,252},{136,  1,252},{138,255,252},{137,  1,252},{136,  1,252},{138,  1,252},
+    {139,255,252},{137,  1,252},{134,  1,252},{136,  1,252},{132,  1,  3},{131,253,  1},{138,253,252},{138,  1,252},
+    {139,253,252},{128,  1,155},{130,  1,109},{137,  1, 47},{133,  1, 35},{135,  1, 24},{129,  1, 16},{134,  1,  9},
+    {131,  1,  4},{132,255,  1},{138,  1,252},{139,255,254},{136,  1,252},{138,  1,252},{132,255,  1},{139,255,254},
+    {139,  1,252},{131,  1,  3},{132,255,  1},{138,255,252},{136,  1,252},{138,255,252},{134,  1,252},{136,  1,252},
+    {132,  1,  3},{131,255,  1},{138,255,252},{138,  1,252},{139,255,252},{129,  1,252},{139,  1,  6},{131,  1,  3},
+    {132,253,  1},{138,253,252},{136,  1,252},{138,253,252},{134,  1,252},{131,  1,252},{132,253,252},{138,  1,252},
+    {139,  1,252},{135,  1,  6},{129,  1,  3},{131,253,  1},{136,253,252},{134,  1,252},{136,253,252},{129,  1,252},
+    {131,253,  1},{136,253,252},{  9,  1, 46},{  5,  1, 30},{  7,  1, 24},{129,  1, 16},{132,  1,  8},{138,  1,  3},
+    {131,  1,252},{139,255,254},{  6,  1,252},{  8,  1,252},{ 11,  1,254},{ 10,255,254},{  6,  1,252},{  8,  1,252},
+    { 10,  1,  3},{  4,255,  1},{ 11,255,254},{  3,  1,252},{  4,255,254},{  6,  1,252},{  8,  1,252},{  4,  1,  3},
+    {  3,255,  1},{ 10,255,252},{ 10,  1,252},{ 11,255,252},{129,  1,252},{131,  1,252},{132,  1,252},{138,  1,252},
+    {139,255,252},{131,  1,252},{132,  1,252},{133,  1, 10},{135,  1,  6},{129,  1,  3},{134,255,  1},{139,255,252},
+    {134,  1,252},{136,255,252},{129,  1,252},{134,253,  1},{139,253,252},{129,  1,252},{138,  1,252},{139,253,252},
+    {131,  1,252},{132,  1,252},{133,  1, 10},{135,  1,  6},{129,  1,  3},{134,253,  1},{139,253,252},{134,  1,252},
+    {136,253,252},{129,  1,252},{134,253,  1},{139,253,252},{129,  1,252},{138,  1,252},{139,253,252},{  7,  1, 23},
+    {  5,  1,252},{  2,  1, 13},{  6,  1,252},{  4,  1,  7},{  3,  1,  3},{  1,253,  1},{  8,253,252},{  9,  1,252},
+    {  8,  1,252},{ 10,255,252},{  9,  1,252},{  8,  1,252},{ 10,  1,252},{ 11,255,252},{  9,  1,252},{  6,  1,252},
+    {  8,  1,252},{  4,  1,  3},{  3,253,  1},{ 10,253,252},{ 10,  1,252},{ 11,253,252},{135,  1,252},{137,  1,252},
+    {136,  1,252},{133,  1, 15},{129,  1,  8},{138,  1,  4},{139,253,  1},{134,  1,252},{132,255,252},{134,  1,252},
+    {131,  1,252},{132,255,252},{134,  1,252},{132,  1,  3},{131,253,  1},{138,253,252},{138,  1,252},{139,253,252},
+    {138,  1,252},{139,  1,252},{129,253,  1},{134,253,252},{  5,  1, 21},{  7,  1,252},{  9,  1, 12},{  6,  1,252},
+    {  4,  1,  7},{  3,  1,  4},{  8,253,  1},{  1,  1,252},{  2,253,252},{  8,  1,252},{ 10,253,252},{ 11,  1,252},
+    {  8,  1,252},{ 10,253,252},{  2,  1,252},{  3,  1,252},{  4,  1,252},{  1,  1,  2},{  6,253,252},{  6,  1,252},
+    {  8,253,252},{133,  1,252},{135,  1,252},{137,  1, 12},{134,  1,252},{132,  1,  7},{131,  1,  4},{136,253,  1},
+    {129,  1,252},{130,253,252},{136,  1,252},{138,253,252},{139,  1,252},{136,  1,252},{138,253,252},{130,  1,252},
+    {131,  1,252},{132,  1,252},{129,  1,  2},{134,253,252},{134,  1,252},{136,253,252}};
+
+    static const unsigned char table_7_12s_struct2[][3] =
+    {{  0,  1,146},{  2,  1,100},{  5,  1, 47},{  9,  1, 35},{  7,  1, 24},{  1,  1, 16},{  6,  1,  9},{  3,  1,  4},
+    {  4,255,  1},{ 10,  1,254},{ 11,255,254},{  8,  1,254},{ 10,  1,254},{  4,255,  1},{ 11,255,254},{ 11,  1,254},
+    {  3,  1,  3},{  4,255,  1},{ 10,255,254},{  8,  1,254},{ 10,255,254},{  6,  1,254},{  8,  1,254},{  4,  1,  3},
+    {  3,255,  1},{ 10,255,254},{ 10,  1,254},{ 11,255,254},{  1,  1,254},{ 11,  1,  6},{  3,  1,  3},{  4,255,  1},
+    { 10,255,254},{  8,  1,254},{ 10,255,254},{  6,  1,254},{  3,  1,254},{  4,255,254},{  3,  1,254},{  4,  1,254},
+    {  7,  1,  6},{  1,  1,  3},{  6,255,  1},{ 11,255,254},{  6,  1,254},{  8,255,254},{  1,  1,254},{  6,255,  1},
+    { 11,255,254},{135,  1, 40},{137,  1, 30},{133,  1, 24},{  1,  1, 16},{  4,  1,  8},{ 10,  1,  3},{  3,  1,254},
+    { 11,255,254},{134,  1,254},{136,  1,254},{139,  1,254},{138,255,254},{134,  1,254},{136,  1,254},{138,  1,  3},
+    {132,255,  1},{139,255,254},{131,  1,254},{132,255,254},{134,  1,254},{136,  1,254},{132,  1,  3},{131,255,  1},
+    {138,255,254},{138,  1,254},{139,255,254},{  1,  1,254},{  3,  1,254},{  4,  1,254},{ 10,  1,254},{ 11,255,254},
+    { 10,  1,254},{ 11,  1,254},{  9,  1,  4},{  1,  1,254},{  3,255,  1},{  8,255,254},{  1,  1,254},{  3,  1,254},
+    {  4,255,254},{ 10,  1,254},{ 11,  1,254},{  9,  1,  7},{  1,  1,  3},{  3,255,  1},{  8,255,254},{  6,  1,254},
+    {  8,  1,254},{  7,255,254},{  1,  1,254},{  3,  1,254},{  4,255,254},{  7,  1, 22},{  9,  1,254},{  8,  1,254},
+    {  5,  1, 15},{  1,  1,  8},{ 10,  1,  4},{ 11,255,  1},{  6,  1,254},{  4,255,254},{  6,  1,254},{  3,  1,254},
+    {  4,255,254},{  6,  1,254},{  4,  1,  3},{  3,255,  1},{ 10,255,254},{ 10,  1,254},{ 11,255,254},{ 10,  1,254},
+    { 11,  1,254},{  1,255,  1},{  6,255,254},{135,  1,254},{133,  1,254},{130,  1, 13},{134,  1,254},{132,  1,  7},
+    {131,  1,  3},{129,255,  1},{136,255,254},{137,  1,254},{136,  1,254},{138,255,254},{137,  1,254},{136,  1,254},
+    {138,  1,254},{139,255,254},{137,  1,254},{134,  1,254},{136,  1,254},{132,  1,  3},{131,255,  1},{138,255,254},
+    {138,  1,254},{139,255,254},{128,  1,129},{130,  1, 83},{139,  1, 52},{131,  1, 36},{133,  1, 19},{137,  1, 12},
+    {135,  1,  8},{129,  1,  3},{132,255,  1},{138,255,254},{134,  1,254},{136,  1,254},{132,255,  1},{138,255,254},
+    {129,  1,254},{132,255,  1},{138,255,254},{132,  1,254},{135,  1,  4},{129,255,  1},{134,  1,254},{136,255,254},
+    {129,255,254},{138,  1,  9},{137,  1,  6},{135,  1,  4},{129,255,  1},{134,  1,254},{136,255,254},{129,255,254},
+    {129,  1,254},{132,255,254},{  7,  1,254},{  9,  1,254},{  5,  1,254},{  4,  1,254},{  6,  1,254},{  8,  1,254},
+    { 10,255,254},{137,  1,  7},{136,  1,254},{138,  1,254},{135,  1,  3},{129,255,  1},{134,255,254},{129,255,254},
+    {  5,  1,254},{  7,  1,254},{  9,  1,254},{  4,  1,254},{  6,  1,254},{  8,  1,254},{  3,255,  1},{ 10,255,254},
+    {132,  1, 20},{133,  1, 12},{135,  1,  8},{134,  1,254},{131,  1,  3},{129,255,  1},{136,255,254},{137,  1,254},
+    {136,  1,254},{138,255,254},{129,  1,254},{134,  1,254},{131,255,254},{  7,  1,254},{  9,  1,254},{  5,  1,254},
+    {  6,  1,254},{  8,  1,254},{ 10,  1,254},{ 11,255,254},{  5,  1,254},{  7,  1,254},{  9,  1,254},{  6,  1,254},
+    {  8,  1,254},{ 10,  1,  3},{  4,255,  1},{ 11,255,252},{  3,  1,254},{  4,255,254},{  7,  1, 23},{  5,  1,254},
+    {  2,  1, 13},{  6,  1,254},{  4,  1,  7},{  3,  1,  3},{  1,255,  1},{  8,255,254},{  9,  1,254},{  8,  1,254},
+    { 10,255,254},{  9,  1,254},{  8,  1,254},{ 10,  1,254},{ 11,255,254},{  9,  1,254},{  6,  1,254},{  8,  1,254},
+    {  4,  1,  3},{  3,255,  1},{ 10,255,254},{ 10,  1,254},{ 11,255,254},{135,  1,254},{137,  1,254},{136,  1,254},
+    {133,  1, 15},{129,  1,  8},{138,  1,  4},{139,255,  1},{134,  1,254},{132,255,254},{134,  1,254},{131,  1,254},
+    {132,255,254},{134,  1,254},{132,  1,  3},{131,255,  1},{138,255,254},{138,  1,254},{139,255,254},{138,  1,254},
+    {139,  1,254},{129,255,  1},{134,255,254},{  5,  1, 21},{  7,  1,254},{  9,  1, 12},{  6,  1,254},{  4,  1,  7},
+    {  3,  1,  4},{  8,255,  1},{  1,  1,254},{  2,255,254},{  8,  1,254},{ 10,255,254},{ 11,  1,254},{  8,  1,254},
+    { 10,255,254},{  2,  1,254},{  3,  1,254},{  4,  1,254},{  1,  1,  2},{  6,255,254},{  6,  1,254},{  8,255,254},
+    {133,  1,252},{135,  1,254},{137,  1, 12},{134,  1,254},{132,  1,  7},{131,  1,  4},{136,255,  1},{129,  1,254},
+    {130,255,254},{136,  1,254},{138,255,254},{139,  1,254},{136,  1,254},{138,255,254},{130,  1,254},{131,  1,254},
+    {132,  1,254},{129,  1,  2},{134,255,254},{134,  1,254},{136,255,254}};
+
+    static const unsigned char table_9_16_struct[][3] =
+    {{  0,  1,211},{  2,  1,211},{  4,  1,136},{  5,  1, 78},{  7,  1, 35},{  3,  1, 17},{  1,  1,  7},{  6,  1,  3},
+    {  8,253,  1},{ 15,253,252},{ 13,  1,252},{ 14,  1,252},{ 15,253,252},{  8,  1,252},{  9,  1,252},{ 10,  1,252},
+    {  6,253,  1},{ 11,  1,252},{ 12,  1,252},{ 13,  1,252},{ 14,  1,252},{ 15,253,252},{ 10,  1,252},{ 11,  1,252},
+    { 12,  1,252},{  8,  1, 10},{  9,  1,  5},{  6,253,  1},{ 13,  1,252},{ 14,  1,252},{ 15,253,252},{  1,  1,252},
+    { 13,  1,252},{ 14,  1,252},{ 15,253,252},{  1,  1,252},{ 13,  1,252},{ 14,  1,252},{ 15,253,252},{135,  1, 26},
+    { 14,  1, 16},{ 15,  1,252},{  1,  1,  8},{  3,  1,  3},{  6,253,  1},{ 13,253,252},{ 10,  1,252},{ 11,  1,252},
+    { 12,  1,252},{ 13,253,252},{  8,  1,252},{  9,  1,252},{ 10,  1,252},{ 11,  1,252},{ 12,  1,252},{ 13,253,252},
+    {142,  1,252},{136,  1,252},{137,  1,252},{138,  1,252},{139,  1,252},{140,  1,252},{141,  1,252},{134,253,  1},
+    {143,253,252},{ 14,  1,252},{ 15,  1,252},{  1,  1,  8},{  3,  1,  3},{  6,253,  1},{ 13,253,252},{ 10,  1,252},
+    { 11,  1,252},{ 12,  1,252},{ 13,253,252},{  8,  1,252},{  9,  1,252},{ 10,  1,252},{ 11,  1,252},{ 12,  1,252},
+    { 13,253,252},{133,  1, 29},{ 12,  1, 18},{ 13,  1,252},{ 14,  1,252},{ 15,  1,  9},{  1,  1,  4},{  3,253,  1},
+    { 10,  1,252},{ 11,253,252},{  8,  1,252},{  9,  1,252},{ 10,  1,252},{ 11,253,252},{  6,  1,252},{  7,  1,252},
+    {  8,  1,252},{  9,  1,252},{ 10,  1,252},{ 11,253,252},{140,  1,252},{135,  1,252},{136,  1,252},{137,  1,252},
+    {138,  1,252},{139,  1,252},{141,  1,252},{134,253,  1},{142,  1,252},{143,253,252},{ 12,  1, 18},{ 13,  1,252},
+    { 14,  1,252},{ 15,  1,  9},{  1,  1,  4},{  3,253,  1},{ 10,  1,252},{ 11,253,252},{  8,  1,252},{  9,  1,252},
+    { 10,  1,252},{ 11,253,252},{  6,  1,252},{  7,  1,252},{  8,  1,252},{  9,  1,252},{ 10,  1,252},{ 11,253,252},
+    {140,  1,252},{135,  1,252},{136,  1,252},{137,  1,252},{138,  1,252},{139,  1,252},{141,  1,252},{142,  1,252},
+    {134,253,  1},{143,253,252},{132,  1, 39},{ 11,  1, 22},{ 12,  1,252},{ 13,  1,252},{ 10,  1, 15},{ 14,  1,  9},
+    { 15,  1,  4},{  1,253,  1},{  8,  1,252},{  9,253,252},{  6,  1,252},{  7,  1,252},{  8,  1,252},{  9,253,252},
+    {  5,  1,252},{  6,  1,252},{  7,  1,252},{  8,  1,252},{  9,253,252},{  1,  1,252},{  3,  1,252},{ 14,  1,252},
+    { 15,253,252},{139,  1,252},{135,  1,252},{136,  1,252},{137,  1,252},{138,  1,252},{134,  1,  7},{133,  1,  3},
+    {131,253,  1},{140,253,252},{140,  1,252},{141,  1,252},{142,253,252},{140,  1,252},{141,  1,252},{142,  1,252},
+    {143,253,252},{ 11,  1, 22},{ 12,  1,252},{ 13,  1,252},{ 10,  1, 15},{ 14,  1,  9},{ 15,  1,  4},{  1,253,  1},
+    {  8,  1,252},{  9,253,252},{  6,  1,252},{  7,  1,252},{  8,  1,252},{  9,253,252},{  5,  1,252},{  6,  1,252},
+    {  7,  1,252},{  8,  1,252},{  9,253,252},{  1,  1,252},{  3,  1,252},{ 14,  1,252},{ 15,253,252},{139,  1,252},
+    {135,  1,252},{136,  1,252},{137,  1,252},{138,  1,252},{140,  1,252},{141,  1,252},{134,  1,  3},{133,253,  1},
+    {142,253,252},{142,  1,252},{143,253,252},{  0,  1,102},{130,  1, 55},{  9,  1, 27},{ 10,  1,252},{ 11,  1,252},
+    {  8,  1, 19},{ 12,  1, 13},{ 13,  1,  8},{ 14,  1,  4},{ 15,253,  1},{  6,  1,252},{  7,253,252},{  5,  1,252},
+    {  6,  1,252},{  7,253,252},{  4,  1,252},{  5,  1,252},{  6,  1,252},{  7,253,252},{  3,  1,252},{  4,  1,252},
+    {  5,  1,252},{  6,  1,252},{  7,253,252},{  1,  1,252},{ 12,  1,252},{ 13,  1,252},{ 14,  1,252},{ 15,253,252},
+    {137,  1,252},{135,  1,252},{136,  1,252},{134,  1, 18},{133,  1, 12},{132,  1,  7},{131,  1,  3},{129,253,  1},
+    {138,253,252},{138,  1,252},{139,  1,252},{140,253,252},{138,  1,252},{139,  1,252},{140,  1,252},{141,253,252},
+    {138,  1,252},{139,  1,252},{140,  1,252},{141,  1,252},{142,253,252},{138,  1,252},{139,  1,252},{140,  1,252},
+    {141,  1,252},{142,  1,252},{143,253,252},{  9,  1, 27},{ 10,  1,252},{ 11,  1,252},{  8,  1, 19},{ 12,  1, 13},
+    { 13,  1,  8},{ 14,  1,  4},{ 15,253,  1},{  6,  1,252},{  7,253,252},{  5,  1,252},{  6,  1,252},{  7,253,252},
+    {  4,  1,252},{  5,  1,252},{  6,  1,252},{  7,253,252},{  3,  1,252},{  4,  1,252},{  5,  1,252},{  6,  1,252},
+    {  7,253,252},{  1,  1,252},{ 12,  1,252},{ 13,  1,252},{ 14,  1,252},{ 15,253,252},{137,  1,252},{135,  1,252},
+    {136,  1,252},{138,  1,252},{139,  1,252},{134,  1, 10},{133,  1,  6},{132,  1,  3},{131,253,  1},{140,253,252},
+    {140,  1,252},{141,253,252},{140,  1,252},{141,  1,252},{142,253,252},{140,  1,252},{141,  1,252},{142,  1,252},
+    {143,253,252},{128,  1, 56},{  2,  1, 56},{  9,  1, 27},{  7,  1,252},{  8,  1,252},{  6,  1, 18},{  5,  1, 12},
+    {  4,  1,  7},{  3,  1,  3},{  1,253,  1},{ 10,253,252},{ 10,  1,252},{ 11,  1,252},{ 12,253,252},{ 10,  1,252},
+    { 11,  1,252},{ 12,  1,252},{ 13,253,252},{ 10,  1,252},{ 11,  1,252},{ 12,  1,252},{ 13,  1,252},{ 14,253,252},
+    { 10,  1,252},{ 11,  1,252},{ 12,  1,252},{ 13,  1,252},{ 14,  1,252},{ 15,253,252},{137,  1,252},{138,  1,252},
+    {139,  1,252},{136,  1, 19},{140,  1, 13},{141,  1,  8},{142,  1,  4},{143,253,  1},{134,  1,252},{135,253,252},
+    {133,  1,252},{134,  1,252},{135,253,252},{132,  1,252},{133,  1,252},{134,  1,252},{135,253,252},{131,  1,252},
+    {132,  1,252},{133,  1,252},{134,  1,252},{135,253,252},{129,  1,252},{140,  1,252},{141,  1,252},{142,  1,252},
+    {143,253,252},{128,  1,211},{130,  1,211},{  4,  1, 39},{ 11,  1, 16},{  7,  1,252},{  8,  1,252},{  9,  1,252},
+    { 10,  1,252},{  6,  1,  7},{  5,  1,  3},{  3,253,  1},{ 12,253,252},{ 12,  1,252},{ 13,  1,252},{ 14,253,252},
+    { 12,  1,252},{ 13,  1,252},{ 14,  1,252},{ 15,253,252},{139,  1,252},{140,  1,252},{141,  1,252},{138,  1, 15},
+    {142,  1,  9},{143,  1,  4},{129,253,  1},{136,  1,252},{137,253,252},{134,  1,252},{135,  1,252},{136,  1,252},
+    {137,253,252},{133,  1,252},{134,  1,252},{135,  1,252},{136,  1,252},{137,253,252},{129,  1,252},{131,  1,252},
+    {142,  1,252},{143,253,252},{132,  1,136},{  5,  1, 29},{ 12,  1, 10},{  7,  1,252},{  8,  1,252},{  9,  1,252},
+    { 10,  1,252},{ 11,  1,252},{ 13,  1,252},{  6,253,  1},{ 14,  1,252},{ 15,253,252},{140,  1,252},{141,  1,252},
+    {142,  1,252},{143,  1,  9},{129,  1,  4},{131,253,  1},{138,  1,252},{139,253,252},{136,  1,252},{137,  1,252},
+    {138,  1,252},{139,253,252},{134,  1,252},{135,  1,252},{136,  1,252},{137,  1,252},{138,  1,252},{139,253,252},
+    {133,  1, 78},{  7,  1, 26},{ 14,  1,  9},{  8,  1,252},{  9,  1,252},{ 10,  1,252},{ 11,  1,252},{ 12,  1,252},
+    { 13,  1,252},{  6,253,  1},{ 15,253,252},{142,  1,252},{143,  1,252},{129,  1,  8},{131,  1,  3},{134,253,  1},
+    {141,253,252},{138,  1,252},{139,  1,252},{140,  1,252},{141,253,252},{136,  1,252},{137,  1,252},{138,  1,252},
+    {139,  1,252},{140,  1,252},{141,253,252},{135,  1, 35},{131,  1, 17},{129,  1,  7},{134,  1,  3},{136,253,  1},
+    {143,253,252},{141,  1,252},{142,  1,252},{143,253,252},{136,  1,252},{137,  1,252},{138,  1,252},{134,253,  1},
+    {139,  1,252},{140,  1,252},{141,  1,252},{142,  1,252},{143,253,252},{138,  1,252},{139,  1,252},{140,  1,252},
+    {136,  1, 10},{137,  1,  5},{134,253,  1},{141,  1,252},{142,  1,252},{143,253,252},{129,  1,252},{141,  1,252},
+    {142,  1,252},{143,253,252},{129,  1,252},{141,  1,252},{142,  1,252},{143,253,252},{142,  1,252},{143,  1,252},
+    {129,  1,  8},{131,  1,  3},{134,253,  1},{141,253,252},{138,  1,252},{139,  1,252},{140,  1,252},{141,253,252},
+    {136,  1,252},{137,  1,252},{138,  1,252},{139,  1,252},{140,  1,252},{141,253,252},{ 12,  1, 10},{  7,  1,252},
+    {  8,  1,252},{  9,  1,252},{ 10,  1,252},{ 11,  1,252},{ 13,  1,252},{ 14,  1,252},{  6,253,  1},{ 15,253,252},
+    {140,  1,252},{141,  1,252},{142,  1,252},{143,  1,  9},{129,  1,  4},{131,253,  1},{138,  1,252},{139,253,252},
+    {136,  1,252},{137,  1,252},{138,  1,252},{139,253,252},{134,  1,252},{135,  1,252},{136,  1,252},{137,  1,252},
+    {138,  1,252},{139,253,252},{ 11,  1, 12},{  7,  1,252},{  8,  1,252},{  9,  1,252},{ 10,  1,252},{ 12,  1,252},
+    { 13,  1,252},{  6,  1,  3},{  5,253,  1},{ 14,253,252},{ 14,  1,252},{ 15,253,252},{139,  1,252},{140,  1,252},
+    {141,  1,252},{138,  1, 15},{142,  1,  9},{143,  1,  4},{129,253,  1},{136,  1,252},{137,253,252},{134,  1,252},
+    {135,  1,252},{136,  1,252},{137,253,252},{133,  1,252},{134,  1,252},{135,  1,252},{136,  1,252},{137,253,252},
+    {129,  1,252},{131,  1,252},{142,  1,252},{143,253,252},{128,  1, 47},{  9,  1, 19},{  7,  1,252},{  8,  1,252},
+    { 10,  1,252},{ 11,  1,252},{  6,  1, 10},{  5,  1,  6},{  4,  1,  3},{  3,253,  1},{ 12,253,252},{ 12,  1,252},
+    { 13,253,252},{ 12,  1,252},{ 13,  1,252},{ 14,253,252},{ 12,  1,252},{ 13,  1,252},{ 14,  1,252},{ 15,253,252},
+    {137,  1,252},{138,  1,252},{139,  1,252},{136,  1, 19},{140,  1, 13},{141,  1,  8},{142,  1,  4},{143,253,  1},
+    {134,  1,252},{135,253,252},{133,  1,252},{134,  1,252},{135,253,252},{132,  1,252},{133,  1,252},{134,  1,252},
+    {135,253,252},{131,  1,252},{132,  1,252},{133,  1,252},{134,  1,252},{135,253,252},{129,  1,252},{140,  1,252},
+    {141,  1,252},{142,  1,252},{143,253,252},{  7,  1, 30},{  8,  1,252},{  9,  1,252},{  6,  1, 21},{  5,  1, 15},
+    {  4,  1, 10},{  3,  1,  6},{  2,  1,  3},{  1,253,  1},{ 10,253,252},{ 10,  1,252},{ 11,253,252},{ 10,  1,252},
+    { 11,  1,252},{ 12,253,252},{ 10,  1,252},{ 11,  1,252},{ 12,  1,252},{ 13,253,252},{ 10,  1,252},{ 11,  1,252},
+    { 12,  1,252},{ 13,  1,252},{ 14,253,252},{ 10,  1,252},{ 11,  1,252},{ 12,  1,252},{ 13,  1,252},{ 14,  1,252},
+    { 15,253,252},{135,  1,252},{136,  1,252},{137,  1,252},{134,  1, 21},{133,  1, 15},{132,  1, 10},{131,  1,  6},
+    {130,  1,  3},{129,253,  1},{138,253,252},{138,  1,252},{139,253,252},{138,  1,252},{139,  1,252},{140,253,252},
+    {138,  1,252},{139,  1,252},{140,  1,252},{141,253,252},{138,  1,252},{139,  1,252},{140,  1,252},{141,  1,252},
+    {142,253,252},{138,  1,252},{139,  1,252},{140,  1,252},{141,  1,252},{142,  1,252},{143,253,252}};
+    switch(agasttype) {
+      case AgastFeatureDetector::AGAST_5_8:
+        agastbase=0;
+        table_struct1=(unsigned char *)(table_5_8_struct1);
+        table_struct2=(unsigned char *)(table_5_8_struct2);
+        break;
+      case AgastFeatureDetector::AGAST_7_12d:
+        agastbase=2;
+        table_struct1=(unsigned char *)(table_7_12d_struct1);
+        table_struct2=(unsigned char *)(table_7_12d_struct2);
+        break;
+      case AgastFeatureDetector::AGAST_7_12s:
+        agastbase=1;
+        table_struct1=(unsigned char *)(table_7_12s_struct1);
+        table_struct2=(unsigned char *)(table_7_12s_struct2);
+        break;
+      case AgastFeatureDetector::OAST_9_16:
+      default:
+        agastbase=2;
+        table_struct1=(unsigned char *)(table_9_16_struct);
+        table_struct2=(unsigned char *)(table_9_16_struct);
+        break;
+    }
+
+#else //AGAST_TREE
+    int result;
+    unsigned long *table_struct1;
+    unsigned long *table_struct2;
+    static const unsigned long table_5_8_struct1[] =
+    {
+        0x00010026,0x20020017,0x3003000c,0x50040009,0x10050007,0x406f0006,0x706f006c,0x4008006c,
+        0x606f006c,0x100a006c,0x406d000b,0x706d006c,0x700d0012,0x600e006c,0x500f0011,0x106f0010,
+        0x406f006c,0x106d006c,0x5013106c,0x3014106c,0x7015106c,0x4016106c,0x606f106e,0x5018001c,
+        0x7019006c,0x601a006c,0x106d001b,0x406d006c,0x501d106c,0x301e106c,0x201f1023,0x10201021,
+        0x406f106c,0x4022106c,0x606f106c,0x7024106c,0x4025106c,0x606f106c,0x00271058,0x20281049,
+        0x70290035,0x302a1031,0x502b102f,0x102c102d,0x406f106e,0x402e106c,0x606f106e,0x1030106c,
+        0x406f106c,0x5032006c,0x3033006c,0x4034006c,0x606f006e,0x70361041,0x3037103c,0x5038103b,
+        0x106f1039,0x403a106c,0x606f106e,0x106d106c,0x603d106c,0x503e1040,0x106f103f,0x406f106c,
+        0x106d106c,0x3042106c,0x50431047,0x10441045,0x406f106c,0x4046106c,0x606f106c,0x1048106c,
+        0x406d106c,0x504a0053,0x304b006c,0x204c0050,0x104d004e,0x406f006c,0x404f006c,0x606f006c,
+        0x7051006c,0x4052006c,0x606f006c,0x5054106c,0x7055106c,0x6056106c,0x106d1057,0x406d106c,
+        0x30590062,0x505a006c,0x205b005f,0x105c005d,0x406d006c,0x405e006c,0x606d006c,0x7060006c,
+        0x4061006c,0x606d006c,0x3063106c,0x5064106c,0x20651069,0x10661067,0x406d106c,0x4068106c,
+        0x606d106c,0x706a106c,0x406b106c,0x606d106c,0x000000fc,0x000000fd,0x000000fe,0x000000ff
+    };
+
+    static const unsigned long table_5_8_struct2[] =
+    {
+        0x0001002a,0x2002001b,0x30030010,0x5004000c,0x70050008,0x10730006,0x40070072,0x60730072,
+        0x1009000a,0x40730072,0x400b0072,0x60730072,0x700d000e,0x10730072,0x100f0072,0x40730072,
+        0x70110016,0x60120072,0x50130015,0x10730014,0x40730072,0x10730072,0x50171072,0x30181070,
+        0x70191070,0x401a1072,0x60731072,0x501c0020,0x701d0072,0x601e0072,0x1073001f,0x40730072,
+        0x50211070,0x30221072,0x20231027,0x10241025,0x40731072,0x40261072,0x60731072,0x70281070,
+        0x40291070,0x60711070,0x002b105c,0x202c104d,0x702d0039,0x302e1035,0x502f1033,0x10301031,
+        0x40731072,0x40321072,0x60731072,0x10341072,0x40731072,0x50360072,0x30370070,0x40380072,
+        0x60730072,0x703a1045,0x303b1040,0x503c103f,0x1073103d,0x403e1072,0x60731072,0x10731072,
+        0x60411072,0x50421044,0x10731043,0x40731072,0x10731072,0x30461070,0x5047104b,0x10481049,
+        0x40711070,0x404a1070,0x60711070,0x104c1070,0x40711070,0x504e0057,0x304f0072,0x20500054,
+        0x10510052,0x40730072,0x40530072,0x60730072,0x70550070,0x40560070,0x60710070,0x50581070,
+        0x70591072,0x605a1072,0x1073105b,0x40731072,0x305d0066,0x505e0070,0x205f0063,0x10600061,
+        0x40710070,0x40620070,0x60710070,0x70640070,0x40650070,0x60710070,0x30671070,0x50681070,
+        0x2069106d,0x106a106b,0x40711070,0x406c1070,0x60711070,0x706e1070,0x406f1070,0x60711070,
+        0x000000fc,0x000000fd,0x000000fe,0x000000ff
+    };
+
+    static const unsigned long table_7_12d_struct1[] =
+    {
+        0x000100b5,0x50020036,0x20030025,0x9004001d,0x10050015,0x6006000f,0x3007000a,0x41870008,
+        0xa0090186,0xb1890186,0x800b0186,0xa00c0186,0xb189000d,0x400e0186,0x71890188,0xb0100186,
+        0x30110013,0x41870012,0xa1870186,0x80140186,0xa1870186,0x60160186,0x70170186,0x80180186,
+        0x4019001b,0x3189001a,0xa1890186,0xa01c0186,0xb1890186,0x301e0186,0x401f0186,0x10200022,
+        0x61870021,0xb1870186,0x60230186,0x70240186,0x81870186,0x90260186,0x70270186,0x80280186,
+        0x10290030,0xa02a002d,0xb187002b,0x602c0186,0x41890186,0x602e0186,0x302f0186,0x41890186,
+        0x60310186,0x40320034,0x31870033,0xa1870186,0xa0350186,0xb1870186,0x503710a1,0x9038006b,
+        0x3039105b,0x403a1053,0xb03b004d,0x103c0044,0x803d0040,0xa03e0186,0x2189003f,0x71890188,
+        0x60411186,0x20421186,0x70431188,0x81891188,0x60450048,0x70460186,0x80470186,0xa1890188,
+        0x60491186,0x204a1186,0x704b1186,0x1189104c,0x81891188,0x204e1186,0x704f1186,0x10501051,
+        0x61891186,0x60521186,0x81891186,0xb0540186,0x80550186,0xa0560186,0x10570059,0x21890058,
+        0x71890186,0x605a0186,0x71890186,0xb05c0186,0xa05d0186,0x305e0065,0x105f0062,0x21870060,
+        0x70610186,0x81890186,0x60630186,0x70640186,0x81890186,0x80660186,0x10670069,0x21870068,
+        0x71870186,0x606a0186,0x71870186,0x906c1093,0x206d0087,0x106e007f,0x406f0077,0xa0700072,
+        0x30710186,0xb1890186,0x60731186,0x70741186,0x80751186,0xb0761188,0xa1891188,0x60781186,
+        0x70791186,0x807a1186,0xa07b107d,0x4189107c,0xb1891188,0x307e1186,0x41891188,0x60801186,
+        0x70811186,0x80821186,0x40831085,0x31891084,0xa1891186,0xa0861186,0xb1891186,0x60881186,
+        0x70891186,0x808a108f,0x408b108d,0x3187108c,0xa1871186,0xa08e1186,0xb1871186,0x20901186,
+        0x10911186,0x30921186,0x41891186,0x20940099,0x10950186,0x30960186,0x40970186,0xa0980186,
+        0xb1870186,0x209a1186,0x309b1186,0x409c1186,0x709d1186,0x109e109f,0x61871186,0x60a01186,
+        0x81871186,0x20a200ae,0xa0a30186,0xb0a40186,0x90a500ab,0x10a600a8,0x318700a7,0x81870186,
+        0x60a90186,0x70aa0186,0x81870186,0x10ac0186,0x30ad0186,0x41870186,0x90af0186,0x70b00186,
+        0x80b10186,0xa0b20186,0xb0b30186,0x118700b4,0x61870186,0x00b6115a,0x20b700e2,0x50b800cc,
+        0x70b900c5,0x60ba0186,0x40bb00c1,0x30bc00be,0x118700bd,0x81870186,0x90bf0186,0x80c00186,
+        0xa1890186,0x90c20186,0x80c30186,0xa0c40186,0xb1890186,0x90c61186,0x80c71186,0xa0c81186,
+        0xb0c91186,0x70ca1186,0x118910cb,0x61891186,0x90cd1186,0x70ce1186,0x80cf1186,0x50d010de,
+        0x10d110d8,0xa0d210d5,0xb18910d3,0x60d41186,0x41891188,0x60d61186,0x30d71186,0x41891188,
+        0x60d91186,0x40da10dc,0x318910db,0xa1891186,0xa0dd1186,0xb1891186,0xa0df1186,0xb0e01186,
+        0x118710e1,0x61871186,0x20e3113a,0x90e4010b,0x50e500ff,0x10e610f7,0x40e710ef,0xa0e810ea,
+        0x30e91186,0xb1891186,0x60eb0186,0x70ec0186,0x80ed0186,0xb0ee0188,0xa1890188,0x60f00186,
+        0x70f10186,0x80f20186,0xa0f300f5,0x418900f4,0xb1890188,0x30f60186,0x41890188,0x60f80186,
+        0x70f90186,0x80fa0186,0x40fb00fd,0x318900fc,0xa1890186,0xa0fe0186,0xb1890186,0x31001186,
+        0x41011186,0x51021108,0x11031105,0x61871104,0xb1871186,0x61061186,0x71071186,0x81891186,
+        0x11091186,0xa10a1186,0xb1871186,0x910c112e,0x510d1126,0x110e111e,0x610f1118,0x31101113,
+        0x41871111,0xa1121186,0xb1891186,0x81141186,0xa1151186,0xb1891116,0x41171186,0x71891188,
+        0xb1191186,0x311a111c,0x4187111b,0xa1871186,0x811d1186,0xa1871186,0x611f1186,0x71201186,
+        0x81211186,0x41221124,0x31891123,0xa1891186,0xa1251186,0xb1891186,0xa1271186,0xb1281186,
+        0x1129112b,0x3187112a,0x81871186,0x612c1186,0x712d1186,0x81871186,0x312f1186,0x41301186,
+        0x51311137,0x11321134,0x61871133,0xb1871186,0x61351186,0x71361186,0x81871186,0x11381186,
+        0xa1391186,0xb1871186,0x913b1150,0x713c1186,0x813d1186,0x513e114c,0x113f1146,0xa1401143,
+        0xb1871141,0x61421186,0x41891186,0x61441186,0x31451186,0x41891186,0x61471186,0x4148114a,
+        0x31871149,0xa1871186,0xa14b1186,0xb1871186,0xa14d1186,0xb14e1186,0x1187114f,0x61871186,
+        0x51510186,0x91520186,0x61530186,0x71540186,0x81550186,0x41560158,0x31870157,0xa1870186,
+        0xa1590186,0xb1870186,0x515b0170,0x915c0168,0x615d0186,0x715e0186,0x415f0165,0x31600163,
+        0x81870161,0x11620186,0x21870186,0x81640186,0xa1870186,0xb1660186,0x81670186,0xa1870186,
+        0x21690186,0x316a0186,0x416b0186,0x716c0186,0x116d016e,0x61870186,0x616f0186,0x81870186,
+        0x51711186,0x9172117e,0x61731186,0x71741186,0x4175117b,0x31761179,0x81871177,0x11781186,
+        0x21871186,0x817a1186,0xa1871186,0xb17c1186,0x817d1186,0xa1871186,0x217f1186,0x31801186,
+        0x41811186,0x71821186,0x11831184,0x61871186,0x61851186,0x81871186,0x000000fc,0x000000fd,
+        0x000000fe,0x000000ff
+    };
+
+    static const unsigned long table_7_12d_struct2[] =
+    {
+        0x000100b5,0x50020036,0x20030025,0x9004001d,0x10050015,0x6006000f,0x3007000a,0x41890008,
+        0xa0090188,0xb1890188,0x800b0188,0xa00c0188,0xb189000d,0x400e0188,0x71890188,0xb0100188,
+        0x30110013,0x41890012,0xa1890188,0x80140188,0xa1890188,0x60160188,0x70170188,0x80180188,
+        0x4019001b,0x3189001a,0xa1890188,0xa01c0188,0xb1890188,0x301e0188,0x401f0188,0x10200022,
+        0x61890021,0xb1890188,0x60230188,0x70240188,0x81890188,0x90260188,0x70270188,0x80280188,
+        0x10290030,0xa02a002d,0xb189002b,0x602c0188,0x41890188,0x602e0188,0x302f0188,0x41890188,
+        0x60310188,0x40320034,0x31890033,0xa1890188,0xa0350188,0xb1890188,0x503710a1,0x9038006b,
+        0x3039105b,0x403a1053,0xb03b004d,0x103c0044,0x803d0040,0xa03e0188,0x2189003f,0x71890188,
+        0x60411188,0x20421188,0x70431188,0x81891188,0x60450048,0x70460188,0x80470188,0xa1890188,
+        0x60491188,0x204a1188,0x704b1188,0x1189104c,0x81891188,0x204e1188,0x704f1188,0x10501051,
+        0x61891188,0x60521188,0x81891188,0xb0540188,0x80550188,0xa0560188,0x10570059,0x21890058,
+        0x71890188,0x605a0188,0x71890188,0xb05c0188,0xa05d0188,0x305e0065,0x105f0062,0x21890060,
+        0x70610188,0x81890188,0x60630188,0x70640188,0x81890188,0x80660188,0x10670069,0x21890068,
+        0x71890188,0x606a0188,0x71890188,0x906c1093,0x206d0087,0x106e007f,0x406f0077,0xa0700072,
+        0x30710188,0xb1890188,0x60731188,0x70741188,0x80751188,0xb0761188,0xa1891188,0x60781188,
+        0x70791188,0x807a1188,0xa07b107d,0x4189107c,0xb1891188,0x307e1188,0x41891188,0x60801188,
+        0x70811188,0x80821188,0x40831085,0x31891084,0xa1891188,0xa0861188,0xb1891188,0x60881188,
+        0x70891188,0x808a108f,0x408b108d,0x3189108c,0xa1891188,0xa08e1188,0xb1891188,0x20901188,
+        0x10911188,0x30921188,0x41891188,0x20940099,0x10950188,0x30960188,0x40970188,0xa0980188,
+        0xb1890188,0x209a1186,0x309b1188,0x409c1188,0x709d1188,0x109e109f,0x61891188,0x60a01188,
+        0x81891188,0x20a200ae,0xa0a30188,0xb0a40188,0x90a500ab,0x10a600a8,0x318900a7,0x81890188,
+        0x60a90188,0x70aa0188,0x81890188,0x10ac0188,0x30ad0188,0x41890188,0x90af0188,0x70b00188,
+        0x80b10188,0xa0b20188,0xb0b30188,0x118900b4,0x61890188,0x00b6115a,0x20b700e2,0x50b800cc,
+        0x70b900c5,0x60ba0188,0x40bb00c1,0x30bc00be,0x118900bd,0x81890188,0x90bf0188,0x80c00188,
+        0xa1890188,0x90c20188,0x80c30188,0xa0c40188,0xb1890188,0x90c61188,0x80c71188,0xa0c81188,
+        0xb0c91188,0x70ca1188,0x118910cb,0x61891188,0x90cd1188,0x70ce1188,0x80cf1188,0x50d010de,
+        0x10d110d8,0xa0d210d5,0xb18910d3,0x60d41188,0x41891188,0x60d61188,0x30d71188,0x41891188,
+        0x60d91188,0x40da10dc,0x318910db,0xa1891188,0xa0dd1188,0xb1891188,0xa0df1188,0xb0e01188,
+        0x118910e1,0x61891188,0x20e3113a,0x90e4010b,0x50e500ff,0x10e610f7,0x40e710ef,0xa0e810ea,
+        0x30e91188,0xb1891188,0x60eb0188,0x70ec0188,0x80ed0188,0xb0ee0188,0xa1890188,0x60f00188,
+        0x70f10188,0x80f20188,0xa0f300f5,0x418900f4,0xb1890188,0x30f60188,0x41890188,0x60f80188,
+        0x70f90188,0x80fa0188,0x40fb00fd,0x318900fc,0xa1890188,0xa0fe0188,0xb1890188,0x31001188,
+        0x41011188,0x51021108,0x11031105,0x61891104,0xb1891188,0x61061188,0x71071188,0x81891188,
+        0x11091188,0xa10a1188,0xb1891188,0x910c112e,0x510d1126,0x110e111e,0x610f1118,0x31101113,
+        0x41891111,0xa1121188,0xb1891188,0x81141188,0xa1151188,0xb1891116,0x41171188,0x71891188,
+        0xb1191188,0x311a111c,0x4189111b,0xa1891188,0x811d1188,0xa1891188,0x611f1188,0x71201188,
+        0x81211188,0x41221124,0x31891123,0xa1891188,0xa1251188,0xb1891188,0xa1271188,0xb1281188,
+        0x1129112b,0x3189112a,0x81891188,0x612c1188,0x712d1188,0x81891188,0x312f1188,0x41301188,
+        0x51311137,0x11321134,0x61891133,0xb1891188,0x61351188,0x71361188,0x81891188,0x11381188,
+        0xa1391188,0xb1891188,0x913b1150,0x713c1188,0x813d1188,0x513e114c,0x113f1146,0xa1401143,
+        0xb1891141,0x61421188,0x41891188,0x61441188,0x31451188,0x41891188,0x61471188,0x4148114a,
+        0x31891149,0xa1891188,0xa14b1188,0xb1891188,0xa14d1188,0xb14e1188,0x1189114f,0x61891188,
+        0x51510188,0x91520186,0x61530188,0x71540188,0x81550188,0x41560158,0x31890157,0xa1890188,
+        0xa1590188,0xb1890188,0x515b0170,0x915c0168,0x615d0188,0x715e0188,0x415f0165,0x31600163,
+        0x81890161,0x11620188,0x21890188,0x81640188,0xa1890188,0xb1660188,0x81670188,0xa1890188,
+        0x21690188,0x316a0188,0x416b0188,0x716c0188,0x116d016e,0x61890188,0x616f0188,0x81890188,
+        0x51711186,0x9172117e,0x61731188,0x71741188,0x4175117b,0x31761179,0x81891177,0x11781188,
+        0x21891188,0x817a1188,0xa1891188,0xb17c1188,0x817d1188,0xa1891188,0x217f1188,0x31801188,
+        0x41811188,0x71821188,0x11831184,0x61891188,0x61851188,0x81891188,0x000000fc,0x000000fd,
+        0x000000fe,0x000000ff
+    };
+
+    static const unsigned long table_7_12s_struct1[] =
+    {
+        0x00010091,0x20020064,0x50030031,0x90040026,0x7005001c,0x10060015,0x6007000f,0x3008000b,
+        0x41590009,0xa00a0156,0xb1590158,0x800c0156,0xa00d0156,0x4159000e,0xb1590158,0xb0100156,
+        0x30110013,0x41590012,0xa1590156,0x80140156,0xa1590156,0x60160156,0x80170156,0x4018001a,
+        0x31590019,0xa1590156,0xa01b0156,0xb1590156,0x101d0156,0xb01e0023,0x301f0021,0x41570020,
+        0xa1570156,0x80220156,0xa1570156,0x60240156,0x30250156,0x41570156,0x30270156,0x40280156,
+        0x7029002e,0x102a002c,0x6157002b,0xb1570156,0x602d0156,0x81570156,0x102f0156,0x61570030,
+        0xb1570156,0x90321055,0x70331050,0x5034104b,0x10350044,0x4036003d,0xa0370039,0x30380156,
+        0xb1590158,0x603a1156,0x803b1156,0xb03c1158,0xa1591158,0x603e1156,0x803f1156,0xa0401042,
+        0x41591041,0xb1591158,0x30431156,0x41591158,0x60451156,0x80461156,0x40471049,0x31591048,
+        0xa1591156,0xa04a1156,0xb1591156,0x104c0156,0x304d0156,0x404e0156,0xa04f0156,0xb1590156,
+        0x10510156,0x30520156,0x40530156,0xa0540156,0xb1570156,0xa0560156,0xb0570156,0x90580061,
+        0x7059005e,0x105a005c,0x3157005b,0x81570156,0x605d0156,0x81570156,0x105f0156,0x31570060,
+        0x81570156,0x10620156,0x30630156,0x41570156,0x7065007a,0x90660156,0x80670156,0x50680076,
+        0x10690070,0xa06a006d,0xb157006b,0x606c0156,0x41590156,0x606e0156,0x306f0156,0x41590156,
+        0x60710156,0x40720074,0x31570073,0xa1570156,0xa0750156,0xb1570156,0xa0770156,0xb0780156,
+        0x11570079,0x61570156,0x707b1156,0x507c1156,0x207d1089,0x607e1156,0x407f1085,0x30801082,
+        0x11571081,0x81571156,0x90831156,0x80841156,0xa1591156,0x90861156,0x80871156,0xa0881156,
+        0xb1591156,0x908a1156,0x608b1156,0x808c1156,0x408d108f,0x3157108e,0xa1571156,0xa0901156,
+        0xb1571156,0x0092112c,0x209310ff,0x909410c2,0x509510b7,0x709610ad,0x109710a6,0x609810a0,
+        0x3099109c,0x4159109a,0xa09b1156,0xb1591158,0x809d1156,0xa09e1156,0x4159109f,0xb1591158,
+        0xb0a11156,0x30a210a4,0x415910a3,0xa1591156,0x80a51156,0xa1591156,0x60a71156,0x80a81156,
+        0x40a910ab,0x315910aa,0xa1591156,0xa0ac1156,0xb1591156,0x10ae1156,0xb0af10b4,0x30b010b2,
+        0x415710b1,0xa1571156,0x80b31156,0xa1571156,0x60b51156,0x30b61156,0x41571156,0xa0b81156,
+        0xb0b91156,0x70ba10bf,0x10bb10bd,0x315710bc,0x81571156,0x60be1156,0x81571156,0x10c01156,
+        0x315710c1,0x81571156,0x90c300f0,0x50c400e1,0x70c500dc,0x10c610d5,0x40c710ce,0xa0c810ca,
+        0x30c91156,0xb1591158,0x60cb0156,0x80cc0156,0xb0cd0158,0xa1590158,0x60cf0156,0x80d00156,
+        0xa0d100d3,0x415900d2,0xb1590158,0x30d40156,0x41590158,0x60d60156,0x80d70156,0x40d800da,
+        0x315900d9,0xa1590156,0xa0db0156,0xb1590156,0x10dd1156,0x30de1156,0x40df1156,0xa0e01156,
+        0xb1591156,0x30e21156,0x40e31156,0x50e410ed,0x70e510ea,0x10e610e8,0x615910e7,0xb1591156,
+        0x60e91156,0x81591156,0x10eb1156,0x615710ec,0xb1571156,0x10ee1156,0xa0ef1156,0xb1571156,
+        0x30f11156,0x40f21156,0x50f310fc,0x70f410f9,0x10f510f7,0x615710f6,0xb1571156,0x60f81156,
+        0x81571156,0x10fa1156,0x615710fb,0xb1571156,0x10fd1156,0xa0fe1156,0xb1571156,0x71000116,
+        0x51010156,0x2102010e,0x61030156,0x4104010a,0x31050107,0x11570106,0x81570156,0x91080156,
+        0x81090156,0xa1590156,0x910b0156,0x810c0156,0xa10d0156,0xb1590156,0x910f0156,0x61100156,
+        0x81110156,0x41120114,0x31570113,0xa1570156,0xa1150156,0xb1570156,0x71171156,0x91181156,
+        0x81191156,0x511a1128,0x111b1122,0xa11c111f,0xb157111d,0x611e1156,0x41591156,0x61201156,
+        0x31211156,0x41591156,0x61231156,0x41241126,0x31571125,0xa1571156,0xa1271156,0xb1571156,
+        0xa1291156,0xb12a1156,0x1157112b,0x61571156,0x512d0141,0x712e0156,0x912f013a,0x61300156,
+        0x41310137,0x31320135,0x81570133,0x11340156,0x21570156,0x81360156,0xa1570156,0xb1380156,
+        0x81390156,0xa1570156,0x213b0156,0x313c0156,0x413d0156,0x113e013f,0x61570156,0x61400156,
+        0x81570156,0x51421156,0x71431156,0x9144114f,0x61451156,0x4146114c,0x3147114a,0x81571148,
+        0x11491156,0x21571156,0x814b1156,0xa1571156,0xb14d1156,0x814e1156,0xa1571156,0x21501156,
+        0x31511156,0x41521156,0x11531154,0x61571156,0x61551156,0x81571156,0x000000fc,0x000000fd,
+        0x000000fe,0x000000ff
+    };
+
+    static const unsigned long table_7_12s_struct2[] =
+    {
+        0x00010092,0x20020065,0x50030031,0x90040026,0x7005001c,0x10060015,0x6007000f,0x3008000b,
+        0x41400009,0xa00a013f,0xb140013f,0x800c013f,0xa00d013f,0x4140000e,0xb140013f,0xb010013f,
+        0x30110013,0x41400012,0xa140013f,0x8014013f,0xa140013f,0x6016013f,0x8017013f,0x4018001a,
+        0x31400019,0xa140013f,0xa01b013f,0xb140013f,0x101d013f,0xb01e0023,0x301f0021,0x41400020,
+        0xa140013f,0x8022013f,0xa140013f,0x6024013f,0x3025013f,0x4140013f,0x3027013f,0x4028013f,
+        0x7029002e,0x102a002c,0x6140002b,0xb140013f,0x602d013f,0x8140013f,0x102f013f,0x61400030,
+        0xb140013f,0x70321059,0x90331050,0x5034104b,0x10350044,0x4036003d,0xa0370039,0x3038013f,
+        0xb140013f,0x603a113f,0x803b113f,0xb03c113f,0xa140113f,0x603e113f,0x803f113f,0xa0401042,
+        0x41401041,0xb140113f,0x3043113f,0x4140113f,0x6045113f,0x8046113f,0x40471049,0x31401048,
+        0xa140113f,0xa04a113f,0xb140113f,0x104c013f,0x304d013f,0x404e013f,0xa04f013f,0xb140013f,
+        0xa051013f,0xb052013f,0x90530056,0x1054013f,0x31400055,0x8140013f,0x1057013f,0x3058013f,
+        0x4140013f,0xa05a013f,0xb05b013f,0x905c0062,0x105d005f,0x3140005e,0x8140013f,0x6060013f,
+        0x8061013f,0x7140013f,0x1063013f,0x3064013f,0x4140013f,0x7066007b,0x9067013f,0x8068013f,
+        0x50690077,0x106a0071,0xa06b006e,0xb140006c,0x606d013f,0x4140013f,0x606f013f,0x3070013f,
+        0x4140013f,0x6072013f,0x40730075,0x31400074,0xa140013f,0xa076013f,0xb140013f,0xa078013f,
+        0xb079013f,0x1140007a,0x6140013f,0x707c113f,0x507d113f,0x207e108a,0x607f113f,0x40801086,
+        0x30811083,0x11401082,0x8140113f,0x9084113f,0x8085113f,0xa140113f,0x9087113f,0x8088113f,
+        0xa089113f,0xb140113f,0x908b113f,0x608c113f,0x808d113f,0x408e1090,0x3140108f,0xa140113f,
+        0xa091113f,0xb140113f,0x00931113,0x209410e6,0xb09510c8,0x309610b9,0x509710a9,0x909810a3,
+        0x709910a0,0x109a109c,0x4140109b,0xa140113f,0x609d113f,0x809e113f,0x4140109f,0xa140113f,
+        0x10a1113f,0x414010a2,0xa140113f,0x40a4113f,0x70a510a8,0x114010a6,0x60a7113f,0x8140113f,
+        0x1140113f,0xa0aa10b2,0x90ab10b0,0x70ac10af,0x114010ad,0x60ae113f,0x8140113f,0x1140113f,
+        0x10b1113f,0x4140113f,0x70b3013f,0x90b4013f,0x50b5013f,0x40b6013f,0x60b7013f,0x80b8013f,
+        0xa140013f,0x90ba10c0,0x80bb113f,0xa0bc113f,0x70bd10bf,0x114010be,0x6140113f,0x1140113f,
+        0x50c1013f,0x70c2013f,0x90c3013f,0x40c4013f,0x60c5013f,0x80c6013f,0x314000c7,0xa140013f,
+        0x40c910dc,0x50ca10d5,0x70cb10d2,0x60cc113f,0x30cd10cf,0x114010ce,0x8140113f,0x90d0113f,
+        0x80d1113f,0xa140113f,0x10d3113f,0x60d4113f,0x3140113f,0x70d6013f,0x90d7013f,0x50d8013f,
+        0x60d9013f,0x80da013f,0xa0db013f,0xb140013f,0x50dd013f,0x70de013f,0x90df013f,0x60e0013f,
+        0x80e1013f,0xa0e200e4,0x414000e3,0xb140013d,0x30e5013f,0x4140013f,0x70e700fd,0x50e8013f,
+        0x20e900f5,0x60ea013f,0x40eb00f1,0x30ec00ee,0x114000ed,0x8140013f,0x90ef013f,0x80f0013f,
+        0xa140013f,0x90f2013f,0x80f3013f,0xa0f4013f,0xb140013f,0x90f6013f,0x60f7013f,0x80f8013f,
+        0x40f900fb,0x314000fa,0xa140013f,0xa0fc013f,0xb140013f,0x70fe113f,0x90ff113f,0x8100113f,
+        0x5101110f,0x11021109,0xa1031106,0xb1401104,0x6105113f,0x4140113f,0x6107113f,0x3108113f,
+        0x4140113f,0x610a113f,0x410b110d,0x3140110c,0xa140113f,0xa10e113f,0xb140113f,0xa110113f,
+        0xb111113f,0x11401112,0x6140113f,0x51140128,0x7115013f,0x91160121,0x6117013f,0x4118011e,
+        0x3119011c,0x8140011a,0x111b013f,0x2140013f,0x811d013f,0xa140013f,0xb11f013f,0x8120013f,
+        0xa140013f,0x2122013f,0x3123013f,0x4124013f,0x11250126,0x6140013f,0x6127013f,0x8140013f,
+        0x5129113d,0x712a113f,0x912b1136,0x612c113f,0x412d1133,0x312e1131,0x8140112f,0x1130113f,
+        0x2140113f,0x8132113f,0xa140113f,0xb134113f,0x8135113f,0xa140113f,0x2137113f,0x3138113f,
+        0x4139113f,0x113a113b,0x6140113f,0x613c113f,0x8140113f,0x000000fc,0x000000fd,0x000000fe,
+        0x000000ff
+    };
+
+    static const unsigned long table_9_16_struct[] =
+    {
+        0x00010138,0x200200d3,0x4003008a,0x50040051,0x70050027,0x30060016,0x1007000d,0x6008000a,
+        0x82ad0009,0xf2ad02ac,0xd00b02ac,0xe00c02ac,0xf2ad02ac,0x800e02ac,0x900f02ac,0xa01002ac,
+        0x62ad0011,0xb01202ac,0xc01302ac,0xd01402ac,0xe01502ac,0xf2ad02ac,0xa01702ac,0xb01802ac,
+        0xc01902ac,0x801a0023,0x901b001f,0x62ad001c,0xd01d02ac,0xe01e02ac,0xf2ad02ac,0x102002ac,
+        0xd02102ac,0xe02202ac,0xf2ad02ac,0x102402ac,0xd02502ac,0xe02602ac,0xf2ad02ac,0x70281041,
+        0xe0290038,0xf02a02ac,0x102b0032,0x302c002e,0x62ad002d,0xd2ad02ac,0xa02f02ac,0xb03002ac,
+        0xc03102ac,0xd2ad02ac,0x803302ac,0x903402ac,0xa03502ac,0xb03602ac,0xc03702ac,0xd2ad02ac,
+        0xe03912ac,0x803a12ac,0x903b12ac,0xa03c12ac,0xb03d12ac,0xc03e12ac,0xd03f12ac,0x62ad1040,
+        0xf2ad12ac,0xe04202ac,0xf04302ac,0x1044004b,0x30450047,0x62ad0046,0xd2ad02ac,0xa04802ac,
+        0xb04902ac,0xc04a02ac,0xd2ad02ac,0x804c02ac,0x904d02ac,0xa04e02ac,0xb04f02ac,0xc05002ac,
+        0xd2ad02ac,0x5052106e,0xc0530064,0xd05402ac,0xe05502ac,0xf056005e,0x1057005a,0x32ad0058,
+        0xa05902ac,0xb2ad02ac,0x805b02ac,0x905c02ac,0xa05d02ac,0xb2ad02ac,0x605f02ac,0x706002ac,
+        0x806102ac,0x906202ac,0xa06302ac,0xb2ad02ac,0xc06512ac,0x706612ac,0x806712ac,0x906812ac,
+        0xa06912ac,0xb06a12ac,0xd06b12ac,0x62ad106c,0xe06d12ac,0xf2ad12ac,0xc06f0080,0xd07002ac,
+        0xe07102ac,0xf072007a,0x10730076,0x32ad0074,0xa07502ac,0xb2ad02ac,0x807702ac,0x907802ac,
+        0xa07902ac,0xb2ad02ac,0x607b02ac,0x707c02ac,0x807d02ac,0x907e02ac,0xa07f02ac,0xb2ad02ac,
+        0xc08112ac,0x708212ac,0x808312ac,0x908412ac,0xa08512ac,0xb08612ac,0xd08712ac,0xe08812ac,
+        0x62ad1089,0xf2ad12ac,0x408b10b1,0xb08c00a1,0xc08d02ac,0xd08e02ac,0xa08f009d,0xe0900098,
+        0xf0910094,0x12ad0092,0x809302ac,0x92ad02ac,0x609502ac,0x709602ac,0x809702ac,0x92ad02ac,
+        0x509902ac,0x609a02ac,0x709b02ac,0x809c02ac,0x92ad02ac,0x109e02ac,0x309f02ac,0xe0a002ac,
+        0xf2ad02ac,0xb0a212ac,0x70a312ac,0x80a412ac,0x90a512ac,0xa0a612ac,0x60a710ad,0x50a810aa,
+        0x32ad10a9,0xc2ad12ac,0xc0ab12ac,0xd0ac12ac,0xe2ad12ac,0xc0ae12ac,0xd0af12ac,0xe0b012ac,
+        0xf2ad12ac,0xb0b200c7,0xc0b302ac,0xd0b402ac,0xa0b500c3,0xe0b600be,0xf0b700ba,0x12ad00b8,
+        0x80b902ac,0x92ad02ac,0x60bb02ac,0x70bc02ac,0x80bd02ac,0x92ad02ac,0x50bf02ac,0x60c002ac,
+        0x70c102ac,0x80c202ac,0x92ad02ac,0x10c402ac,0x30c502ac,0xe0c602ac,0xf2ad02ac,0xb0c812ac,
+        0x70c912ac,0x80ca12ac,0x90cb12ac,0xa0cc12ac,0xc0cd12ac,0xd0ce12ac,0x60cf10d1,0x52ad10d0,
+        0xe2ad12ac,0xe0d212ac,0xf2ad12ac,0x20d4110a,0x90d500ef,0xa0d602ac,0xb0d702ac,0x80d800ea,
+        0xc0d900e5,0xd0da00e1,0xe0db00de,0xf2ad00dc,0x60dd02ac,0x72ad02ac,0x50df02ac,0x60e002ac,
+        0x72ad02ac,0x40e202ac,0x50e302ac,0x60e402ac,0x72ad02ac,0x30e602ac,0x40e702ac,0x50e802ac,
+        0x60e902ac,0x72ad02ac,0x10eb02ac,0xc0ec02ac,0xd0ed02ac,0xe0ee02ac,0xf2ad02ac,0x90f012ac,
+        0x70f112ac,0x80f212ac,0x60f31104,0x50f410ff,0x40f510fb,0x30f610f8,0x12ad10f7,0xa2ad12ac,
+        0xa0f912ac,0xb0fa12ac,0xc2ad12ac,0xa0fc12ac,0xb0fd12ac,0xc0fe12ac,0xd2ad12ac,0xa10012ac,
+        0xb10112ac,0xc10212ac,0xd10312ac,0xe2ad12ac,0xa10512ac,0xb10612ac,0xc10712ac,0xd10812ac,
+        0xe10912ac,0xf2ad12ac,0x910b0125,0xa10c02ac,0xb10d02ac,0x810e0120,0xc10f011b,0xd1100117,
+        0xe1110114,0xf2ad0112,0x611302ac,0x72ad02ac,0x511502ac,0x611602ac,0x72ad02ac,0x411802ac,
+        0x511902ac,0x611a02ac,0x72ad02ac,0x311c02ac,0x411d02ac,0x511e02ac,0x611f02ac,0x72ad02ac,
+        0x112102ac,0xc12202ac,0xd12302ac,0xe12402ac,0xf2ad02ac,0x912612ac,0x712712ac,0x812812ac,
+        0xa12912ac,0xb12a12ac,0x612b1134,0x512c1131,0x412d112f,0x32ad112e,0xc2ad12ac,0xc13012ac,
+        0xd2ad12ac,0xc13212ac,0xd13312ac,0xe2ad12ac,0xc13512ac,0xd13612ac,0xe13712ac,0xf2ad12ac,
+        0x01391270,0x213a0170,0x913b0155,0x713c02ac,0x813d02ac,0x613e014f,0x513f014a,0x41400146,
+        0x31410143,0x12ad0142,0xa2ad02ac,0xa14402ac,0xb14502ac,0xc2ad02ac,0xa14702ac,0xb14802ac,
+        0xc14902ac,0xd2ad02ac,0xa14b02ac,0xb14c02ac,0xc14d02ac,0xd14e02ac,0xe2ad02ac,0xa15002ac,
+        0xb15102ac,0xc15202ac,0xd15302ac,0xe15402ac,0xf2ad02ac,0x915612ac,0xa15712ac,0xb15812ac,
+        0x8159116b,0xc15a1166,0xd15b1162,0xe15c115f,0xf2ad115d,0x615e12ac,0x72ad12ac,0x516012ac,
+        0x616112ac,0x72ad12ac,0x416312ac,0x516412ac,0x616512ac,0x72ad12ac,0x316712ac,0x416812ac,
+        0x516912ac,0x616a12ac,0x72ad12ac,0x116c12ac,0xc16d12ac,0xd16e12ac,0xe16f12ac,0xf2ad12ac,
+        0x21711242,0x41720198,0xb1730182,0x717402ac,0x817502ac,0x917602ac,0xa17702ac,0x6178017e,
+        0x5179017b,0x32ad017a,0xc2ad02ac,0xc17c02ac,0xd17d02ac,0xe2ad02ac,0xc17f02ac,0xd18002ac,
+        0xe18102ac,0xf2ad02ac,0xb18312ac,0xc18412ac,0xd18512ac,0xa1861194,0xe187118f,0xf188118b,
+        0x12ad1189,0x818a12ac,0x92ad12ac,0x618c12ac,0x718d12ac,0x818e12ac,0x92ad12ac,0x519012ac,
+        0x619112ac,0x719212ac,0x819312ac,0x92ad12ac,0x119512ac,0x319612ac,0xe19712ac,0xf2ad12ac,
+        0x41991220,0x519a01b6,0xc19b01a4,0x719c02ac,0x819d02ac,0x919e02ac,0xa19f02ac,0xb1a002ac,
+        0xd1a102ac,0x62ad01a2,0xe1a302ac,0xf2ad02ac,0xc1a512ac,0xd1a612ac,0xe1a712ac,0xf1a811b0,
+        0x11a911ac,0x32ad11aa,0xa1ab12ac,0xb2ad12ac,0x81ad12ac,0x91ae12ac,0xa1af12ac,0xb2ad12ac,
+        0x61b112ac,0x71b212ac,0x81b312ac,0x91b412ac,0xa1b512ac,0xb2ad12ac,0x51b71204,0x71b801d1,
+        0xe1b901c1,0x81ba02ac,0x91bb02ac,0xa1bc02ac,0xb1bd02ac,0xc1be02ac,0xd1bf02ac,0x62ad01c0,
+        0xf2ad02ac,0xe1c212ac,0xf1c312ac,0x11c411cb,0x31c511c7,0x62ad11c6,0xd2ad12ac,0xa1c812ac,
+        0xb1c912ac,0xc1ca12ac,0xd2ad12ac,0x81cc12ac,0x91cd12ac,0xa1ce12ac,0xb1cf12ac,0xc1d012ac,
+        0xd2ad12ac,0x71d211f4,0x31d311e3,0x11d411da,0x61d511d7,0x82ad11d6,0xf2ad12ac,0xd1d812ac,
+        0xe1d912ac,0xf2ad12ac,0x81db12ac,0x91dc12ac,0xa1dd12ac,0x62ad11de,0xb1df12ac,0xc1e012ac,
+        0xd1e112ac,0xe1e212ac,0xf2ad12ac,0xa1e412ac,0xb1e512ac,0xc1e612ac,0x81e711f0,0x91e811ec,
+        0x62ad11e9,0xd1ea12ac,0xe1eb12ac,0xf2ad12ac,0x11ed12ac,0xd1ee12ac,0xe1ef12ac,0xf2ad12ac,
+        0x11f112ac,0xd1f212ac,0xe1f312ac,0xf2ad12ac,0xe1f512ac,0xf1f612ac,0x11f711fe,0x31f811fa,
+        0x62ad11f9,0xd2ad12ac,0xa1fb12ac,0xb1fc12ac,0xc1fd12ac,0xd2ad12ac,0x81ff12ac,0x920012ac,
+        0xa20112ac,0xb20212ac,0xc20312ac,0xd2ad12ac,0xc205020e,0x720602ac,0x820702ac,0x920802ac,
+        0xa20902ac,0xb20a02ac,0xd20b02ac,0xe20c02ac,0x62ad020d,0xf2ad02ac,0xc20f12ac,0xd21012ac,
+        0xe21112ac,0xf212121a,0x12131216,0x32ad1214,0xa21512ac,0xb2ad12ac,0x821712ac,0x921812ac,
+        0xa21912ac,0xb2ad12ac,0x621b12ac,0x721c12ac,0x821d12ac,0x921e12ac,0xa21f12ac,0xb2ad12ac,
+        0xb221022c,0x722202ac,0x822302ac,0x922402ac,0xa22502ac,0xc22602ac,0xd22702ac,0x6228022a,
+        0x52ad0229,0xe2ad02ac,0xe22b02ac,0xf2ad02ac,0xb22d12ac,0xc22e12ac,0xd22f12ac,0xa230123e,
+        0xe2311239,0xf2321235,0x12ad1233,0x823412ac,0x92ad12ac,0x623612ac,0x723712ac,0x823812ac,
+        0x92ad12ac,0x523a12ac,0x623b12ac,0x723c12ac,0x823d12ac,0x92ad12ac,0x123f12ac,0x324012ac,
+        0xe24112ac,0xf2ad12ac,0x92430255,0x724402ac,0x824502ac,0xa24602ac,0xb24702ac,0x62480251,
+        0x5249024e,0x424a024c,0x32ad024b,0xc2ad02ac,0xc24d02ac,0xd2ad02ac,0xc24f02ac,0xd25002ac,
+        0xe2ad02ac,0xc25202ac,0xd25302ac,0xe25402ac,0xf2ad02ac,0x925612ac,0xa25712ac,0xb25812ac,
+        0x8259126b,0xc25a1266,0xd25b1262,0xe25c125f,0xf2ad125d,0x625e12ac,0x72ad12ac,0x526012ac,
+        0x626112ac,0x72ad12ac,0x426312ac,0x526412ac,0x626512ac,0x72ad12ac,0x326712ac,0x426812ac,
+        0x526912ac,0x626a12ac,0x72ad12ac,0x126c12ac,0xc26d12ac,0xd26e12ac,0xe26f12ac,0xf2ad12ac,
+        0x7271028e,0x827202ac,0x927302ac,0x62740288,0x52750283,0x4276027f,0x3277027c,0x2278027a,
+        0x12ad0279,0xa2ad02ac,0xa27b02ac,0xb2ad02ac,0xa27d02ac,0xb27e02ac,0xc2ad02ac,0xa28002ac,
+        0xb28102ac,0xc28202ac,0xd2ad02ac,0xa28402ac,0xb28502ac,0xc28602ac,0xd28702ac,0xe2ad02ac,
+        0xa28902ac,0xb28a02ac,0xc28b02ac,0xd28c02ac,0xe28d02ac,0xf2ad02ac,0x728f12ac,0x829012ac,
+        0x929112ac,0x629212a6,0x529312a1,0x4294129d,0x3295129a,0x22961298,0x12ad1297,0xa2ad12ac,
+        0xa29912ac,0xb2ad12ac,0xa29b12ac,0xb29c12ac,0xc2ad12ac,0xa29e12ac,0xb29f12ac,0xc2a012ac,
+        0xd2ad12ac,0xa2a212ac,0xb2a312ac,0xc2a412ac,0xd2a512ac,0xe2ad12ac,0xa2a712ac,0xb2a812ac,
+        0xc2a912ac,0xd2aa12ac,0xe2ab12ac,0xf2ad12ac,0x000000fc,0x000000fd,0x000000fe,0x000000ff
+    };
+    switch(agasttype) {
+      case AgastFeatureDetector::AGAST_5_8:
+        agastbase=0;
+        table_struct1=(unsigned long *)(table_5_8_struct1);
+        table_struct2=(unsigned long *)(table_5_8_struct2);
+        break;
+      case AgastFeatureDetector::AGAST_7_12d:
+        agastbase=2;
+        table_struct1=(unsigned long *)(table_7_12d_struct1);
+        table_struct2=(unsigned long *)(table_7_12d_struct2);
+        break;
+      case AgastFeatureDetector::AGAST_7_12s:
+        agastbase=1;
+        table_struct1=(unsigned long *)(table_7_12s_struct1);
+        table_struct2=(unsigned long *)(table_7_12s_struct2);
+        break;
+      case AgastFeatureDetector::OAST_9_16:
+      default:
+        agastbase=2;
+        table_struct1=(unsigned long *)(table_9_16_struct);
+        table_struct2=(unsigned long *)(table_9_16_struct);
+        break;
+    }
+
+#endif //AGAST_TREE
+
+    size_t total = 0;
+    int xsize = img.cols;
+    int ysize = img.rows;
+    size_t nExpectedCorners = keypoints.capacity();
+    register int x, y;
+    register int xsizeB = xsize - (agastbase + 2);
+    register int ysizeB = ysize - (agastbase + 1);
+    register int width;
+
+    keypoints.resize(0);
+
+    int pixel[16];
+    makeAgastOffsets(pixel, (int)img.step, agasttype);
+
+    width = xsize;
+
+    for(y = agastbase+1; y < ysizeB; y++)
+    {
+        x = agastbase;
+        while(true)
+        {
+          homogeneous:
+          {
+            x++;
+            if(x > xsizeB)
+                break;
+            else
+            {
+                register const unsigned char* const ptr = img.ptr() + y*width + x;
+                result = agast_tree_search(table_struct1, pixel, ptr, threshold);
+                switch (result)
+                {
+                case 252:
+                    goto homogeneous;
+                case 253:
+                    goto success_homogeneous;
+                case 254:
+                    goto structured;
+                case 255:
+                    goto success_structured;
+                }
+            }
+          }
+          structured:
+          {
+            x++;
+            if(x > xsizeB)
+                break;
+            else
+            {
+                register const unsigned char* const ptr = img.ptr() + y*width + x;
+                result = agast_tree_search(table_struct2, pixel, ptr, threshold);
+                switch (result)
+                {
+                case 252:
+                    goto homogeneous;
+                case 253:
+                    goto success_homogeneous;
+                case 254:
+                    goto structured;
+                case 255:
+                    goto success_structured;
+                }
+            }
+          }
+            success_homogeneous:
+            if(total == nExpectedCorners)
+            {
+                if(nExpectedCorners == 0)
+                {
+                    nExpectedCorners = 512;
+                    keypoints.reserve(nExpectedCorners);
+                }
+                else
+                {
+                    nExpectedCorners *= 2;
+                    keypoints.reserve(nExpectedCorners);
+                }
+            }
+            keypoints.push_back(KeyPoint(Point2f((float)x, (float)y), 1.0f));
+            total++;
+            goto homogeneous;
+            success_structured:
+            if(total == nExpectedCorners)
+            {
+                if(nExpectedCorners == 0)
+                {
+                    nExpectedCorners = 512;
+                    keypoints.reserve(nExpectedCorners);
+                }
+                else
+                {
+                    nExpectedCorners *= 2;
+                    keypoints.reserve(nExpectedCorners);
+                }
+            }
+            keypoints.push_back(KeyPoint(Point2f((float)x, (float)y), 1.0f));
+            total++;
+            goto structured;
+        }
+    }
+}
+
+static void AGAST_5_8(InputArray _img, std::vector<KeyPoint>& keypoints, int threshold)
+{
+    AGAST_ALL(_img, keypoints, threshold, AgastFeatureDetector::AGAST_5_8);
+}
+
+static void AGAST_7_12d(InputArray _img, std::vector<KeyPoint>& keypoints, int threshold)
+{
+    AGAST_ALL(_img, keypoints, threshold, AgastFeatureDetector::AGAST_7_12d);
+}
+
+static void AGAST_7_12s(InputArray _img, std::vector<KeyPoint>& keypoints, int threshold)
+{
+    AGAST_ALL(_img, keypoints, threshold, AgastFeatureDetector::AGAST_7_12s);
+}
+
+static void OAST_9_16(InputArray _img, std::vector<KeyPoint>& keypoints, int threshold)
+{
+    AGAST_ALL(_img, keypoints, threshold, AgastFeatureDetector::OAST_9_16);
+}
+
+#endif // !(defined __i386__ || defined(_M_IX86) || defined __x86_64__ || defined(_M_X64))
 
 class AgastFeatureDetector_Impl : public AgastFeatureDetector
 {
index 7b18354..4057972 100644 (file)
@@ -89,6 +89,7 @@ void makeAgastOffsets(int pixel[16], int rowStride, int type)
         pixel[k] = offsets[k][0] + offsets[k][1] * rowStride;
 }
 
+#if (defined __i386__ || defined(_M_IX86) || defined __x86_64__ || defined(_M_X64))
 // 16 pixel mask
 template<>
 int agast_cornerScore<AgastFeatureDetector::OAST_9_16>(const uchar* ptr, const int pixel[], int threshold)
@@ -9371,5 +9372,978 @@ int agast_cornerScore<AgastFeatureDetector::AGAST_5_8>(const uchar* ptr, const i
         b_test = (bmin + bmax) / 2;
     }
 }
+#else // !(defined __i386__ || defined(_M_IX86) || defined __x86_64__ || defined(_M_X64))
+
+
+int agast_tree_search(const unsigned long table_struct32[], int pixel_[], const unsigned char* const ptr, int threshold)
+{
+    register const int cb = *ptr + threshold;
+    register const int c_b = *ptr - threshold;
+    register int index;
+    register int offset;
+    register int cmpresult;
+    index = 0;
+    while ((table_struct32[index]>>16)!=0)
+    {
+        offset=(int) pixel_[table_struct32[index]>>28];
+        if ((table_struct32[index]&(1<<12))!=0)
+            cmpresult=(ptr[offset] < c_b);
+        else
+            cmpresult=(ptr[offset] > cb);
+        if (cmpresult)
+            index =(table_struct32[index]>>16)&0xfff;
+        else
+            index =table_struct32[index]&0xfff;
+    }
+    return (int)(table_struct32[index]&0xff);
+}
+
+// universal pixel mask
+int AGAST_ALL_SCORE(const uchar* ptr, const int pixel[], int threshold, int agasttype)
+{
+    int bmin = threshold;
+    int bmax = 255;
+    int b_test = (bmax + bmin)/2;
+    unsigned long *table_struct;
+
+    int result;
+    static const unsigned long table_5_8_corner_struct[] =
+    {       0x00010026,0x20020017,0x3003000c,0x50040009,0x10050007,0x406d0006,0x706d006c,0x4008006c,
+        0x606d006c,0x100a006c,0x406d000b,0x706d006c,0x700d0012,0x600e006c,0x500f0011,0x106d0010,
+        0x406d006c,0x106d006c,0x5013106c,0x3014106c,0x7015106c,0x4016106c,0x606d106c,0x5018001c,
+        0x7019006c,0x601a006c,0x106d001b,0x406d006c,0x501d106c,0x301e106c,0x201f1023,0x10201021,
+        0x406d106c,0x4022106c,0x606d106c,0x7024106c,0x4025106c,0x606d106c,0x00271058,0x20281049,
+        0x70290035,0x302a1031,0x502b102f,0x102c102d,0x406d106c,0x402e106c,0x606d106c,0x1030106c,
+        0x406d106c,0x5032006c,0x3033006c,0x4034006c,0x606d006c,0x70361041,0x3037103c,0x5038103b,
+        0x106d1039,0x403a106c,0x606d106c,0x106d106c,0x603d106c,0x503e1040,0x106d103f,0x406d106c,
+        0x106d106c,0x3042106c,0x50431047,0x10441045,0x406d106c,0x4046106c,0x606d106c,0x1048106c,
+        0x406d106c,0x504a0053,0x304b006c,0x204c0050,0x104d004e,0x406d006c,0x404f006c,0x606d006c,
+        0x7051006c,0x4052006c,0x606d006c,0x5054106c,0x7055106c,0x6056106c,0x106d1057,0x406d106c,
+        0x30590062,0x505a006c,0x205b005f,0x105c005d,0x406d006c,0x405e006c,0x606d006c,0x7060006c,
+        0x4061006c,0x606d006c,0x3063106c,0x5064106c,0x20651069,0x10661067,0x406d106c,0x4068106c,
+        0x606d106c,0x706a106c,0x406b106c,0x606d106c,0x000000fe,0x000000ff};
+
+    static const unsigned long table_7_12d_corner_struct[] =
+    {       0x000100b5,0x50020036,0x20030025,0x9004001d,0x10050015,0x6006000f,0x3007000a,0x41870008,
+        0xa0090186,0xb1870186,0x800b0186,0xa00c0186,0xb187000d,0x400e0186,0x71870186,0xb0100186,
+        0x30110013,0x41870012,0xa1870186,0x80140186,0xa1870186,0x60160186,0x70170186,0x80180186,
+        0x4019001b,0x3187001a,0xa1870186,0xa01c0186,0xb1870186,0x301e0186,0x401f0186,0x10200022,
+        0x61870021,0xb1870186,0x60230186,0x70240186,0x81870186,0x90260186,0x70270186,0x80280186,
+        0x10290030,0xa02a002d,0xb187002b,0x602c0186,0x41870186,0x602e0186,0x302f0186,0x41870186,
+        0x60310186,0x40320034,0x31870033,0xa1870186,0xa0350186,0xb1870186,0x503710a1,0x9038006b,
+        0x3039105b,0x403a1053,0xb03b004d,0x103c0044,0x803d0040,0xa03e0186,0x2187003f,0x71870186,
+        0x60411186,0x20421186,0x70431186,0x81871186,0x60450048,0x70460186,0x80470186,0xa1870186,
+        0x60491186,0x204a1186,0x704b1186,0x1187104c,0x81871186,0x204e1186,0x704f1186,0x10501051,
+        0x61871186,0x60521186,0x81871186,0xb0540186,0x80550186,0xa0560186,0x10570059,0x21870058,
+        0x71870186,0x605a0186,0x71870186,0xb05c0186,0xa05d0186,0x305e0065,0x105f0062,0x21870060,
+        0x70610186,0x81870186,0x60630186,0x70640186,0x81870186,0x80660186,0x10670069,0x21870068,
+        0x71870186,0x606a0186,0x71870186,0x906c1093,0x206d0087,0x106e007f,0x406f0077,0xa0700072,
+        0x30710186,0xb1870186,0x60731186,0x70741186,0x80751186,0xb0761186,0xa1871186,0x60781186,
+        0x70791186,0x807a1186,0xa07b107d,0x4187107c,0xb1871186,0x307e1186,0x41871186,0x60801186,
+        0x70811186,0x80821186,0x40831085,0x31871084,0xa1871186,0xa0861186,0xb1871186,0x60881186,
+        0x70891186,0x808a108f,0x408b108d,0x3187108c,0xa1871186,0xa08e1186,0xb1871186,0x20901186,
+        0x10911186,0x30921186,0x41871186,0x20940099,0x10950186,0x30960186,0x40970186,0xa0980186,
+        0xb1870186,0x209a1186,0x309b1186,0x409c1186,0x709d1186,0x109e109f,0x61871186,0x60a01186,
+        0x81871186,0x20a200ae,0xa0a30186,0xb0a40186,0x90a500ab,0x10a600a8,0x318700a7,0x81870186,
+        0x60a90186,0x70aa0186,0x81870186,0x10ac0186,0x30ad0186,0x41870186,0x90af0186,0x70b00186,
+        0x80b10186,0xa0b20186,0xb0b30186,0x118700b4,0x61870186,0x00b6115a,0x20b700e2,0x50b800cc,
+        0x70b900c5,0x60ba0186,0x40bb00c1,0x30bc00be,0x118700bd,0x81870186,0x90bf0186,0x80c00186,
+        0xa1870186,0x90c20186,0x80c30186,0xa0c40186,0xb1870186,0x90c61186,0x80c71186,0xa0c81186,
+        0xb0c91186,0x70ca1186,0x118710cb,0x61871186,0x90cd1186,0x70ce1186,0x80cf1186,0x50d010de,
+        0x10d110d8,0xa0d210d5,0xb18710d3,0x60d41186,0x41871186,0x60d61186,0x30d71186,0x41871186,
+        0x60d91186,0x40da10dc,0x318710db,0xa1871186,0xa0dd1186,0xb1871186,0xa0df1186,0xb0e01186,
+        0x118710e1,0x61871186,0x20e3113a,0x90e4010b,0x50e500ff,0x10e610f7,0x40e710ef,0xa0e810ea,
+        0x30e91186,0xb1871186,0x60eb0186,0x70ec0186,0x80ed0186,0xb0ee0186,0xa1870186,0x60f00186,
+        0x70f10186,0x80f20186,0xa0f300f5,0x418700f4,0xb1870186,0x30f60186,0x41870186,0x60f80186,
+        0x70f90186,0x80fa0186,0x40fb00fd,0x318700fc,0xa1870186,0xa0fe0186,0xb1870186,0x31001186,
+        0x41011186,0x51021108,0x11031105,0x61871104,0xb1871186,0x61061186,0x71071186,0x81871186,
+        0x11091186,0xa10a1186,0xb1871186,0x910c112e,0x510d1126,0x110e111e,0x610f1118,0x31101113,
+        0x41871111,0xa1121186,0xb1871186,0x81141186,0xa1151186,0xb1871116,0x41171186,0x71871186,
+        0xb1191186,0x311a111c,0x4187111b,0xa1871186,0x811d1186,0xa1871186,0x611f1186,0x71201186,
+        0x81211186,0x41221124,0x31871123,0xa1871186,0xa1251186,0xb1871186,0xa1271186,0xb1281186,
+        0x1129112b,0x3187112a,0x81871186,0x612c1186,0x712d1186,0x81871186,0x312f1186,0x41301186,
+        0x51311137,0x11321134,0x61871133,0xb1871186,0x61351186,0x71361186,0x81871186,0x11381186,
+        0xa1391186,0xb1871186,0x913b1150,0x713c1186,0x813d1186,0x513e114c,0x113f1146,0xa1401143,
+        0xb1871141,0x61421186,0x41871186,0x61441186,0x31451186,0x41871186,0x61471186,0x4148114a,
+        0x31871149,0xa1871186,0xa14b1186,0xb1871186,0xa14d1186,0xb14e1186,0x1187114f,0x61871186,
+        0x51510186,0x91520186,0x61530186,0x71540186,0x81550186,0x41560158,0x31870157,0xa1870186,
+        0xa1590186,0xb1870186,0x515b0170,0x915c0168,0x615d0186,0x715e0186,0x415f0165,0x31600163,
+        0x81870161,0x11620186,0x21870186,0x81640186,0xa1870186,0xb1660186,0x81670186,0xa1870186,
+        0x21690186,0x316a0186,0x416b0186,0x716c0186,0x116d016e,0x61870186,0x616f0186,0x81870186,
+        0x51711186,0x9172117e,0x61731186,0x71741186,0x4175117b,0x31761179,0x81871177,0x11781186,
+        0x21871186,0x817a1186,0xa1871186,0xb17c1186,0x817d1186,0xa1871186,0x217f1186,0x31801186,
+        0x41811186,0x71821186,0x11831184,0x61871186,0x61851186,0x81871186,0x000000fe,0x000000ff};
+
+    static const unsigned long table_7_12s_corner_struct[] =
+    {       0x0001032b,0x50020104,0x20031026,0x70040748,0x97481005,0x90060748,0x1007100f,0x67481008,
+        0x60090748,0x800a0748,0x400b000d,0x3749000c,0xa7490748,0xa00e0748,0xb7490748,0x1010001e,
+        0x60111014,0x80120748,0xa0130748,0xb7490748,0x6015001b,0x80160748,0x40170019,0x37490018,
+        0xa7490748,0xa01a0748,0xb7490748,0x801c0748,0xa01d0748,0xb7490748,0x6748101f,0x60200748,
+        0x80210748,0x40220024,0x37490023,0xa7490748,0xa0250748,0xb7490748,0x202700e1,0x70281059,
+        0x90291035,0x1748102a,0x102b0748,0x602c002e,0x302d0748,0x47490748,0x602f1032,0x30300748,
+        0x40310748,0xb7490748,0x30330748,0x40340748,0xb7490748,0x9036004d,0x17481037,0x10380748,
+        0x6039103f,0xb03a0748,0x303b003d,0x4749003c,0xa7490748,0x803e0748,0xa7490748,0x60400047,
+        0x30410044,0x47490042,0xa0430748,0xb7490748,0x80450748,0xa0460748,0xb7490748,0xb0480748,
+        0x3049004b,0x4749004a,0xa7490748,0x804c0748,0xa7490748,0x1748104e,0x104f0748,0x60500052,
+        0x30510748,0x47490748,0x60531056,0x30540748,0x40550748,0xb7490748,0x30570748,0x40580748,
+        0xb7490748,0x905a107d,0x705b0071,0x105c1061,0x6748105d,0x605e0748,0x305f0748,0x40600748,
+        0x87490748,0x1062006c,0x60630065,0x30640748,0x47490748,0x60661069,0x30670748,0x40680748,
+        0xb7490748,0x306a0748,0x406b0748,0xb7490748,0x6748106d,0x606e0748,0x306f0748,0x40700748,
+        0x87490748,0x17481072,0x10730748,0x60740076,0x30750748,0x47490748,0x6077107a,0x30780748,
+        0x40790748,0xb7490748,0x307b0748,0x407c0748,0xb7490748,0x707e00bd,0x907f00a7,0x10801088,
+        0x67481081,0x60820748,0x80830748,0x40840086,0x37490085,0xa7490748,0xa0870748,0xb7490748,
+        0x1089009f,0x608a1090,0xb08b0748,0x308c008e,0x4749008d,0xa7490748,0x808f0748,0xa7490748,
+        0x60910099,0x30920095,0x47490093,0xa0940748,0xb7490748,0x80960748,0xa0970748,0x47490098,
+        0xb7490748,0xb09a0748,0x309b009d,0x4749009c,0xa7490748,0x809e0748,0xa7490748,0x674810a0,
+        0x60a10748,0x80a20748,0x40a300a5,0x374900a4,0xa7490748,0xa0a60748,0xb7490748,0x10a810ad,
+        0x674810a9,0x60aa0748,0x30ab0748,0x40ac0748,0x87490748,0x10ae00b8,0x60af00b1,0x30b00748,
+        0x47490748,0x60b210b5,0x30b30748,0x40b40748,0xb7490748,0x30b60748,0x40b70748,0xb7490748,
+        0x674810b9,0x60ba0748,0x30bb0748,0x40bc0748,0x87490748,0x90be00d5,0x174810bf,0x10c00748,
+        0x60c110c7,0xb0c20748,0x30c300c5,0x474900c4,0xa7490748,0x80c60748,0xa7490748,0x60c800cf,
+        0x30c900cc,0x474900ca,0xa0cb0748,0xb7490748,0x80cd0748,0xa0ce0748,0xb7490748,0xb0d00748,
+        0x30d100d3,0x474900d2,0xa7490748,0x80d40748,0xa7490748,0x174810d6,0x10d70748,0x60d800da,
+        0x30d90748,0x47490748,0x60db10de,0x30dc0748,0x40dd0748,0xb7490748,0x30df0748,0x40e00748,
+        0xb7490748,0x70e20748,0x974810e3,0x90e40748,0x10e510ed,0x674810e6,0x60e70748,0x80e80748,
+        0x40e900eb,0x374900ea,0xa7490748,0xa0ec0748,0xb7490748,0x10ee00fc,0x60ef10f2,0x80f00748,
+        0xa0f10748,0xb7490748,0x60f300f9,0x80f40748,0x40f500f7,0x374900f6,0xa7490748,0xa0f80748,
+        0xb7490748,0x80fa0748,0xa0fb0748,0xb7490748,0x674810fd,0x60fe0748,0x80ff0748,0x41000102,
+        0x37490101,0xa7490748,0xa1030748,0xb7490748,0x51051253,0x9106118c,0x71070119,0x27481108,
+        0x21090748,0x1748110a,0x110b0748,0x610c0110,0x310d0748,0x410e0748,0xa10f0748,0xb7490748,
+        0x61111115,0x31120748,0x41130748,0xa1140748,0xb7490748,0x31160748,0x41170748,0xa1180748,
+        0xb7490748,0x711a117a,0x211b1136,0x111c0124,0x6748011d,0x611e1748,0x811f1748,0x41201122,
+        0x37491121,0xa7491748,0xa1231748,0xb7491748,0x1125112e,0x67480126,0x61271748,0x4128112b,
+        0x37491129,0x812a1748,0xa7491748,0x812c1748,0xa12d1748,0xb7491748,0x6748012f,0x61301748,
+        0x81311748,0x41321134,0x37491133,0xa7491748,0xa1351748,0xb7491748,0x21370160,0x11381140,
+        0x67480139,0x613a1748,0x813b1748,0x413c113e,0x3749113d,0xa7491748,0xa13f1748,0xb7491748,
+        0x11410158,0x61420146,0x31430748,0x41440748,0xa1450748,0xb7490748,0x61471154,0x4148014e,
+        0xa149014b,0x314a0748,0xb7490748,0x814c1748,0xb14d1748,0xa7491748,0x814f1748,0xa1501152,
+        0x47491151,0xb7491748,0x31531748,0x47491748,0x31550748,0x41560748,0xa1570748,0xb7490748,
+        0x67480159,0x615a1748,0x815b1748,0x415c115e,0x3749115d,0xa7491748,0xa15f1748,0xb7491748,
+        0x11610169,0x67480162,0x61631748,0x81641748,0x41651167,0x37491166,0xa7491748,0xa1681748,
+        0xb7491748,0x116a1172,0x6748016b,0x616c1748,0x816d1748,0x416e1170,0x3749116f,0xa7491748,
+        0xa1711748,0xb7491748,0x67480173,0x61741748,0x81751748,0x41761178,0x37491177,0xa7491748,
+        0xa1791748,0xb7491748,0x2748117b,0x217c0748,0x1748117d,0x117e0748,0x617f0183,0x31800748,
+        0x41810748,0xa1820748,0xb7490748,0x61841188,0x31850748,0x41860748,0xa1870748,0xb7490748,
+        0x31890748,0x418a0748,0xa18b0748,0xb7490748,0x918d020d,0x718e11b0,0x218f019f,0x17481190,
+        0x11910748,0x61920196,0xa1930748,0xb1940748,0x37490195,0x87490748,0x6197119b,0xa1980748,
+        0xb1990748,0x3749019a,0x87490748,0xa19c0748,0xb19d0748,0x3749019e,0x87490748,0x21a01748,
+        0x11a111a5,0x674801a2,0x61a31748,0x31a41748,0x47491748,0x11a601ab,0x674801a7,0x61a81748,
+        0x31a91748,0x41aa1748,0x87491748,0x674801ac,0x61ad1748,0x31ae1748,0x41af1748,0x87491748,
+        0x71b101fb,0x21b211c9,0x11b311b8,0x674811b4,0x61b50748,0x81b60748,0xa1b70748,0xb7490748,
+        0x11b901c4,0x61ba01bd,0x81bb0748,0xa1bc0748,0xb7490748,0x61be11c1,0x81bf0748,0xa1c00748,
+        0xb7490748,0x81c20748,0xa1c30748,0xb7490748,0x674811c5,0x61c60748,0x81c70748,0xa1c80748,
+        0xb7490748,0x21ca01e4,0x11cb11d0,0x674811cc,0x61cd0748,0x81ce0748,0xa1cf0748,0xb7490748,
+        0x11d101df,0x61d201d6,0xa1d30748,0xb1d40748,0x374901d5,0x87490748,0x61d711db,0xa1d80748,
+        0xb1d90748,0x374901da,0x87490748,0xa1dc0748,0xb1dd0748,0x374901de,0x87490748,0x674811e0,
+        0x61e10748,0x81e20748,0xa1e30748,0xb7490748,0x11e511ea,0x674811e6,0x61e70748,0x81e80748,
+        0xa1e90748,0xb7490748,0x11eb01f6,0x61ec01ef,0x81ed0748,0xa1ee0748,0xb7490748,0x61f011f3,
+        0x81f10748,0xa1f20748,0xb7490748,0x81f40748,0xa1f50748,0xb7490748,0x674811f7,0x61f80748,
+        0x81f90748,0xa1fa0748,0xb7490748,0x274811fc,0x21fd0748,0x174811fe,0x11ff0748,0x62000204,
+        0xa2010748,0xb2020748,0x37490203,0x87490748,0x62051209,0xa2060748,0xb2070748,0x37490208,
+        0x87490748,0xa20a0748,0xb20b0748,0x3749020c,0x87490748,0x220e1220,0x7748020f,0x72101748,
+        0x12111215,0x67480212,0x62131748,0x32141748,0x47491748,0x1216021b,0x67480217,0x62181748,
+        0x32191748,0x421a1748,0x87491748,0x6748021c,0x621d1748,0x321e1748,0x421f1748,0x87491748,
+        0x22210748,0x72220232,0x17481223,0x12240748,0x62250229,0x32260748,0x42270748,0xa2280748,
+        0xb7490748,0x622a122e,0x322b0748,0x422c0748,0xa22d0748,0xb7490748,0x322f0748,0x42300748,
+        0xa2310748,0xb7490748,0x72331243,0x17481234,0x12350748,0x6236023a,0x32370748,0x42380748,
+        0xa2390748,0xb7490748,0x623b123f,0x323c0748,0x423d0748,0xa23e0748,0xb7490748,0x32400748,
+        0x42410748,0xa2420748,0xb7490748,0x17481244,0x12450748,0x6246024a,0x32470748,0x42480748,
+        0xa2490748,0xb7490748,0x624b124f,0x324c0748,0x424d0748,0xa24e0748,0xb7490748,0x32500748,
+        0x42510748,0xa2520748,0xb7490748,0x2254126e,0x72550748,0x97481256,0x92570748,0x1258125d,
+        0x67481259,0x625a0748,0x825b0748,0xa25c0748,0xb7490748,0x125e0269,0x625f0262,0x82600748,
+        0xa2610748,0xb7490748,0x62631266,0x82640748,0xa2650748,0xb7490748,0x82670748,0xa2680748,
+        0xb7490748,0x6748126a,0x626b0748,0x826c0748,0xa26d0748,0xb7490748,0x226f0311,0x727012a2,
+        0x92711281,0x17481272,0x12730748,0x62740278,0x32750748,0x42760748,0xa2770748,0xb7490748,
+        0x6279127d,0x327a0748,0x427b0748,0xa27c0748,0xb7490748,0x327e0748,0x427f0748,0xa2800748,
+        0xb7490748,0x92820292,0x17481283,0x12840748,0x62850289,0xa2860748,0xb2870748,0x37490288,
+        0x87490748,0x628a128e,0xa28b0748,0xb28c0748,0x3749028d,0x87490748,0xa28f0748,0xb2900748,
+        0x37490291,0x87490748,0x17481293,0x12940748,0x62950299,0x32960748,0x42970748,0xa2980748,
+        0xb7490748,0x629a129e,0x329b0748,0x429c0748,0xa29d0748,0xb7490748,0x329f0748,0x42a00748,
+        0xa2a10748,0xb7490748,0x92a312c4,0x72a402b4,0x174812a5,0x12a60748,0x62a702ab,0x32a80748,
+        0x42a90748,0xa2aa0748,0xb7490748,0x62ac12b0,0x32ad0748,0x42ae0748,0xa2af0748,0xb7490748,
+        0x32b10748,0x42b20748,0xa2b30748,0xb7490748,0x174812b5,0x12b60748,0x62b702bb,0x32b80748,
+        0x42b90748,0xa2ba0748,0xb7490748,0x62bc12c0,0x32bd0748,0x42be0748,0xa2bf0748,0xb7490748,
+        0x32c10748,0x42c20748,0xa2c30748,0xb7490748,0x72c502f0,0x92c602e0,0x12c712cc,0x674812c8,
+        0x62c90748,0x82ca0748,0xa2cb0748,0xb7490748,0x12cd02db,0x62ce02d2,0xa2cf0748,0xb2d00748,
+        0x374902d1,0x87490748,0x62d312d7,0xa2d40748,0xb2d50748,0x374902d6,0x87490748,0xa2d80748,
+        0xb2d90748,0x374902da,0x87490748,0x674812dc,0x62dd0748,0x82de0748,0xa2df0748,0xb7490748,
+        0x174812e1,0x12e20748,0x62e302e7,0x32e40748,0x42e50748,0xa2e60748,0xb7490748,0x62e812ec,
+        0x32e90748,0x42ea0748,0xa2eb0748,0xb7490748,0x32ed0748,0x42ee0748,0xa2ef0748,0xb7490748,
+        0x92f10301,0x174812f2,0x12f30748,0x62f402f8,0xa2f50748,0xb2f60748,0x374902f7,0x87490748,
+        0x62f912fd,0xa2fa0748,0xb2fb0748,0x374902fc,0x87490748,0xa2fe0748,0xb2ff0748,0x37490300,
+        0x87490748,0x17481302,0x13030748,0x63040308,0x33050748,0x43060748,0xa3070748,0xb7490748,
+        0x6309130d,0x330a0748,0x430b0748,0xa30c0748,0xb7490748,0x330e0748,0x430f0748,0xa3100748,
+        0xb7490748,0x73120748,0x97481313,0x93140748,0x1315131a,0x67481316,0x63170748,0x83180748,
+        0xa3190748,0xb7490748,0x131b0326,0x631c031f,0x831d0748,0xa31e0748,0xb7490748,0x63201323,
+        0x83210748,0xa3220748,0xb7490748,0x83240748,0xa3250748,0xb7490748,0x67481327,0x63280748,
+        0x83290748,0xa32a0748,0xb7490748,0x032c1655,0x532d1431,0x932e0360,0x2748032f,0x23301748,
+        0x7331033d,0x17480332,0x13331748,0x63341336,0x33351748,0x47491748,0x6337033a,0x33381748,
+        0x43391748,0xb7491748,0x333b1748,0x433c1748,0xb7491748,0x733e1354,0x133f0344,0x67480340,
+        0x63411748,0x33421748,0x43431748,0x87491748,0x1345134f,0x63461348,0x33471748,0x47491748,
+        0x6349034c,0x334a1748,0x434b1748,0xb7491748,0x334d1748,0x434e1748,0xb7491748,0x67480350,
+        0x63511748,0x33521748,0x43531748,0x87491748,0x17480355,0x13561748,0x63571359,0x33581748,
+        0x47491748,0x635a035d,0x335b1748,0x435c1748,0xb7491748,0x335e1748,0x435f1748,0xb7491748,
+        0x936113ff,0x7362037b,0x27480363,0x23641748,0x17480365,0x13661748,0x6367036d,0xb3681748,
+        0x3369136b,0x4749136a,0xa7491748,0x836c1748,0xa7491748,0x636e1375,0x336f1372,0x47491370,
+        0xa3711748,0xb7491748,0x83731748,0xa3741748,0xb7491748,0xb3761748,0x33771379,0x47491378,
+        0xa7491748,0x837a1748,0xa7491748,0x737c13e6,0x237d039d,0x137e0386,0x6748037f,0x63801748,
+        0x83811748,0x43821384,0x37491383,0xa7491748,0xa3851748,0xb7491748,0x13871395,0x6388038b,
+        0x83891748,0xa38a1748,0xb7491748,0x638c1392,0x838d1748,0x438e1390,0x3749138f,0xa7491748,
+        0xa3911748,0xb7491748,0x83931748,0xa3941748,0xb7491748,0x67480396,0x63971748,0x83981748,
+        0x4399139b,0x3749139a,0xa7491748,0xa39c1748,0xb7491748,0x239e13c6,0x139f03a7,0x674803a0,
+        0x63a11748,0x83a21748,0x43a313a5,0x374913a4,0xa7491748,0xa3a61748,0xb7491748,0x13a813be,
+        0x63a903af,0xb3aa1748,0x33ab13ad,0x474913ac,0xa7491748,0x83ae1748,0xa7491748,0x63b013b8,
+        0x33b113b4,0x474913b2,0xa3b31748,0xb7491748,0x83b51748,0xa3b61748,0x474913b7,0xb7491748,
+        0xb3b91748,0x33ba13bc,0x474913bb,0xa7491748,0x83bd1748,0xa7491748,0x674803bf,0x63c01748,
+        0x83c11748,0x43c213c4,0x374913c3,0xa7491748,0xa3c51748,0xb7491748,0x13c703cf,0x674803c8,
+        0x63c91748,0x83ca1748,0x43cb13cd,0x374913cc,0xa7491748,0xa3ce1748,0xb7491748,0x13d013de,
+        0x63d103d4,0x83d21748,0xa3d31748,0xb7491748,0x63d513db,0x83d61748,0x43d713d9,0x374913d8,
+        0xa7491748,0xa3da1748,0xb7491748,0x83dc1748,0xa3dd1748,0xb7491748,0x674803df,0x63e01748,
+        0x83e11748,0x43e213e4,0x374913e3,0xa7491748,0xa3e51748,0xb7491748,0x274803e7,0x23e81748,
+        0x174803e9,0x13ea1748,0x63eb03f1,0xb3ec1748,0x33ed13ef,0x474913ee,0xa7491748,0x83f01748,
+        0xa7491748,0x63f213f9,0x33f313f6,0x474913f4,0xa3f51748,0xb7491748,0x83f71748,0xa3f81748,
+        0xb7491748,0xb3fa1748,0x33fb13fd,0x474913fc,0xa7491748,0x83fe1748,0xa7491748,0x27480400,
+        0x24011748,0x7402040e,0x17480403,0x14041748,0x64051407,0x34061748,0x47491748,0x6408040b,
+        0x34091748,0x440a1748,0xb7491748,0x340c1748,0x440d1748,0xb7491748,0x740f1425,0x14100415,
+        0x67480411,0x64121748,0x34131748,0x44141748,0x87491748,0x14161420,0x64171419,0x34181748,
+        0x47491748,0x641a041d,0x341b1748,0x441c1748,0xb7491748,0x341e1748,0x441f1748,0xb7491748,
+        0x67480421,0x64221748,0x34231748,0x44241748,0x87491748,0x17480426,0x14271748,0x6428142a,
+        0x34291748,0x47491748,0x642b042e,0x342c1748,0x442d1748,0xb7491748,0x342f1748,0x44301748,
+        0xb7491748,0x5432057d,0x2433048b,0x7434144d,0x97480435,0x94361748,0x1437043c,0x67480438,
+        0x64391748,0x843a1748,0xa43b1748,0xb7491748,0x143d1448,0x643e0441,0x843f1748,0xa4401748,
+        0xb7491748,0x64421445,0x84431748,0xa4441748,0xb7491748,0x84461748,0xa4471748,0xb7491748,
+        0x67480449,0x644a1748,0x844b1748,0xa44c1748,0xb7491748,0x744e0748,0x944f145f,0x14500454,
+        0x67481451,0x64520748,0x34530748,0x47490748,0x1455145a,0x67481456,0x64570748,0x34580748,
+        0x44590748,0x87490748,0x6748145b,0x645c0748,0x345d0748,0x445e0748,0x87490748,0x9460047b,
+        0x14611469,0x67481462,0x64630748,0x84640748,0x44650467,0x37490466,0xa7490748,0xa4680748,
+        0xb7490748,0x146a0473,0x6748146b,0x646c0748,0x446d0470,0x3749046e,0x846f0748,0xa7490748,
+        0x84710748,0xa4720748,0xb7490748,0x67481474,0x64750748,0x84760748,0x44770479,0x37490478,
+        0xa7490748,0xa47a0748,0xb7490748,0x147c0480,0x6748147d,0x647e0748,0x347f0748,0x47490748,
+        0x14811486,0x67481482,0x64830748,0x34840748,0x44850748,0x87490748,0x67481487,0x64880748,
+        0x34890748,0x448a0748,0x87490748,0x248c1547,0x748d14c9,0x948e049e,0x1748048f,0x14901748,
+        0x64910495,0x34921748,0x44931748,0xa4941748,0xb7491748,0x6496149a,0x34971748,0x44981748,
+        0xa4991748,0xb7491748,0x349b1748,0x449c1748,0xa49d1748,0xb7491748,0x949f14b9,0x14a004a5,
+        0x674804a1,0x64a21748,0x84a31748,0xa4a41748,0xb7491748,0x14a614b4,0x64a704ab,0xa4a81748,
+        0xb4a91748,0x374914aa,0x87491748,0x64ac14b0,0xa4ad1748,0xb4ae1748,0x374914af,0x87491748,
+        0xa4b11748,0xb4b21748,0x374914b3,0x87491748,0x674804b5,0x64b61748,0x84b71748,0xa4b81748,
+        0xb7491748,0x174804ba,0x14bb1748,0x64bc04c0,0x34bd1748,0x44be1748,0xa4bf1748,0xb7491748,
+        0x64c114c5,0x34c21748,0x44c31748,0xa4c41748,0xb7491748,0x34c61748,0x44c71748,0xa4c81748,
+        0xb7491748,0x74ca0515,0x94cb14db,0x174804cc,0x14cd1748,0x64ce04d2,0xa4cf1748,0xb4d01748,
+        0x374914d1,0x87491748,0x64d314d7,0xa4d41748,0xb4d51748,0x374914d6,0x87491748,0xa4d81748,
+        0xb4d91748,0x374914da,0x87491748,0x94dc0505,0x14dd04e5,0x674814de,0x64df0748,0x84e00748,
+        0x44e104e3,0x374904e2,0xa7490748,0xa4e40748,0xb7490748,0x14e614fd,0x64e714eb,0x34e81748,
+        0x44e91748,0xa4ea1748,0xb7491748,0x64ec04f9,0x44ed14f3,0xa4ee04f0,0x84ef0748,0xb7490748,
+        0x34f11748,0xb4f21748,0xa7491748,0x84f40748,0xa4f504f7,0x474904f6,0xb7490748,0x34f80748,
+        0x47490748,0x34fa1748,0x44fb1748,0xa4fc1748,0xb7491748,0x674814fe,0x64ff0748,0x85000748,
+        0x45010503,0x37490502,0xa7490748,0xa5040748,0xb7490748,0x17480506,0x15071748,0x6508050c,
+        0x35091748,0x450a1748,0xa50b1748,0xb7491748,0x650d1511,0x350e1748,0x450f1748,0xa5101748,
+        0xb7491748,0x35121748,0x45131748,0xa5141748,0xb7491748,0x95160526,0x17480517,0x15181748,
+        0x6519051d,0x351a1748,0x451b1748,0xa51c1748,0xb7491748,0x651e1522,0x351f1748,0x45201748,
+        0xa5211748,0xb7491748,0x35231748,0x45241748,0xa5251748,0xb7491748,0x95271537,0x17480528,
+        0x15291748,0x652a052e,0xa52b1748,0xb52c1748,0x3749152d,0x87491748,0x652f1533,0xa5301748,
+        0xb5311748,0x37491532,0x87491748,0xa5341748,0xb5351748,0x37491536,0x87491748,0x17480538,
+        0x15391748,0x653a053e,0x353b1748,0x453c1748,0xa53d1748,0xb7491748,0x653f1543,0x35401748,
+        0x45411748,0xa5421748,0xb7491748,0x35441748,0x45451748,0xa5461748,0xb7491748,0x75480564,
+        0x97481549,0x954a0748,0x154b0553,0x6748154c,0x654d0748,0x854e0748,0x454f0551,0x37490550,
+        0xa7490748,0xa5520748,0xb7490748,0x1554155c,0x67481555,0x65560748,0x85570748,0x4558055a,
+        0x37490559,0xa7490748,0xa55b0748,0xb7490748,0x6748155d,0x655e0748,0x855f0748,0x45600562,
+        0x37490561,0xa7490748,0xa5630748,0xb7490748,0x95651748,0x75661748,0x1567056c,0x67480568,
+        0x65691748,0x856a1748,0xa56b1748,0xb7491748,0x156d1578,0x656e0571,0x856f1748,0xa5701748,
+        0xb7491748,0x65721575,0x85731748,0xa5741748,0xb7491748,0x85761748,0xa5771748,0xb7491748,
+        0x67480579,0x657a1748,0x857b1748,0xa57c1748,0xb7491748,0x257e0598,0x757f1748,0x97480580,
+        0x95811748,0x15820587,0x67480583,0x65841748,0x85851748,0xa5861748,0xb7491748,0x15881593,
+        0x6589058c,0x858a1748,0xa58b1748,0xb7491748,0x658d1590,0x858e1748,0xa58f1748,0xb7491748,
+        0x85911748,0xa5921748,0xb7491748,0x67480594,0x65951748,0x85961748,0xa5971748,0xb7491748,
+        0x2599163b,0x759a05cc,0x959b05ab,0x1748059c,0x159d1748,0x659e05a2,0x359f1748,0x45a01748,
+        0xa5a11748,0xb7491748,0x65a315a7,0x35a41748,0x45a51748,0xa5a61748,0xb7491748,0x35a81748,
+        0x45a91748,0xa5aa1748,0xb7491748,0x95ac15bc,0x174805ad,0x15ae1748,0x65af05b3,0xa5b01748,
+        0xb5b11748,0x374915b2,0x87491748,0x65b415b8,0xa5b51748,0xb5b61748,0x374915b7,0x87491748,
+        0xa5b91748,0xb5ba1748,0x374915bb,0x87491748,0x174805bd,0x15be1748,0x65bf05c3,0x35c01748,
+        0x45c11748,0xa5c21748,0xb7491748,0x65c415c8,0x35c51748,0x45c61748,0xa5c71748,0xb7491748,
+        0x35c91748,0x45ca1748,0xa5cb1748,0xb7491748,0x95cd05ee,0x75ce15de,0x174805cf,0x15d01748,
+        0x65d105d5,0x35d21748,0x45d31748,0xa5d41748,0xb7491748,0x65d615da,0x35d71748,0x45d81748,
+        0xa5d91748,0xb7491748,0x35db1748,0x45dc1748,0xa5dd1748,0xb7491748,0x174805df,0x15e01748,
+        0x65e105e5,0x35e21748,0x45e31748,0xa5e41748,0xb7491748,0x65e615ea,0x35e71748,0x45e81748,
+        0xa5e91748,0xb7491748,0x35eb1748,0x45ec1748,0xa5ed1748,0xb7491748,0x75ef161a,0x95f0160a,
+        0x15f105f6,0x674805f2,0x65f31748,0x85f41748,0xa5f51748,0xb7491748,0x15f71605,0x65f805fc,
+        0xa5f91748,0xb5fa1748,0x374915fb,0x87491748,0x65fd1601,0xa5fe1748,0xb5ff1748,0x37491600,
+        0x87491748,0xa6021748,0xb6031748,0x37491604,0x87491748,0x67480606,0x66071748,0x86081748,
+        0xa6091748,0xb7491748,0x1748060b,0x160c1748,0x660d0611,0x360e1748,0x460f1748,0xa6101748,
+        0xb7491748,0x66121616,0x36131748,0x46141748,0xa6151748,0xb7491748,0x36171748,0x46181748,
+        0xa6191748,0xb7491748,0x961b162b,0x1748061c,0x161d1748,0x661e0622,0xa61f1748,0xb6201748,
+        0x37491621,0x87491748,0x66231627,0xa6241748,0xb6251748,0x37491626,0x87491748,0xa6281748,
+        0xb6291748,0x3749162a,0x87491748,0x1748062c,0x162d1748,0x662e0632,0x362f1748,0x46301748,
+        0xa6311748,0xb7491748,0x66331637,0x36341748,0x46351748,0xa6361748,0xb7491748,0x36381748,
+        0x46391748,0xa63a1748,0xb7491748,0x763c1748,0x9748063d,0x963e1748,0x163f0644,0x67480640,
+        0x66411748,0x86421748,0xa6431748,0xb7491748,0x16451650,0x66460649,0x86471748,0xa6481748,
+        0xb7491748,0x664a164d,0x864b1748,0xa64c1748,0xb7491748,0x864e1748,0xa64f1748,0xb7491748,
+        0x67480651,0x66521748,0x86531748,0xa6541748,0xb7491748,0x565616cf,0x77480657,0x76581748,
+        0x26590675,0x9748065a,0x965b1748,0x165c0664,0x6748065d,0x665e1748,0x865f1748,0x46601662,
+        0x37491661,0xa7491748,0xa6631748,0xb7491748,0x1665166d,0x67480666,0x66671748,0x86681748,
+        0x4669166b,0x3749166a,0xa7491748,0xa66c1748,0xb7491748,0x6748066e,0x666f1748,0x86701748,
+        0x46711673,0x37491672,0xa7491748,0xa6741748,0xb7491748,0x267616b3,0x96770687,0x1678167c,
+        0x67480679,0x667a1748,0x367b1748,0x47491748,0x167d0682,0x6748067e,0x667f1748,0x36801748,
+        0x46811748,0x87491748,0x67480683,0x66841748,0x36851748,0x46861748,0x87491748,0x968816a3,
+        0x16890691,0x6748068a,0x668b1748,0x868c1748,0x468d168f,0x3749168e,0xa7491748,0xa6901748,
+        0xb7491748,0x1692169b,0x67480693,0x66941748,0x46951698,0x37491696,0x86971748,0xa7491748,
+        0x86991748,0xa69a1748,0xb7491748,0x6748069c,0x669d1748,0x869e1748,0x469f16a1,0x374916a0,
+        0xa7491748,0xa6a21748,0xb7491748,0x16a416a8,0x674806a5,0x66a61748,0x36a71748,0x47491748,
+        0x16a906ae,0x674806aa,0x66ab1748,0x36ac1748,0x46ad1748,0x87491748,0x674806af,0x66b01748,
+        0x36b11748,0x46b21748,0x87491748,0x974806b4,0x96b51748,0x16b606be,0x674806b7,0x66b81748,
+        0x86b91748,0x46ba16bc,0x374916bb,0xa7491748,0xa6bd1748,0xb7491748,0x16bf16c7,0x674806c0,
+        0x66c11748,0x86c21748,0x46c316c5,0x374916c4,0xa7491748,0xa6c61748,0xb7491748,0x674806c8,
+        0x66c91748,0x86ca1748,0x46cb16cd,0x374916cc,0xa7491748,0xa6ce1748,0xb7491748,0x56d00748,
+        0x76d10748,0x26d216ee,0x974816d3,0x96d40748,0x16d506dd,0x674816d6,0x66d70748,0x86d80748,
+        0x46d906db,0x374906da,0xa7490748,0xa6dc0748,0xb7490748,0x16de16e6,0x674816df,0x66e00748,
+        0x86e10748,0x46e206e4,0x374906e3,0xa7490748,0xa6e50748,0xb7490748,0x674816e7,0x66e80748,
+        0x86e90748,0x46ea06ec,0x374906eb,0xa7490748,0xa6ed0748,0xb7490748,0x26ef072c,0x96f01700,
+        0x16f106f5,0x674816f2,0x66f30748,0x36f40748,0x47490748,0x16f616fb,0x674816f7,0x66f80748,
+        0x36f90748,0x46fa0748,0x87490748,0x674816fc,0x66fd0748,0x36fe0748,0x46ff0748,0x87490748,
+        0x9701071c,0x1702170a,0x67481703,0x67040748,0x87050748,0x47060708,0x37490707,0xa7490748,
+        0xa7090748,0xb7490748,0x170b0714,0x6748170c,0x670d0748,0x470e0711,0x3749070f,0x87100748,
+        0xa7490748,0x87120748,0xa7130748,0xb7490748,0x67481715,0x67160748,0x87170748,0x4718071a,
+        0x37490719,0xa7490748,0xa71b0748,0xb7490748,0x171d0721,0x6748171e,0x671f0748,0x37200748,
+        0x47490748,0x17221727,0x67481723,0x67240748,0x37250748,0x47260748,0x87490748,0x67481728,
+        0x67290748,0x372a0748,0x472b0748,0x87490748,0x9748172d,0x972e0748,0x172f0737,0x67481730,
+        0x67310748,0x87320748,0x47330735,0x37490734,0xa7490748,0xa7360748,0xb7490748,0x17381740,
+        0x67481739,0x673a0748,0x873b0748,0x473c073e,0x3749073d,0xa7490748,0xa73f0748,0xb7490748,
+        0x67481741,0x67420748,0x87430748,0x47440746,0x37490745,0xa7490748,0xa7470748,0xb7490748,
+        0x000000fe,0x000000ff};
+
+    static const unsigned long table_9_16_corner_struct[] =
+    {       0x00010138,0x200200d3,0x4003008a,0x50040051,0x70050027,0x30060016,0x1007000d,0x6008000a,
+        0x82ad0009,0xf2ad02ac,0xd00b02ac,0xe00c02ac,0xf2ad02ac,0x800e02ac,0x900f02ac,0xa01002ac,
+        0x62ad0011,0xb01202ac,0xc01302ac,0xd01402ac,0xe01502ac,0xf2ad02ac,0xa01702ac,0xb01802ac,
+        0xc01902ac,0x801a0023,0x901b001f,0x62ad001c,0xd01d02ac,0xe01e02ac,0xf2ad02ac,0x102002ac,
+        0xd02102ac,0xe02202ac,0xf2ad02ac,0x102402ac,0xd02502ac,0xe02602ac,0xf2ad02ac,0x70281041,
+        0xe0290038,0xf02a02ac,0x102b0032,0x302c002e,0x62ad002d,0xd2ad02ac,0xa02f02ac,0xb03002ac,
+        0xc03102ac,0xd2ad02ac,0x803302ac,0x903402ac,0xa03502ac,0xb03602ac,0xc03702ac,0xd2ad02ac,
+        0xe03912ac,0x803a12ac,0x903b12ac,0xa03c12ac,0xb03d12ac,0xc03e12ac,0xd03f12ac,0x62ad1040,
+        0xf2ad12ac,0xe04202ac,0xf04302ac,0x1044004b,0x30450047,0x62ad0046,0xd2ad02ac,0xa04802ac,
+        0xb04902ac,0xc04a02ac,0xd2ad02ac,0x804c02ac,0x904d02ac,0xa04e02ac,0xb04f02ac,0xc05002ac,
+        0xd2ad02ac,0x5052106e,0xc0530064,0xd05402ac,0xe05502ac,0xf056005e,0x1057005a,0x32ad0058,
+        0xa05902ac,0xb2ad02ac,0x805b02ac,0x905c02ac,0xa05d02ac,0xb2ad02ac,0x605f02ac,0x706002ac,
+        0x806102ac,0x906202ac,0xa06302ac,0xb2ad02ac,0xc06512ac,0x706612ac,0x806712ac,0x906812ac,
+        0xa06912ac,0xb06a12ac,0xd06b12ac,0x62ad106c,0xe06d12ac,0xf2ad12ac,0xc06f0080,0xd07002ac,
+        0xe07102ac,0xf072007a,0x10730076,0x32ad0074,0xa07502ac,0xb2ad02ac,0x807702ac,0x907802ac,
+        0xa07902ac,0xb2ad02ac,0x607b02ac,0x707c02ac,0x807d02ac,0x907e02ac,0xa07f02ac,0xb2ad02ac,
+        0xc08112ac,0x708212ac,0x808312ac,0x908412ac,0xa08512ac,0xb08612ac,0xd08712ac,0xe08812ac,
+        0x62ad1089,0xf2ad12ac,0x408b10b1,0xb08c00a1,0xc08d02ac,0xd08e02ac,0xa08f009d,0xe0900098,
+        0xf0910094,0x12ad0092,0x809302ac,0x92ad02ac,0x609502ac,0x709602ac,0x809702ac,0x92ad02ac,
+        0x509902ac,0x609a02ac,0x709b02ac,0x809c02ac,0x92ad02ac,0x109e02ac,0x309f02ac,0xe0a002ac,
+        0xf2ad02ac,0xb0a212ac,0x70a312ac,0x80a412ac,0x90a512ac,0xa0a612ac,0x60a710ad,0x50a810aa,
+        0x32ad10a9,0xc2ad12ac,0xc0ab12ac,0xd0ac12ac,0xe2ad12ac,0xc0ae12ac,0xd0af12ac,0xe0b012ac,
+        0xf2ad12ac,0xb0b200c7,0xc0b302ac,0xd0b402ac,0xa0b500c3,0xe0b600be,0xf0b700ba,0x12ad00b8,
+        0x80b902ac,0x92ad02ac,0x60bb02ac,0x70bc02ac,0x80bd02ac,0x92ad02ac,0x50bf02ac,0x60c002ac,
+        0x70c102ac,0x80c202ac,0x92ad02ac,0x10c402ac,0x30c502ac,0xe0c602ac,0xf2ad02ac,0xb0c812ac,
+        0x70c912ac,0x80ca12ac,0x90cb12ac,0xa0cc12ac,0xc0cd12ac,0xd0ce12ac,0x60cf10d1,0x52ad10d0,
+        0xe2ad12ac,0xe0d212ac,0xf2ad12ac,0x20d4110a,0x90d500ef,0xa0d602ac,0xb0d702ac,0x80d800ea,
+        0xc0d900e5,0xd0da00e1,0xe0db00de,0xf2ad00dc,0x60dd02ac,0x72ad02ac,0x50df02ac,0x60e002ac,
+        0x72ad02ac,0x40e202ac,0x50e302ac,0x60e402ac,0x72ad02ac,0x30e602ac,0x40e702ac,0x50e802ac,
+        0x60e902ac,0x72ad02ac,0x10eb02ac,0xc0ec02ac,0xd0ed02ac,0xe0ee02ac,0xf2ad02ac,0x90f012ac,
+        0x70f112ac,0x80f212ac,0x60f31104,0x50f410ff,0x40f510fb,0x30f610f8,0x12ad10f7,0xa2ad12ac,
+        0xa0f912ac,0xb0fa12ac,0xc2ad12ac,0xa0fc12ac,0xb0fd12ac,0xc0fe12ac,0xd2ad12ac,0xa10012ac,
+        0xb10112ac,0xc10212ac,0xd10312ac,0xe2ad12ac,0xa10512ac,0xb10612ac,0xc10712ac,0xd10812ac,
+        0xe10912ac,0xf2ad12ac,0x910b0125,0xa10c02ac,0xb10d02ac,0x810e0120,0xc10f011b,0xd1100117,
+        0xe1110114,0xf2ad0112,0x611302ac,0x72ad02ac,0x511502ac,0x611602ac,0x72ad02ac,0x411802ac,
+        0x511902ac,0x611a02ac,0x72ad02ac,0x311c02ac,0x411d02ac,0x511e02ac,0x611f02ac,0x72ad02ac,
+        0x112102ac,0xc12202ac,0xd12302ac,0xe12402ac,0xf2ad02ac,0x912612ac,0x712712ac,0x812812ac,
+        0xa12912ac,0xb12a12ac,0x612b1134,0x512c1131,0x412d112f,0x32ad112e,0xc2ad12ac,0xc13012ac,
+        0xd2ad12ac,0xc13212ac,0xd13312ac,0xe2ad12ac,0xc13512ac,0xd13612ac,0xe13712ac,0xf2ad12ac,
+        0x01391270,0x213a0170,0x913b0155,0x713c02ac,0x813d02ac,0x613e014f,0x513f014a,0x41400146,
+        0x31410143,0x12ad0142,0xa2ad02ac,0xa14402ac,0xb14502ac,0xc2ad02ac,0xa14702ac,0xb14802ac,
+        0xc14902ac,0xd2ad02ac,0xa14b02ac,0xb14c02ac,0xc14d02ac,0xd14e02ac,0xe2ad02ac,0xa15002ac,
+        0xb15102ac,0xc15202ac,0xd15302ac,0xe15402ac,0xf2ad02ac,0x915612ac,0xa15712ac,0xb15812ac,
+        0x8159116b,0xc15a1166,0xd15b1162,0xe15c115f,0xf2ad115d,0x615e12ac,0x72ad12ac,0x516012ac,
+        0x616112ac,0x72ad12ac,0x416312ac,0x516412ac,0x616512ac,0x72ad12ac,0x316712ac,0x416812ac,
+        0x516912ac,0x616a12ac,0x72ad12ac,0x116c12ac,0xc16d12ac,0xd16e12ac,0xe16f12ac,0xf2ad12ac,
+        0x21711242,0x41720198,0xb1730182,0x717402ac,0x817502ac,0x917602ac,0xa17702ac,0x6178017e,
+        0x5179017b,0x32ad017a,0xc2ad02ac,0xc17c02ac,0xd17d02ac,0xe2ad02ac,0xc17f02ac,0xd18002ac,
+        0xe18102ac,0xf2ad02ac,0xb18312ac,0xc18412ac,0xd18512ac,0xa1861194,0xe187118f,0xf188118b,
+        0x12ad1189,0x818a12ac,0x92ad12ac,0x618c12ac,0x718d12ac,0x818e12ac,0x92ad12ac,0x519012ac,
+        0x619112ac,0x719212ac,0x819312ac,0x92ad12ac,0x119512ac,0x319612ac,0xe19712ac,0xf2ad12ac,
+        0x41991220,0x519a01b6,0xc19b01a4,0x719c02ac,0x819d02ac,0x919e02ac,0xa19f02ac,0xb1a002ac,
+        0xd1a102ac,0x62ad01a2,0xe1a302ac,0xf2ad02ac,0xc1a512ac,0xd1a612ac,0xe1a712ac,0xf1a811b0,
+        0x11a911ac,0x32ad11aa,0xa1ab12ac,0xb2ad12ac,0x81ad12ac,0x91ae12ac,0xa1af12ac,0xb2ad12ac,
+        0x61b112ac,0x71b212ac,0x81b312ac,0x91b412ac,0xa1b512ac,0xb2ad12ac,0x51b71204,0x71b801d1,
+        0xe1b901c1,0x81ba02ac,0x91bb02ac,0xa1bc02ac,0xb1bd02ac,0xc1be02ac,0xd1bf02ac,0x62ad01c0,
+        0xf2ad02ac,0xe1c212ac,0xf1c312ac,0x11c411cb,0x31c511c7,0x62ad11c6,0xd2ad12ac,0xa1c812ac,
+        0xb1c912ac,0xc1ca12ac,0xd2ad12ac,0x81cc12ac,0x91cd12ac,0xa1ce12ac,0xb1cf12ac,0xc1d012ac,
+        0xd2ad12ac,0x71d211f4,0x31d311e3,0x11d411da,0x61d511d7,0x82ad11d6,0xf2ad12ac,0xd1d812ac,
+        0xe1d912ac,0xf2ad12ac,0x81db12ac,0x91dc12ac,0xa1dd12ac,0x62ad11de,0xb1df12ac,0xc1e012ac,
+        0xd1e112ac,0xe1e212ac,0xf2ad12ac,0xa1e412ac,0xb1e512ac,0xc1e612ac,0x81e711f0,0x91e811ec,
+        0x62ad11e9,0xd1ea12ac,0xe1eb12ac,0xf2ad12ac,0x11ed12ac,0xd1ee12ac,0xe1ef12ac,0xf2ad12ac,
+        0x11f112ac,0xd1f212ac,0xe1f312ac,0xf2ad12ac,0xe1f512ac,0xf1f612ac,0x11f711fe,0x31f811fa,
+        0x62ad11f9,0xd2ad12ac,0xa1fb12ac,0xb1fc12ac,0xc1fd12ac,0xd2ad12ac,0x81ff12ac,0x920012ac,
+        0xa20112ac,0xb20212ac,0xc20312ac,0xd2ad12ac,0xc205020e,0x720602ac,0x820702ac,0x920802ac,
+        0xa20902ac,0xb20a02ac,0xd20b02ac,0xe20c02ac,0x62ad020d,0xf2ad02ac,0xc20f12ac,0xd21012ac,
+        0xe21112ac,0xf212121a,0x12131216,0x32ad1214,0xa21512ac,0xb2ad12ac,0x821712ac,0x921812ac,
+        0xa21912ac,0xb2ad12ac,0x621b12ac,0x721c12ac,0x821d12ac,0x921e12ac,0xa21f12ac,0xb2ad12ac,
+        0xb221022c,0x722202ac,0x822302ac,0x922402ac,0xa22502ac,0xc22602ac,0xd22702ac,0x6228022a,
+        0x52ad0229,0xe2ad02ac,0xe22b02ac,0xf2ad02ac,0xb22d12ac,0xc22e12ac,0xd22f12ac,0xa230123e,
+        0xe2311239,0xf2321235,0x12ad1233,0x823412ac,0x92ad12ac,0x623612ac,0x723712ac,0x823812ac,
+        0x92ad12ac,0x523a12ac,0x623b12ac,0x723c12ac,0x823d12ac,0x92ad12ac,0x123f12ac,0x324012ac,
+        0xe24112ac,0xf2ad12ac,0x92430255,0x724402ac,0x824502ac,0xa24602ac,0xb24702ac,0x62480251,
+        0x5249024e,0x424a024c,0x32ad024b,0xc2ad02ac,0xc24d02ac,0xd2ad02ac,0xc24f02ac,0xd25002ac,
+        0xe2ad02ac,0xc25202ac,0xd25302ac,0xe25402ac,0xf2ad02ac,0x925612ac,0xa25712ac,0xb25812ac,
+        0x8259126b,0xc25a1266,0xd25b1262,0xe25c125f,0xf2ad125d,0x625e12ac,0x72ad12ac,0x526012ac,
+        0x626112ac,0x72ad12ac,0x426312ac,0x526412ac,0x626512ac,0x72ad12ac,0x326712ac,0x426812ac,
+        0x526912ac,0x626a12ac,0x72ad12ac,0x126c12ac,0xc26d12ac,0xd26e12ac,0xe26f12ac,0xf2ad12ac,
+        0x7271028e,0x827202ac,0x927302ac,0x62740288,0x52750283,0x4276027f,0x3277027c,0x2278027a,
+        0x12ad0279,0xa2ad02ac,0xa27b02ac,0xb2ad02ac,0xa27d02ac,0xb27e02ac,0xc2ad02ac,0xa28002ac,
+        0xb28102ac,0xc28202ac,0xd2ad02ac,0xa28402ac,0xb28502ac,0xc28602ac,0xd28702ac,0xe2ad02ac,
+        0xa28902ac,0xb28a02ac,0xc28b02ac,0xd28c02ac,0xe28d02ac,0xf2ad02ac,0x728f12ac,0x829012ac,
+        0x929112ac,0x629212a6,0x529312a1,0x4294129d,0x3295129a,0x22961298,0x12ad1297,0xa2ad12ac,
+        0xa29912ac,0xb2ad12ac,0xa29b12ac,0xb29c12ac,0xc2ad12ac,0xa29e12ac,0xb29f12ac,0xc2a012ac,
+        0xd2ad12ac,0xa2a212ac,0xb2a312ac,0xc2a412ac,0xd2a512ac,0xe2ad12ac,0xa2a712ac,0xb2a812ac,
+        0xc2a912ac,0xd2aa12ac,0xe2ab12ac,0xf2ad12ac,0x000000fe,0x000000ff};
+
+
+    switch(agasttype) {
+      case AgastFeatureDetector::AGAST_5_8:
+        table_struct=(unsigned long *)(table_5_8_corner_struct);
+        break;
+      case AgastFeatureDetector::AGAST_7_12d:
+        table_struct=(unsigned long *)(table_7_12d_corner_struct);
+        break;
+      case AgastFeatureDetector::AGAST_7_12s:
+        table_struct=(unsigned long *)(table_7_12s_corner_struct);
+        break;
+      case AgastFeatureDetector::OAST_9_16:
+      default:
+        table_struct=(unsigned long *)(table_9_16_corner_struct);
+        break;
+    }
+
+    while(true)
+    {
+        result = agast_tree_search(table_struct, (int *)pixel, ptr, b_test);
+        if (result == 254)
+            bmax = b_test;
+        else
+            bmin = b_test;
+
+        if(bmin == bmax - 1 || bmin == bmax)
+            return bmin;
+        b_test = (bmin + bmax) / 2;
+    }
+}
+
+// 8 pixel mask
+template<>
+int agast_cornerScore<AgastFeatureDetector::AGAST_5_8>(const uchar* ptr, const int pixel[], int threshold)
+{
+    return AGAST_ALL_SCORE(ptr, pixel, threshold, AgastFeatureDetector::AGAST_5_8);
+}
+
+// 12 pixel mask in square format
+template<>
+int agast_cornerScore<AgastFeatureDetector::AGAST_7_12d>(const uchar* ptr, const int pixel[], int threshold)
+{
+    return AGAST_ALL_SCORE(ptr, pixel, threshold, AgastFeatureDetector::AGAST_7_12d);
+}
+
+// 12 pixel mask in diamond format
+template<>
+int agast_cornerScore<AgastFeatureDetector::AGAST_7_12s>(const uchar* ptr, const int pixel[], int threshold)
+{
+    return AGAST_ALL_SCORE(ptr, pixel, threshold, AgastFeatureDetector::AGAST_7_12s);
+}
+
+#if (defined __i386__ || defined(_M_IX86) || defined __x86_64__ || defined(_M_X64))
+// 16 pixel mask
+template<>
+int agast_cornerScore<AgastFeatureDetector::OAST_9_16>(const uchar* ptr, const int pixel[], int threshold)
+{
+    return AGAST_ALL_SCORE(ptr, pixel, threshold, AgastFeatureDetector::OAST_9_16);
+}
+#else // !(defined __i386__ || defined(_M_IX86) || defined __x86_64__ || defined(_M_X64))
+
+
+int agast_tree_search(const unsigned long table_struct32[], int pixel_[], const unsigned char* const ptr, int threshold)
+{
+    register const int cb = *ptr + threshold;
+    register const int c_b = *ptr - threshold;
+    register int index;
+    register int offset;
+    register int cmpresult;
+    index = 0;
+    while ((table_struct32[index]>>16)!=0)
+    {
+        offset=(int) pixel_[table_struct32[index]>>28];
+        if ((table_struct32[index]&(1<<12))!=0)
+            cmpresult=(ptr[offset] < c_b);
+        else
+            cmpresult=(ptr[offset] > cb);
+        if (cmpresult)
+            index =(table_struct32[index]>>16)&0xfff;
+        else
+            index =table_struct32[index]&0xfff;
+    }
+    return (int)(table_struct32[index]&0xff);
+}
+
+// universal pixel mask
+int AGAST_ALL_SCORE(const uchar* ptr, const int pixel[], int threshold, int agasttype)
+{
+    int bmin = threshold;
+    int bmax = 255;
+    int b_test = (bmax + bmin)/2;
+    unsigned long *table_struct;
+
+    int result;
+    static const unsigned long table_5_8_corner_struct[] =
+    {       0x00010026,0x20020017,0x3003000c,0x50040009,0x10050007,0x406d0006,0x706d006c,0x4008006c,
+        0x606d006c,0x100a006c,0x406d000b,0x706d006c,0x700d0012,0x600e006c,0x500f0011,0x106d0010,
+        0x406d006c,0x106d006c,0x5013106c,0x3014106c,0x7015106c,0x4016106c,0x606d106c,0x5018001c,
+        0x7019006c,0x601a006c,0x106d001b,0x406d006c,0x501d106c,0x301e106c,0x201f1023,0x10201021,
+        0x406d106c,0x4022106c,0x606d106c,0x7024106c,0x4025106c,0x606d106c,0x00271058,0x20281049,
+        0x70290035,0x302a1031,0x502b102f,0x102c102d,0x406d106c,0x402e106c,0x606d106c,0x1030106c,
+        0x406d106c,0x5032006c,0x3033006c,0x4034006c,0x606d006c,0x70361041,0x3037103c,0x5038103b,
+        0x106d1039,0x403a106c,0x606d106c,0x106d106c,0x603d106c,0x503e1040,0x106d103f,0x406d106c,
+        0x106d106c,0x3042106c,0x50431047,0x10441045,0x406d106c,0x4046106c,0x606d106c,0x1048106c,
+        0x406d106c,0x504a0053,0x304b006c,0x204c0050,0x104d004e,0x406d006c,0x404f006c,0x606d006c,
+        0x7051006c,0x4052006c,0x606d006c,0x5054106c,0x7055106c,0x6056106c,0x106d1057,0x406d106c,
+        0x30590062,0x505a006c,0x205b005f,0x105c005d,0x406d006c,0x405e006c,0x606d006c,0x7060006c,
+        0x4061006c,0x606d006c,0x3063106c,0x5064106c,0x20651069,0x10661067,0x406d106c,0x4068106c,
+        0x606d106c,0x706a106c,0x406b106c,0x606d106c,0x000000fe,0x000000ff};
+
+    static const unsigned long table_7_12d_corner_struct[] =
+    {       0x000100b5,0x50020036,0x20030025,0x9004001d,0x10050015,0x6006000f,0x3007000a,0x41870008,
+        0xa0090186,0xb1870186,0x800b0186,0xa00c0186,0xb187000d,0x400e0186,0x71870186,0xb0100186,
+        0x30110013,0x41870012,0xa1870186,0x80140186,0xa1870186,0x60160186,0x70170186,0x80180186,
+        0x4019001b,0x3187001a,0xa1870186,0xa01c0186,0xb1870186,0x301e0186,0x401f0186,0x10200022,
+        0x61870021,0xb1870186,0x60230186,0x70240186,0x81870186,0x90260186,0x70270186,0x80280186,
+        0x10290030,0xa02a002d,0xb187002b,0x602c0186,0x41870186,0x602e0186,0x302f0186,0x41870186,
+        0x60310186,0x40320034,0x31870033,0xa1870186,0xa0350186,0xb1870186,0x503710a1,0x9038006b,
+        0x3039105b,0x403a1053,0xb03b004d,0x103c0044,0x803d0040,0xa03e0186,0x2187003f,0x71870186,
+        0x60411186,0x20421186,0x70431186,0x81871186,0x60450048,0x70460186,0x80470186,0xa1870186,
+        0x60491186,0x204a1186,0x704b1186,0x1187104c,0x81871186,0x204e1186,0x704f1186,0x10501051,
+        0x61871186,0x60521186,0x81871186,0xb0540186,0x80550186,0xa0560186,0x10570059,0x21870058,
+        0x71870186,0x605a0186,0x71870186,0xb05c0186,0xa05d0186,0x305e0065,0x105f0062,0x21870060,
+        0x70610186,0x81870186,0x60630186,0x70640186,0x81870186,0x80660186,0x10670069,0x21870068,
+        0x71870186,0x606a0186,0x71870186,0x906c1093,0x206d0087,0x106e007f,0x406f0077,0xa0700072,
+        0x30710186,0xb1870186,0x60731186,0x70741186,0x80751186,0xb0761186,0xa1871186,0x60781186,
+        0x70791186,0x807a1186,0xa07b107d,0x4187107c,0xb1871186,0x307e1186,0x41871186,0x60801186,
+        0x70811186,0x80821186,0x40831085,0x31871084,0xa1871186,0xa0861186,0xb1871186,0x60881186,
+        0x70891186,0x808a108f,0x408b108d,0x3187108c,0xa1871186,0xa08e1186,0xb1871186,0x20901186,
+        0x10911186,0x30921186,0x41871186,0x20940099,0x10950186,0x30960186,0x40970186,0xa0980186,
+        0xb1870186,0x209a1186,0x309b1186,0x409c1186,0x709d1186,0x109e109f,0x61871186,0x60a01186,
+        0x81871186,0x20a200ae,0xa0a30186,0xb0a40186,0x90a500ab,0x10a600a8,0x318700a7,0x81870186,
+        0x60a90186,0x70aa0186,0x81870186,0x10ac0186,0x30ad0186,0x41870186,0x90af0186,0x70b00186,
+        0x80b10186,0xa0b20186,0xb0b30186,0x118700b4,0x61870186,0x00b6115a,0x20b700e2,0x50b800cc,
+        0x70b900c5,0x60ba0186,0x40bb00c1,0x30bc00be,0x118700bd,0x81870186,0x90bf0186,0x80c00186,
+        0xa1870186,0x90c20186,0x80c30186,0xa0c40186,0xb1870186,0x90c61186,0x80c71186,0xa0c81186,
+        0xb0c91186,0x70ca1186,0x118710cb,0x61871186,0x90cd1186,0x70ce1186,0x80cf1186,0x50d010de,
+        0x10d110d8,0xa0d210d5,0xb18710d3,0x60d41186,0x41871186,0x60d61186,0x30d71186,0x41871186,
+        0x60d91186,0x40da10dc,0x318710db,0xa1871186,0xa0dd1186,0xb1871186,0xa0df1186,0xb0e01186,
+        0x118710e1,0x61871186,0x20e3113a,0x90e4010b,0x50e500ff,0x10e610f7,0x40e710ef,0xa0e810ea,
+        0x30e91186,0xb1871186,0x60eb0186,0x70ec0186,0x80ed0186,0xb0ee0186,0xa1870186,0x60f00186,
+        0x70f10186,0x80f20186,0xa0f300f5,0x418700f4,0xb1870186,0x30f60186,0x41870186,0x60f80186,
+        0x70f90186,0x80fa0186,0x40fb00fd,0x318700fc,0xa1870186,0xa0fe0186,0xb1870186,0x31001186,
+        0x41011186,0x51021108,0x11031105,0x61871104,0xb1871186,0x61061186,0x71071186,0x81871186,
+        0x11091186,0xa10a1186,0xb1871186,0x910c112e,0x510d1126,0x110e111e,0x610f1118,0x31101113,
+        0x41871111,0xa1121186,0xb1871186,0x81141186,0xa1151186,0xb1871116,0x41171186,0x71871186,
+        0xb1191186,0x311a111c,0x4187111b,0xa1871186,0x811d1186,0xa1871186,0x611f1186,0x71201186,
+        0x81211186,0x41221124,0x31871123,0xa1871186,0xa1251186,0xb1871186,0xa1271186,0xb1281186,
+        0x1129112b,0x3187112a,0x81871186,0x612c1186,0x712d1186,0x81871186,0x312f1186,0x41301186,
+        0x51311137,0x11321134,0x61871133,0xb1871186,0x61351186,0x71361186,0x81871186,0x11381186,
+        0xa1391186,0xb1871186,0x913b1150,0x713c1186,0x813d1186,0x513e114c,0x113f1146,0xa1401143,
+        0xb1871141,0x61421186,0x41871186,0x61441186,0x31451186,0x41871186,0x61471186,0x4148114a,
+        0x31871149,0xa1871186,0xa14b1186,0xb1871186,0xa14d1186,0xb14e1186,0x1187114f,0x61871186,
+        0x51510186,0x91520186,0x61530186,0x71540186,0x81550186,0x41560158,0x31870157,0xa1870186,
+        0xa1590186,0xb1870186,0x515b0170,0x915c0168,0x615d0186,0x715e0186,0x415f0165,0x31600163,
+        0x81870161,0x11620186,0x21870186,0x81640186,0xa1870186,0xb1660186,0x81670186,0xa1870186,
+        0x21690186,0x316a0186,0x416b0186,0x716c0186,0x116d016e,0x61870186,0x616f0186,0x81870186,
+        0x51711186,0x9172117e,0x61731186,0x71741186,0x4175117b,0x31761179,0x81871177,0x11781186,
+        0x21871186,0x817a1186,0xa1871186,0xb17c1186,0x817d1186,0xa1871186,0x217f1186,0x31801186,
+        0x41811186,0x71821186,0x11831184,0x61871186,0x61851186,0x81871186,0x000000fe,0x000000ff};
+
+    static const unsigned long table_7_12s_corner_struct[] =
+    {       0x0001032b,0x50020104,0x20031026,0x70040748,0x97481005,0x90060748,0x1007100f,0x67481008,
+        0x60090748,0x800a0748,0x400b000d,0x3749000c,0xa7490748,0xa00e0748,0xb7490748,0x1010001e,
+        0x60111014,0x80120748,0xa0130748,0xb7490748,0x6015001b,0x80160748,0x40170019,0x37490018,
+        0xa7490748,0xa01a0748,0xb7490748,0x801c0748,0xa01d0748,0xb7490748,0x6748101f,0x60200748,
+        0x80210748,0x40220024,0x37490023,0xa7490748,0xa0250748,0xb7490748,0x202700e1,0x70281059,
+        0x90291035,0x1748102a,0x102b0748,0x602c002e,0x302d0748,0x47490748,0x602f1032,0x30300748,
+        0x40310748,0xb7490748,0x30330748,0x40340748,0xb7490748,0x9036004d,0x17481037,0x10380748,
+        0x6039103f,0xb03a0748,0x303b003d,0x4749003c,0xa7490748,0x803e0748,0xa7490748,0x60400047,
+        0x30410044,0x47490042,0xa0430748,0xb7490748,0x80450748,0xa0460748,0xb7490748,0xb0480748,
+        0x3049004b,0x4749004a,0xa7490748,0x804c0748,0xa7490748,0x1748104e,0x104f0748,0x60500052,
+        0x30510748,0x47490748,0x60531056,0x30540748,0x40550748,0xb7490748,0x30570748,0x40580748,
+        0xb7490748,0x905a107d,0x705b0071,0x105c1061,0x6748105d,0x605e0748,0x305f0748,0x40600748,
+        0x87490748,0x1062006c,0x60630065,0x30640748,0x47490748,0x60661069,0x30670748,0x40680748,
+        0xb7490748,0x306a0748,0x406b0748,0xb7490748,0x6748106d,0x606e0748,0x306f0748,0x40700748,
+        0x87490748,0x17481072,0x10730748,0x60740076,0x30750748,0x47490748,0x6077107a,0x30780748,
+        0x40790748,0xb7490748,0x307b0748,0x407c0748,0xb7490748,0x707e00bd,0x907f00a7,0x10801088,
+        0x67481081,0x60820748,0x80830748,0x40840086,0x37490085,0xa7490748,0xa0870748,0xb7490748,
+        0x1089009f,0x608a1090,0xb08b0748,0x308c008e,0x4749008d,0xa7490748,0x808f0748,0xa7490748,
+        0x60910099,0x30920095,0x47490093,0xa0940748,0xb7490748,0x80960748,0xa0970748,0x47490098,
+        0xb7490748,0xb09a0748,0x309b009d,0x4749009c,0xa7490748,0x809e0748,0xa7490748,0x674810a0,
+        0x60a10748,0x80a20748,0x40a300a5,0x374900a4,0xa7490748,0xa0a60748,0xb7490748,0x10a810ad,
+        0x674810a9,0x60aa0748,0x30ab0748,0x40ac0748,0x87490748,0x10ae00b8,0x60af00b1,0x30b00748,
+        0x47490748,0x60b210b5,0x30b30748,0x40b40748,0xb7490748,0x30b60748,0x40b70748,0xb7490748,
+        0x674810b9,0x60ba0748,0x30bb0748,0x40bc0748,0x87490748,0x90be00d5,0x174810bf,0x10c00748,
+        0x60c110c7,0xb0c20748,0x30c300c5,0x474900c4,0xa7490748,0x80c60748,0xa7490748,0x60c800cf,
+        0x30c900cc,0x474900ca,0xa0cb0748,0xb7490748,0x80cd0748,0xa0ce0748,0xb7490748,0xb0d00748,
+        0x30d100d3,0x474900d2,0xa7490748,0x80d40748,0xa7490748,0x174810d6,0x10d70748,0x60d800da,
+        0x30d90748,0x47490748,0x60db10de,0x30dc0748,0x40dd0748,0xb7490748,0x30df0748,0x40e00748,
+        0xb7490748,0x70e20748,0x974810e3,0x90e40748,0x10e510ed,0x674810e6,0x60e70748,0x80e80748,
+        0x40e900eb,0x374900ea,0xa7490748,0xa0ec0748,0xb7490748,0x10ee00fc,0x60ef10f2,0x80f00748,
+        0xa0f10748,0xb7490748,0x60f300f9,0x80f40748,0x40f500f7,0x374900f6,0xa7490748,0xa0f80748,
+        0xb7490748,0x80fa0748,0xa0fb0748,0xb7490748,0x674810fd,0x60fe0748,0x80ff0748,0x41000102,
+        0x37490101,0xa7490748,0xa1030748,0xb7490748,0x51051253,0x9106118c,0x71070119,0x27481108,
+        0x21090748,0x1748110a,0x110b0748,0x610c0110,0x310d0748,0x410e0748,0xa10f0748,0xb7490748,
+        0x61111115,0x31120748,0x41130748,0xa1140748,0xb7490748,0x31160748,0x41170748,0xa1180748,
+        0xb7490748,0x711a117a,0x211b1136,0x111c0124,0x6748011d,0x611e1748,0x811f1748,0x41201122,
+        0x37491121,0xa7491748,0xa1231748,0xb7491748,0x1125112e,0x67480126,0x61271748,0x4128112b,
+        0x37491129,0x812a1748,0xa7491748,0x812c1748,0xa12d1748,0xb7491748,0x6748012f,0x61301748,
+        0x81311748,0x41321134,0x37491133,0xa7491748,0xa1351748,0xb7491748,0x21370160,0x11381140,
+        0x67480139,0x613a1748,0x813b1748,0x413c113e,0x3749113d,0xa7491748,0xa13f1748,0xb7491748,
+        0x11410158,0x61420146,0x31430748,0x41440748,0xa1450748,0xb7490748,0x61471154,0x4148014e,
+        0xa149014b,0x314a0748,0xb7490748,0x814c1748,0xb14d1748,0xa7491748,0x814f1748,0xa1501152,
+        0x47491151,0xb7491748,0x31531748,0x47491748,0x31550748,0x41560748,0xa1570748,0xb7490748,
+        0x67480159,0x615a1748,0x815b1748,0x415c115e,0x3749115d,0xa7491748,0xa15f1748,0xb7491748,
+        0x11610169,0x67480162,0x61631748,0x81641748,0x41651167,0x37491166,0xa7491748,0xa1681748,
+        0xb7491748,0x116a1172,0x6748016b,0x616c1748,0x816d1748,0x416e1170,0x3749116f,0xa7491748,
+        0xa1711748,0xb7491748,0x67480173,0x61741748,0x81751748,0x41761178,0x37491177,0xa7491748,
+        0xa1791748,0xb7491748,0x2748117b,0x217c0748,0x1748117d,0x117e0748,0x617f0183,0x31800748,
+        0x41810748,0xa1820748,0xb7490748,0x61841188,0x31850748,0x41860748,0xa1870748,0xb7490748,
+        0x31890748,0x418a0748,0xa18b0748,0xb7490748,0x918d020d,0x718e11b0,0x218f019f,0x17481190,
+        0x11910748,0x61920196,0xa1930748,0xb1940748,0x37490195,0x87490748,0x6197119b,0xa1980748,
+        0xb1990748,0x3749019a,0x87490748,0xa19c0748,0xb19d0748,0x3749019e,0x87490748,0x21a01748,
+        0x11a111a5,0x674801a2,0x61a31748,0x31a41748,0x47491748,0x11a601ab,0x674801a7,0x61a81748,
+        0x31a91748,0x41aa1748,0x87491748,0x674801ac,0x61ad1748,0x31ae1748,0x41af1748,0x87491748,
+        0x71b101fb,0x21b211c9,0x11b311b8,0x674811b4,0x61b50748,0x81b60748,0xa1b70748,0xb7490748,
+        0x11b901c4,0x61ba01bd,0x81bb0748,0xa1bc0748,0xb7490748,0x61be11c1,0x81bf0748,0xa1c00748,
+        0xb7490748,0x81c20748,0xa1c30748,0xb7490748,0x674811c5,0x61c60748,0x81c70748,0xa1c80748,
+        0xb7490748,0x21ca01e4,0x11cb11d0,0x674811cc,0x61cd0748,0x81ce0748,0xa1cf0748,0xb7490748,
+        0x11d101df,0x61d201d6,0xa1d30748,0xb1d40748,0x374901d5,0x87490748,0x61d711db,0xa1d80748,
+        0xb1d90748,0x374901da,0x87490748,0xa1dc0748,0xb1dd0748,0x374901de,0x87490748,0x674811e0,
+        0x61e10748,0x81e20748,0xa1e30748,0xb7490748,0x11e511ea,0x674811e6,0x61e70748,0x81e80748,
+        0xa1e90748,0xb7490748,0x11eb01f6,0x61ec01ef,0x81ed0748,0xa1ee0748,0xb7490748,0x61f011f3,
+        0x81f10748,0xa1f20748,0xb7490748,0x81f40748,0xa1f50748,0xb7490748,0x674811f7,0x61f80748,
+        0x81f90748,0xa1fa0748,0xb7490748,0x274811fc,0x21fd0748,0x174811fe,0x11ff0748,0x62000204,
+        0xa2010748,0xb2020748,0x37490203,0x87490748,0x62051209,0xa2060748,0xb2070748,0x37490208,
+        0x87490748,0xa20a0748,0xb20b0748,0x3749020c,0x87490748,0x220e1220,0x7748020f,0x72101748,
+        0x12111215,0x67480212,0x62131748,0x32141748,0x47491748,0x1216021b,0x67480217,0x62181748,
+        0x32191748,0x421a1748,0x87491748,0x6748021c,0x621d1748,0x321e1748,0x421f1748,0x87491748,
+        0x22210748,0x72220232,0x17481223,0x12240748,0x62250229,0x32260748,0x42270748,0xa2280748,
+        0xb7490748,0x622a122e,0x322b0748,0x422c0748,0xa22d0748,0xb7490748,0x322f0748,0x42300748,
+        0xa2310748,0xb7490748,0x72331243,0x17481234,0x12350748,0x6236023a,0x32370748,0x42380748,
+        0xa2390748,0xb7490748,0x623b123f,0x323c0748,0x423d0748,0xa23e0748,0xb7490748,0x32400748,
+        0x42410748,0xa2420748,0xb7490748,0x17481244,0x12450748,0x6246024a,0x32470748,0x42480748,
+        0xa2490748,0xb7490748,0x624b124f,0x324c0748,0x424d0748,0xa24e0748,0xb7490748,0x32500748,
+        0x42510748,0xa2520748,0xb7490748,0x2254126e,0x72550748,0x97481256,0x92570748,0x1258125d,
+        0x67481259,0x625a0748,0x825b0748,0xa25c0748,0xb7490748,0x125e0269,0x625f0262,0x82600748,
+        0xa2610748,0xb7490748,0x62631266,0x82640748,0xa2650748,0xb7490748,0x82670748,0xa2680748,
+        0xb7490748,0x6748126a,0x626b0748,0x826c0748,0xa26d0748,0xb7490748,0x226f0311,0x727012a2,
+        0x92711281,0x17481272,0x12730748,0x62740278,0x32750748,0x42760748,0xa2770748,0xb7490748,
+        0x6279127d,0x327a0748,0x427b0748,0xa27c0748,0xb7490748,0x327e0748,0x427f0748,0xa2800748,
+        0xb7490748,0x92820292,0x17481283,0x12840748,0x62850289,0xa2860748,0xb2870748,0x37490288,
+        0x87490748,0x628a128e,0xa28b0748,0xb28c0748,0x3749028d,0x87490748,0xa28f0748,0xb2900748,
+        0x37490291,0x87490748,0x17481293,0x12940748,0x62950299,0x32960748,0x42970748,0xa2980748,
+        0xb7490748,0x629a129e,0x329b0748,0x429c0748,0xa29d0748,0xb7490748,0x329f0748,0x42a00748,
+        0xa2a10748,0xb7490748,0x92a312c4,0x72a402b4,0x174812a5,0x12a60748,0x62a702ab,0x32a80748,
+        0x42a90748,0xa2aa0748,0xb7490748,0x62ac12b0,0x32ad0748,0x42ae0748,0xa2af0748,0xb7490748,
+        0x32b10748,0x42b20748,0xa2b30748,0xb7490748,0x174812b5,0x12b60748,0x62b702bb,0x32b80748,
+        0x42b90748,0xa2ba0748,0xb7490748,0x62bc12c0,0x32bd0748,0x42be0748,0xa2bf0748,0xb7490748,
+        0x32c10748,0x42c20748,0xa2c30748,0xb7490748,0x72c502f0,0x92c602e0,0x12c712cc,0x674812c8,
+        0x62c90748,0x82ca0748,0xa2cb0748,0xb7490748,0x12cd02db,0x62ce02d2,0xa2cf0748,0xb2d00748,
+        0x374902d1,0x87490748,0x62d312d7,0xa2d40748,0xb2d50748,0x374902d6,0x87490748,0xa2d80748,
+        0xb2d90748,0x374902da,0x87490748,0x674812dc,0x62dd0748,0x82de0748,0xa2df0748,0xb7490748,
+        0x174812e1,0x12e20748,0x62e302e7,0x32e40748,0x42e50748,0xa2e60748,0xb7490748,0x62e812ec,
+        0x32e90748,0x42ea0748,0xa2eb0748,0xb7490748,0x32ed0748,0x42ee0748,0xa2ef0748,0xb7490748,
+        0x92f10301,0x174812f2,0x12f30748,0x62f402f8,0xa2f50748,0xb2f60748,0x374902f7,0x87490748,
+        0x62f912fd,0xa2fa0748,0xb2fb0748,0x374902fc,0x87490748,0xa2fe0748,0xb2ff0748,0x37490300,
+        0x87490748,0x17481302,0x13030748,0x63040308,0x33050748,0x43060748,0xa3070748,0xb7490748,
+        0x6309130d,0x330a0748,0x430b0748,0xa30c0748,0xb7490748,0x330e0748,0x430f0748,0xa3100748,
+        0xb7490748,0x73120748,0x97481313,0x93140748,0x1315131a,0x67481316,0x63170748,0x83180748,
+        0xa3190748,0xb7490748,0x131b0326,0x631c031f,0x831d0748,0xa31e0748,0xb7490748,0x63201323,
+        0x83210748,0xa3220748,0xb7490748,0x83240748,0xa3250748,0xb7490748,0x67481327,0x63280748,
+        0x83290748,0xa32a0748,0xb7490748,0x032c1655,0x532d1431,0x932e0360,0x2748032f,0x23301748,
+        0x7331033d,0x17480332,0x13331748,0x63341336,0x33351748,0x47491748,0x6337033a,0x33381748,
+        0x43391748,0xb7491748,0x333b1748,0x433c1748,0xb7491748,0x733e1354,0x133f0344,0x67480340,
+        0x63411748,0x33421748,0x43431748,0x87491748,0x1345134f,0x63461348,0x33471748,0x47491748,
+        0x6349034c,0x334a1748,0x434b1748,0xb7491748,0x334d1748,0x434e1748,0xb7491748,0x67480350,
+        0x63511748,0x33521748,0x43531748,0x87491748,0x17480355,0x13561748,0x63571359,0x33581748,
+        0x47491748,0x635a035d,0x335b1748,0x435c1748,0xb7491748,0x335e1748,0x435f1748,0xb7491748,
+        0x936113ff,0x7362037b,0x27480363,0x23641748,0x17480365,0x13661748,0x6367036d,0xb3681748,
+        0x3369136b,0x4749136a,0xa7491748,0x836c1748,0xa7491748,0x636e1375,0x336f1372,0x47491370,
+        0xa3711748,0xb7491748,0x83731748,0xa3741748,0xb7491748,0xb3761748,0x33771379,0x47491378,
+        0xa7491748,0x837a1748,0xa7491748,0x737c13e6,0x237d039d,0x137e0386,0x6748037f,0x63801748,
+        0x83811748,0x43821384,0x37491383,0xa7491748,0xa3851748,0xb7491748,0x13871395,0x6388038b,
+        0x83891748,0xa38a1748,0xb7491748,0x638c1392,0x838d1748,0x438e1390,0x3749138f,0xa7491748,
+        0xa3911748,0xb7491748,0x83931748,0xa3941748,0xb7491748,0x67480396,0x63971748,0x83981748,
+        0x4399139b,0x3749139a,0xa7491748,0xa39c1748,0xb7491748,0x239e13c6,0x139f03a7,0x674803a0,
+        0x63a11748,0x83a21748,0x43a313a5,0x374913a4,0xa7491748,0xa3a61748,0xb7491748,0x13a813be,
+        0x63a903af,0xb3aa1748,0x33ab13ad,0x474913ac,0xa7491748,0x83ae1748,0xa7491748,0x63b013b8,
+        0x33b113b4,0x474913b2,0xa3b31748,0xb7491748,0x83b51748,0xa3b61748,0x474913b7,0xb7491748,
+        0xb3b91748,0x33ba13bc,0x474913bb,0xa7491748,0x83bd1748,0xa7491748,0x674803bf,0x63c01748,
+        0x83c11748,0x43c213c4,0x374913c3,0xa7491748,0xa3c51748,0xb7491748,0x13c703cf,0x674803c8,
+        0x63c91748,0x83ca1748,0x43cb13cd,0x374913cc,0xa7491748,0xa3ce1748,0xb7491748,0x13d013de,
+        0x63d103d4,0x83d21748,0xa3d31748,0xb7491748,0x63d513db,0x83d61748,0x43d713d9,0x374913d8,
+        0xa7491748,0xa3da1748,0xb7491748,0x83dc1748,0xa3dd1748,0xb7491748,0x674803df,0x63e01748,
+        0x83e11748,0x43e213e4,0x374913e3,0xa7491748,0xa3e51748,0xb7491748,0x274803e7,0x23e81748,
+        0x174803e9,0x13ea1748,0x63eb03f1,0xb3ec1748,0x33ed13ef,0x474913ee,0xa7491748,0x83f01748,
+        0xa7491748,0x63f213f9,0x33f313f6,0x474913f4,0xa3f51748,0xb7491748,0x83f71748,0xa3f81748,
+        0xb7491748,0xb3fa1748,0x33fb13fd,0x474913fc,0xa7491748,0x83fe1748,0xa7491748,0x27480400,
+        0x24011748,0x7402040e,0x17480403,0x14041748,0x64051407,0x34061748,0x47491748,0x6408040b,
+        0x34091748,0x440a1748,0xb7491748,0x340c1748,0x440d1748,0xb7491748,0x740f1425,0x14100415,
+        0x67480411,0x64121748,0x34131748,0x44141748,0x87491748,0x14161420,0x64171419,0x34181748,
+        0x47491748,0x641a041d,0x341b1748,0x441c1748,0xb7491748,0x341e1748,0x441f1748,0xb7491748,
+        0x67480421,0x64221748,0x34231748,0x44241748,0x87491748,0x17480426,0x14271748,0x6428142a,
+        0x34291748,0x47491748,0x642b042e,0x342c1748,0x442d1748,0xb7491748,0x342f1748,0x44301748,
+        0xb7491748,0x5432057d,0x2433048b,0x7434144d,0x97480435,0x94361748,0x1437043c,0x67480438,
+        0x64391748,0x843a1748,0xa43b1748,0xb7491748,0x143d1448,0x643e0441,0x843f1748,0xa4401748,
+        0xb7491748,0x64421445,0x84431748,0xa4441748,0xb7491748,0x84461748,0xa4471748,0xb7491748,
+        0x67480449,0x644a1748,0x844b1748,0xa44c1748,0xb7491748,0x744e0748,0x944f145f,0x14500454,
+        0x67481451,0x64520748,0x34530748,0x47490748,0x1455145a,0x67481456,0x64570748,0x34580748,
+        0x44590748,0x87490748,0x6748145b,0x645c0748,0x345d0748,0x445e0748,0x87490748,0x9460047b,
+        0x14611469,0x67481462,0x64630748,0x84640748,0x44650467,0x37490466,0xa7490748,0xa4680748,
+        0xb7490748,0x146a0473,0x6748146b,0x646c0748,0x446d0470,0x3749046e,0x846f0748,0xa7490748,
+        0x84710748,0xa4720748,0xb7490748,0x67481474,0x64750748,0x84760748,0x44770479,0x37490478,
+        0xa7490748,0xa47a0748,0xb7490748,0x147c0480,0x6748147d,0x647e0748,0x347f0748,0x47490748,
+        0x14811486,0x67481482,0x64830748,0x34840748,0x44850748,0x87490748,0x67481487,0x64880748,
+        0x34890748,0x448a0748,0x87490748,0x248c1547,0x748d14c9,0x948e049e,0x1748048f,0x14901748,
+        0x64910495,0x34921748,0x44931748,0xa4941748,0xb7491748,0x6496149a,0x34971748,0x44981748,
+        0xa4991748,0xb7491748,0x349b1748,0x449c1748,0xa49d1748,0xb7491748,0x949f14b9,0x14a004a5,
+        0x674804a1,0x64a21748,0x84a31748,0xa4a41748,0xb7491748,0x14a614b4,0x64a704ab,0xa4a81748,
+        0xb4a91748,0x374914aa,0x87491748,0x64ac14b0,0xa4ad1748,0xb4ae1748,0x374914af,0x87491748,
+        0xa4b11748,0xb4b21748,0x374914b3,0x87491748,0x674804b5,0x64b61748,0x84b71748,0xa4b81748,
+        0xb7491748,0x174804ba,0x14bb1748,0x64bc04c0,0x34bd1748,0x44be1748,0xa4bf1748,0xb7491748,
+        0x64c114c5,0x34c21748,0x44c31748,0xa4c41748,0xb7491748,0x34c61748,0x44c71748,0xa4c81748,
+        0xb7491748,0x74ca0515,0x94cb14db,0x174804cc,0x14cd1748,0x64ce04d2,0xa4cf1748,0xb4d01748,
+        0x374914d1,0x87491748,0x64d314d7,0xa4d41748,0xb4d51748,0x374914d6,0x87491748,0xa4d81748,
+        0xb4d91748,0x374914da,0x87491748,0x94dc0505,0x14dd04e5,0x674814de,0x64df0748,0x84e00748,
+        0x44e104e3,0x374904e2,0xa7490748,0xa4e40748,0xb7490748,0x14e614fd,0x64e714eb,0x34e81748,
+        0x44e91748,0xa4ea1748,0xb7491748,0x64ec04f9,0x44ed14f3,0xa4ee04f0,0x84ef0748,0xb7490748,
+        0x34f11748,0xb4f21748,0xa7491748,0x84f40748,0xa4f504f7,0x474904f6,0xb7490748,0x34f80748,
+        0x47490748,0x34fa1748,0x44fb1748,0xa4fc1748,0xb7491748,0x674814fe,0x64ff0748,0x85000748,
+        0x45010503,0x37490502,0xa7490748,0xa5040748,0xb7490748,0x17480506,0x15071748,0x6508050c,
+        0x35091748,0x450a1748,0xa50b1748,0xb7491748,0x650d1511,0x350e1748,0x450f1748,0xa5101748,
+        0xb7491748,0x35121748,0x45131748,0xa5141748,0xb7491748,0x95160526,0x17480517,0x15181748,
+        0x6519051d,0x351a1748,0x451b1748,0xa51c1748,0xb7491748,0x651e1522,0x351f1748,0x45201748,
+        0xa5211748,0xb7491748,0x35231748,0x45241748,0xa5251748,0xb7491748,0x95271537,0x17480528,
+        0x15291748,0x652a052e,0xa52b1748,0xb52c1748,0x3749152d,0x87491748,0x652f1533,0xa5301748,
+        0xb5311748,0x37491532,0x87491748,0xa5341748,0xb5351748,0x37491536,0x87491748,0x17480538,
+        0x15391748,0x653a053e,0x353b1748,0x453c1748,0xa53d1748,0xb7491748,0x653f1543,0x35401748,
+        0x45411748,0xa5421748,0xb7491748,0x35441748,0x45451748,0xa5461748,0xb7491748,0x75480564,
+        0x97481549,0x954a0748,0x154b0553,0x6748154c,0x654d0748,0x854e0748,0x454f0551,0x37490550,
+        0xa7490748,0xa5520748,0xb7490748,0x1554155c,0x67481555,0x65560748,0x85570748,0x4558055a,
+        0x37490559,0xa7490748,0xa55b0748,0xb7490748,0x6748155d,0x655e0748,0x855f0748,0x45600562,
+        0x37490561,0xa7490748,0xa5630748,0xb7490748,0x95651748,0x75661748,0x1567056c,0x67480568,
+        0x65691748,0x856a1748,0xa56b1748,0xb7491748,0x156d1578,0x656e0571,0x856f1748,0xa5701748,
+        0xb7491748,0x65721575,0x85731748,0xa5741748,0xb7491748,0x85761748,0xa5771748,0xb7491748,
+        0x67480579,0x657a1748,0x857b1748,0xa57c1748,0xb7491748,0x257e0598,0x757f1748,0x97480580,
+        0x95811748,0x15820587,0x67480583,0x65841748,0x85851748,0xa5861748,0xb7491748,0x15881593,
+        0x6589058c,0x858a1748,0xa58b1748,0xb7491748,0x658d1590,0x858e1748,0xa58f1748,0xb7491748,
+        0x85911748,0xa5921748,0xb7491748,0x67480594,0x65951748,0x85961748,0xa5971748,0xb7491748,
+        0x2599163b,0x759a05cc,0x959b05ab,0x1748059c,0x159d1748,0x659e05a2,0x359f1748,0x45a01748,
+        0xa5a11748,0xb7491748,0x65a315a7,0x35a41748,0x45a51748,0xa5a61748,0xb7491748,0x35a81748,
+        0x45a91748,0xa5aa1748,0xb7491748,0x95ac15bc,0x174805ad,0x15ae1748,0x65af05b3,0xa5b01748,
+        0xb5b11748,0x374915b2,0x87491748,0x65b415b8,0xa5b51748,0xb5b61748,0x374915b7,0x87491748,
+        0xa5b91748,0xb5ba1748,0x374915bb,0x87491748,0x174805bd,0x15be1748,0x65bf05c3,0x35c01748,
+        0x45c11748,0xa5c21748,0xb7491748,0x65c415c8,0x35c51748,0x45c61748,0xa5c71748,0xb7491748,
+        0x35c91748,0x45ca1748,0xa5cb1748,0xb7491748,0x95cd05ee,0x75ce15de,0x174805cf,0x15d01748,
+        0x65d105d5,0x35d21748,0x45d31748,0xa5d41748,0xb7491748,0x65d615da,0x35d71748,0x45d81748,
+        0xa5d91748,0xb7491748,0x35db1748,0x45dc1748,0xa5dd1748,0xb7491748,0x174805df,0x15e01748,
+        0x65e105e5,0x35e21748,0x45e31748,0xa5e41748,0xb7491748,0x65e615ea,0x35e71748,0x45e81748,
+        0xa5e91748,0xb7491748,0x35eb1748,0x45ec1748,0xa5ed1748,0xb7491748,0x75ef161a,0x95f0160a,
+        0x15f105f6,0x674805f2,0x65f31748,0x85f41748,0xa5f51748,0xb7491748,0x15f71605,0x65f805fc,
+        0xa5f91748,0xb5fa1748,0x374915fb,0x87491748,0x65fd1601,0xa5fe1748,0xb5ff1748,0x37491600,
+        0x87491748,0xa6021748,0xb6031748,0x37491604,0x87491748,0x67480606,0x66071748,0x86081748,
+        0xa6091748,0xb7491748,0x1748060b,0x160c1748,0x660d0611,0x360e1748,0x460f1748,0xa6101748,
+        0xb7491748,0x66121616,0x36131748,0x46141748,0xa6151748,0xb7491748,0x36171748,0x46181748,
+        0xa6191748,0xb7491748,0x961b162b,0x1748061c,0x161d1748,0x661e0622,0xa61f1748,0xb6201748,
+        0x37491621,0x87491748,0x66231627,0xa6241748,0xb6251748,0x37491626,0x87491748,0xa6281748,
+        0xb6291748,0x3749162a,0x87491748,0x1748062c,0x162d1748,0x662e0632,0x362f1748,0x46301748,
+        0xa6311748,0xb7491748,0x66331637,0x36341748,0x46351748,0xa6361748,0xb7491748,0x36381748,
+        0x46391748,0xa63a1748,0xb7491748,0x763c1748,0x9748063d,0x963e1748,0x163f0644,0x67480640,
+        0x66411748,0x86421748,0xa6431748,0xb7491748,0x16451650,0x66460649,0x86471748,0xa6481748,
+        0xb7491748,0x664a164d,0x864b1748,0xa64c1748,0xb7491748,0x864e1748,0xa64f1748,0xb7491748,
+        0x67480651,0x66521748,0x86531748,0xa6541748,0xb7491748,0x565616cf,0x77480657,0x76581748,
+        0x26590675,0x9748065a,0x965b1748,0x165c0664,0x6748065d,0x665e1748,0x865f1748,0x46601662,
+        0x37491661,0xa7491748,0xa6631748,0xb7491748,0x1665166d,0x67480666,0x66671748,0x86681748,
+        0x4669166b,0x3749166a,0xa7491748,0xa66c1748,0xb7491748,0x6748066e,0x666f1748,0x86701748,
+        0x46711673,0x37491672,0xa7491748,0xa6741748,0xb7491748,0x267616b3,0x96770687,0x1678167c,
+        0x67480679,0x667a1748,0x367b1748,0x47491748,0x167d0682,0x6748067e,0x667f1748,0x36801748,
+        0x46811748,0x87491748,0x67480683,0x66841748,0x36851748,0x46861748,0x87491748,0x968816a3,
+        0x16890691,0x6748068a,0x668b1748,0x868c1748,0x468d168f,0x3749168e,0xa7491748,0xa6901748,
+        0xb7491748,0x1692169b,0x67480693,0x66941748,0x46951698,0x37491696,0x86971748,0xa7491748,
+        0x86991748,0xa69a1748,0xb7491748,0x6748069c,0x669d1748,0x869e1748,0x469f16a1,0x374916a0,
+        0xa7491748,0xa6a21748,0xb7491748,0x16a416a8,0x674806a5,0x66a61748,0x36a71748,0x47491748,
+        0x16a906ae,0x674806aa,0x66ab1748,0x36ac1748,0x46ad1748,0x87491748,0x674806af,0x66b01748,
+        0x36b11748,0x46b21748,0x87491748,0x974806b4,0x96b51748,0x16b606be,0x674806b7,0x66b81748,
+        0x86b91748,0x46ba16bc,0x374916bb,0xa7491748,0xa6bd1748,0xb7491748,0x16bf16c7,0x674806c0,
+        0x66c11748,0x86c21748,0x46c316c5,0x374916c4,0xa7491748,0xa6c61748,0xb7491748,0x674806c8,
+        0x66c91748,0x86ca1748,0x46cb16cd,0x374916cc,0xa7491748,0xa6ce1748,0xb7491748,0x56d00748,
+        0x76d10748,0x26d216ee,0x974816d3,0x96d40748,0x16d506dd,0x674816d6,0x66d70748,0x86d80748,
+        0x46d906db,0x374906da,0xa7490748,0xa6dc0748,0xb7490748,0x16de16e6,0x674816df,0x66e00748,
+        0x86e10748,0x46e206e4,0x374906e3,0xa7490748,0xa6e50748,0xb7490748,0x674816e7,0x66e80748,
+        0x86e90748,0x46ea06ec,0x374906eb,0xa7490748,0xa6ed0748,0xb7490748,0x26ef072c,0x96f01700,
+        0x16f106f5,0x674816f2,0x66f30748,0x36f40748,0x47490748,0x16f616fb,0x674816f7,0x66f80748,
+        0x36f90748,0x46fa0748,0x87490748,0x674816fc,0x66fd0748,0x36fe0748,0x46ff0748,0x87490748,
+        0x9701071c,0x1702170a,0x67481703,0x67040748,0x87050748,0x47060708,0x37490707,0xa7490748,
+        0xa7090748,0xb7490748,0x170b0714,0x6748170c,0x670d0748,0x470e0711,0x3749070f,0x87100748,
+        0xa7490748,0x87120748,0xa7130748,0xb7490748,0x67481715,0x67160748,0x87170748,0x4718071a,
+        0x37490719,0xa7490748,0xa71b0748,0xb7490748,0x171d0721,0x6748171e,0x671f0748,0x37200748,
+        0x47490748,0x17221727,0x67481723,0x67240748,0x37250748,0x47260748,0x87490748,0x67481728,
+        0x67290748,0x372a0748,0x472b0748,0x87490748,0x9748172d,0x972e0748,0x172f0737,0x67481730,
+        0x67310748,0x87320748,0x47330735,0x37490734,0xa7490748,0xa7360748,0xb7490748,0x17381740,
+        0x67481739,0x673a0748,0x873b0748,0x473c073e,0x3749073d,0xa7490748,0xa73f0748,0xb7490748,
+        0x67481741,0x67420748,0x87430748,0x47440746,0x37490745,0xa7490748,0xa7470748,0xb7490748,
+        0x000000fe,0x000000ff};
+
+    static const unsigned long table_9_16_corner_struct[] =
+    {       0x00010138,0x200200d3,0x4003008a,0x50040051,0x70050027,0x30060016,0x1007000d,0x6008000a,
+        0x82ad0009,0xf2ad02ac,0xd00b02ac,0xe00c02ac,0xf2ad02ac,0x800e02ac,0x900f02ac,0xa01002ac,
+        0x62ad0011,0xb01202ac,0xc01302ac,0xd01402ac,0xe01502ac,0xf2ad02ac,0xa01702ac,0xb01802ac,
+        0xc01902ac,0x801a0023,0x901b001f,0x62ad001c,0xd01d02ac,0xe01e02ac,0xf2ad02ac,0x102002ac,
+        0xd02102ac,0xe02202ac,0xf2ad02ac,0x102402ac,0xd02502ac,0xe02602ac,0xf2ad02ac,0x70281041,
+        0xe0290038,0xf02a02ac,0x102b0032,0x302c002e,0x62ad002d,0xd2ad02ac,0xa02f02ac,0xb03002ac,
+        0xc03102ac,0xd2ad02ac,0x803302ac,0x903402ac,0xa03502ac,0xb03602ac,0xc03702ac,0xd2ad02ac,
+        0xe03912ac,0x803a12ac,0x903b12ac,0xa03c12ac,0xb03d12ac,0xc03e12ac,0xd03f12ac,0x62ad1040,
+        0xf2ad12ac,0xe04202ac,0xf04302ac,0x1044004b,0x30450047,0x62ad0046,0xd2ad02ac,0xa04802ac,
+        0xb04902ac,0xc04a02ac,0xd2ad02ac,0x804c02ac,0x904d02ac,0xa04e02ac,0xb04f02ac,0xc05002ac,
+        0xd2ad02ac,0x5052106e,0xc0530064,0xd05402ac,0xe05502ac,0xf056005e,0x1057005a,0x32ad0058,
+        0xa05902ac,0xb2ad02ac,0x805b02ac,0x905c02ac,0xa05d02ac,0xb2ad02ac,0x605f02ac,0x706002ac,
+        0x806102ac,0x906202ac,0xa06302ac,0xb2ad02ac,0xc06512ac,0x706612ac,0x806712ac,0x906812ac,
+        0xa06912ac,0xb06a12ac,0xd06b12ac,0x62ad106c,0xe06d12ac,0xf2ad12ac,0xc06f0080,0xd07002ac,
+        0xe07102ac,0xf072007a,0x10730076,0x32ad0074,0xa07502ac,0xb2ad02ac,0x807702ac,0x907802ac,
+        0xa07902ac,0xb2ad02ac,0x607b02ac,0x707c02ac,0x807d02ac,0x907e02ac,0xa07f02ac,0xb2ad02ac,
+        0xc08112ac,0x708212ac,0x808312ac,0x908412ac,0xa08512ac,0xb08612ac,0xd08712ac,0xe08812ac,
+        0x62ad1089,0xf2ad12ac,0x408b10b1,0xb08c00a1,0xc08d02ac,0xd08e02ac,0xa08f009d,0xe0900098,
+        0xf0910094,0x12ad0092,0x809302ac,0x92ad02ac,0x609502ac,0x709602ac,0x809702ac,0x92ad02ac,
+        0x509902ac,0x609a02ac,0x709b02ac,0x809c02ac,0x92ad02ac,0x109e02ac,0x309f02ac,0xe0a002ac,
+        0xf2ad02ac,0xb0a212ac,0x70a312ac,0x80a412ac,0x90a512ac,0xa0a612ac,0x60a710ad,0x50a810aa,
+        0x32ad10a9,0xc2ad12ac,0xc0ab12ac,0xd0ac12ac,0xe2ad12ac,0xc0ae12ac,0xd0af12ac,0xe0b012ac,
+        0xf2ad12ac,0xb0b200c7,0xc0b302ac,0xd0b402ac,0xa0b500c3,0xe0b600be,0xf0b700ba,0x12ad00b8,
+        0x80b902ac,0x92ad02ac,0x60bb02ac,0x70bc02ac,0x80bd02ac,0x92ad02ac,0x50bf02ac,0x60c002ac,
+        0x70c102ac,0x80c202ac,0x92ad02ac,0x10c402ac,0x30c502ac,0xe0c602ac,0xf2ad02ac,0xb0c812ac,
+        0x70c912ac,0x80ca12ac,0x90cb12ac,0xa0cc12ac,0xc0cd12ac,0xd0ce12ac,0x60cf10d1,0x52ad10d0,
+        0xe2ad12ac,0xe0d212ac,0xf2ad12ac,0x20d4110a,0x90d500ef,0xa0d602ac,0xb0d702ac,0x80d800ea,
+        0xc0d900e5,0xd0da00e1,0xe0db00de,0xf2ad00dc,0x60dd02ac,0x72ad02ac,0x50df02ac,0x60e002ac,
+        0x72ad02ac,0x40e202ac,0x50e302ac,0x60e402ac,0x72ad02ac,0x30e602ac,0x40e702ac,0x50e802ac,
+        0x60e902ac,0x72ad02ac,0x10eb02ac,0xc0ec02ac,0xd0ed02ac,0xe0ee02ac,0xf2ad02ac,0x90f012ac,
+        0x70f112ac,0x80f212ac,0x60f31104,0x50f410ff,0x40f510fb,0x30f610f8,0x12ad10f7,0xa2ad12ac,
+        0xa0f912ac,0xb0fa12ac,0xc2ad12ac,0xa0fc12ac,0xb0fd12ac,0xc0fe12ac,0xd2ad12ac,0xa10012ac,
+        0xb10112ac,0xc10212ac,0xd10312ac,0xe2ad12ac,0xa10512ac,0xb10612ac,0xc10712ac,0xd10812ac,
+        0xe10912ac,0xf2ad12ac,0x910b0125,0xa10c02ac,0xb10d02ac,0x810e0120,0xc10f011b,0xd1100117,
+        0xe1110114,0xf2ad0112,0x611302ac,0x72ad02ac,0x511502ac,0x611602ac,0x72ad02ac,0x411802ac,
+        0x511902ac,0x611a02ac,0x72ad02ac,0x311c02ac,0x411d02ac,0x511e02ac,0x611f02ac,0x72ad02ac,
+        0x112102ac,0xc12202ac,0xd12302ac,0xe12402ac,0xf2ad02ac,0x912612ac,0x712712ac,0x812812ac,
+        0xa12912ac,0xb12a12ac,0x612b1134,0x512c1131,0x412d112f,0x32ad112e,0xc2ad12ac,0xc13012ac,
+        0xd2ad12ac,0xc13212ac,0xd13312ac,0xe2ad12ac,0xc13512ac,0xd13612ac,0xe13712ac,0xf2ad12ac,
+        0x01391270,0x213a0170,0x913b0155,0x713c02ac,0x813d02ac,0x613e014f,0x513f014a,0x41400146,
+        0x31410143,0x12ad0142,0xa2ad02ac,0xa14402ac,0xb14502ac,0xc2ad02ac,0xa14702ac,0xb14802ac,
+        0xc14902ac,0xd2ad02ac,0xa14b02ac,0xb14c02ac,0xc14d02ac,0xd14e02ac,0xe2ad02ac,0xa15002ac,
+        0xb15102ac,0xc15202ac,0xd15302ac,0xe15402ac,0xf2ad02ac,0x915612ac,0xa15712ac,0xb15812ac,
+        0x8159116b,0xc15a1166,0xd15b1162,0xe15c115f,0xf2ad115d,0x615e12ac,0x72ad12ac,0x516012ac,
+        0x616112ac,0x72ad12ac,0x416312ac,0x516412ac,0x616512ac,0x72ad12ac,0x316712ac,0x416812ac,
+        0x516912ac,0x616a12ac,0x72ad12ac,0x116c12ac,0xc16d12ac,0xd16e12ac,0xe16f12ac,0xf2ad12ac,
+        0x21711242,0x41720198,0xb1730182,0x717402ac,0x817502ac,0x917602ac,0xa17702ac,0x6178017e,
+        0x5179017b,0x32ad017a,0xc2ad02ac,0xc17c02ac,0xd17d02ac,0xe2ad02ac,0xc17f02ac,0xd18002ac,
+        0xe18102ac,0xf2ad02ac,0xb18312ac,0xc18412ac,0xd18512ac,0xa1861194,0xe187118f,0xf188118b,
+        0x12ad1189,0x818a12ac,0x92ad12ac,0x618c12ac,0x718d12ac,0x818e12ac,0x92ad12ac,0x519012ac,
+        0x619112ac,0x719212ac,0x819312ac,0x92ad12ac,0x119512ac,0x319612ac,0xe19712ac,0xf2ad12ac,
+        0x41991220,0x519a01b6,0xc19b01a4,0x719c02ac,0x819d02ac,0x919e02ac,0xa19f02ac,0xb1a002ac,
+        0xd1a102ac,0x62ad01a2,0xe1a302ac,0xf2ad02ac,0xc1a512ac,0xd1a612ac,0xe1a712ac,0xf1a811b0,
+        0x11a911ac,0x32ad11aa,0xa1ab12ac,0xb2ad12ac,0x81ad12ac,0x91ae12ac,0xa1af12ac,0xb2ad12ac,
+        0x61b112ac,0x71b212ac,0x81b312ac,0x91b412ac,0xa1b512ac,0xb2ad12ac,0x51b71204,0x71b801d1,
+        0xe1b901c1,0x81ba02ac,0x91bb02ac,0xa1bc02ac,0xb1bd02ac,0xc1be02ac,0xd1bf02ac,0x62ad01c0,
+        0xf2ad02ac,0xe1c212ac,0xf1c312ac,0x11c411cb,0x31c511c7,0x62ad11c6,0xd2ad12ac,0xa1c812ac,
+        0xb1c912ac,0xc1ca12ac,0xd2ad12ac,0x81cc12ac,0x91cd12ac,0xa1ce12ac,0xb1cf12ac,0xc1d012ac,
+        0xd2ad12ac,0x71d211f4,0x31d311e3,0x11d411da,0x61d511d7,0x82ad11d6,0xf2ad12ac,0xd1d812ac,
+        0xe1d912ac,0xf2ad12ac,0x81db12ac,0x91dc12ac,0xa1dd12ac,0x62ad11de,0xb1df12ac,0xc1e012ac,
+        0xd1e112ac,0xe1e212ac,0xf2ad12ac,0xa1e412ac,0xb1e512ac,0xc1e612ac,0x81e711f0,0x91e811ec,
+        0x62ad11e9,0xd1ea12ac,0xe1eb12ac,0xf2ad12ac,0x11ed12ac,0xd1ee12ac,0xe1ef12ac,0xf2ad12ac,
+        0x11f112ac,0xd1f212ac,0xe1f312ac,0xf2ad12ac,0xe1f512ac,0xf1f612ac,0x11f711fe,0x31f811fa,
+        0x62ad11f9,0xd2ad12ac,0xa1fb12ac,0xb1fc12ac,0xc1fd12ac,0xd2ad12ac,0x81ff12ac,0x920012ac,
+        0xa20112ac,0xb20212ac,0xc20312ac,0xd2ad12ac,0xc205020e,0x720602ac,0x820702ac,0x920802ac,
+        0xa20902ac,0xb20a02ac,0xd20b02ac,0xe20c02ac,0x62ad020d,0xf2ad02ac,0xc20f12ac,0xd21012ac,
+        0xe21112ac,0xf212121a,0x12131216,0x32ad1214,0xa21512ac,0xb2ad12ac,0x821712ac,0x921812ac,
+        0xa21912ac,0xb2ad12ac,0x621b12ac,0x721c12ac,0x821d12ac,0x921e12ac,0xa21f12ac,0xb2ad12ac,
+        0xb221022c,0x722202ac,0x822302ac,0x922402ac,0xa22502ac,0xc22602ac,0xd22702ac,0x6228022a,
+        0x52ad0229,0xe2ad02ac,0xe22b02ac,0xf2ad02ac,0xb22d12ac,0xc22e12ac,0xd22f12ac,0xa230123e,
+        0xe2311239,0xf2321235,0x12ad1233,0x823412ac,0x92ad12ac,0x623612ac,0x723712ac,0x823812ac,
+        0x92ad12ac,0x523a12ac,0x623b12ac,0x723c12ac,0x823d12ac,0x92ad12ac,0x123f12ac,0x324012ac,
+        0xe24112ac,0xf2ad12ac,0x92430255,0x724402ac,0x824502ac,0xa24602ac,0xb24702ac,0x62480251,
+        0x5249024e,0x424a024c,0x32ad024b,0xc2ad02ac,0xc24d02ac,0xd2ad02ac,0xc24f02ac,0xd25002ac,
+        0xe2ad02ac,0xc25202ac,0xd25302ac,0xe25402ac,0xf2ad02ac,0x925612ac,0xa25712ac,0xb25812ac,
+        0x8259126b,0xc25a1266,0xd25b1262,0xe25c125f,0xf2ad125d,0x625e12ac,0x72ad12ac,0x526012ac,
+        0x626112ac,0x72ad12ac,0x426312ac,0x526412ac,0x626512ac,0x72ad12ac,0x326712ac,0x426812ac,
+        0x526912ac,0x626a12ac,0x72ad12ac,0x126c12ac,0xc26d12ac,0xd26e12ac,0xe26f12ac,0xf2ad12ac,
+        0x7271028e,0x827202ac,0x927302ac,0x62740288,0x52750283,0x4276027f,0x3277027c,0x2278027a,
+        0x12ad0279,0xa2ad02ac,0xa27b02ac,0xb2ad02ac,0xa27d02ac,0xb27e02ac,0xc2ad02ac,0xa28002ac,
+        0xb28102ac,0xc28202ac,0xd2ad02ac,0xa28402ac,0xb28502ac,0xc28602ac,0xd28702ac,0xe2ad02ac,
+        0xa28902ac,0xb28a02ac,0xc28b02ac,0xd28c02ac,0xe28d02ac,0xf2ad02ac,0x728f12ac,0x829012ac,
+        0x929112ac,0x629212a6,0x529312a1,0x4294129d,0x3295129a,0x22961298,0x12ad1297,0xa2ad12ac,
+        0xa29912ac,0xb2ad12ac,0xa29b12ac,0xb29c12ac,0xc2ad12ac,0xa29e12ac,0xb29f12ac,0xc2a012ac,
+        0xd2ad12ac,0xa2a212ac,0xb2a312ac,0xc2a412ac,0xd2a512ac,0xe2ad12ac,0xa2a712ac,0xb2a812ac,
+        0xc2a912ac,0xd2aa12ac,0xe2ab12ac,0xf2ad12ac,0x000000fe,0x000000ff};
+
+
+    switch(agasttype) {
+      case AgastFeatureDetector::AGAST_5_8:
+        table_struct=(unsigned long *)(table_5_8_corner_struct);
+        break;
+      case AgastFeatureDetector::AGAST_7_12d:
+        table_struct=(unsigned long *)(table_7_12d_corner_struct);
+        break;
+      case AgastFeatureDetector::AGAST_7_12s:
+        table_struct=(unsigned long *)(table_7_12s_corner_struct);
+        break;
+      case AgastFeatureDetector::OAST_9_16:
+      default:
+        table_struct=(unsigned long *)(table_9_16_corner_struct);
+        break;
+    }
+
+    while(true)
+    {
+        result = agast_tree_search(table_struct, (int *)pixel, ptr, b_test);
+        if (result == 254)
+            bmax = b_test;
+        else
+            bmin = b_test;
+
+        if(bmin == bmax - 1 || bmin == bmax)
+            return bmin;
+        b_test = (bmin + bmax) / 2;
+    }
+}
+
+// 8 pixel mask
+template<>
+int agast_cornerScore<AgastFeatureDetector::AGAST_5_8>(const uchar* ptr, const int pixel[], int threshold)
+{
+    return AGAST_ALL_SCORE(ptr, pixel, threshold, AgastFeatureDetector::AGAST_5_8);
+}
+
+// 12 pixel mask in square format
+template<>
+int agast_cornerScore<AgastFeatureDetector::AGAST_7_12d>(const uchar* ptr, const int pixel[], int threshold)
+{
+    return AGAST_ALL_SCORE(ptr, pixel, threshold, AgastFeatureDetector::AGAST_7_12d);
+}
+
+// 12 pixel mask in diamond format
+template<>
+int agast_cornerScore<AgastFeatureDetector::AGAST_7_12s>(const uchar* ptr, const int pixel[], int threshold)
+{
+    return AGAST_ALL_SCORE(ptr, pixel, threshold, AgastFeatureDetector::AGAST_7_12s);
+}
+
+// 16 pixel mask
+template<>
+int agast_cornerScore<AgastFeatureDetector::OAST_9_16>(const uchar* ptr, const int pixel[], int threshold)
+{
+    return AGAST_ALL_SCORE(ptr, pixel, threshold, AgastFeatureDetector::OAST_9_16);
+}
+
+#endif // !(defined __i386__ || defined(_M_IX86) || defined __x86_64__ || defined(_M_X64))
+
+#endif // !(defined __i386__ || defined(_M_IX86) || defined __x86_64__ || defined(_M_X64))
 
 } // namespace cv
index bd5ddb3..bd65073 100644 (file)
@@ -52,11 +52,17 @@ The references are:
 namespace cv
 {
 
+#if !(defined __i386__ || defined(_M_IX86) || defined __x86_64__ || defined(_M_X64))
+int agast_tree_search(const unsigned long table_struct32[], int pixel_[], const unsigned char* const ptr, int threshold);
+#endif //!(defined __i386__ || defined(_M_IX86) || defined __x86_64__ || defined(_M_X64))
+
+
 void makeAgastOffsets(int pixel[16], int row_stride, int type);
 
 template<int type>
 int agast_cornerScore(const uchar* ptr, const int pixel[], int threshold);
 
+
 }
 #endif
 #endif
index b37b69b..1143add 100644 (file)
@@ -1,16 +1,16 @@
 /* Redistribution and use in source and binary forms, with or
  * without modification, are permitted provided that the following
  * conditions are met:
- *     Redistributions of source code must retain the above
- *     copyright notice, this list of conditions and the following
- *     disclaimer.
- *     Redistributions in binary form must reproduce the above
- *     copyright notice, this list of conditions and the following
- *     disclaimer in the documentation and/or other materials
- *     provided with the distribution.
- *     The name of Contributor may not be used to endorse or
- *     promote products derived from this software without
- *     specific prior written permission.
+ *     Redistributions of source code must retain the above
+ *     copyright notice, this list of conditions and the following
+ *     disclaimer.
+ *     Redistributions in binary form must reproduce the above
+ *     copyright notice, this list of conditions and the following
+ *     disclaimer in the documentation and/or other materials
+ *     provided with the distribution.
+ *     The name of Contributor may not be used to endorse or
+ *     promote products derived from this software without
+ *     specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
  * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,