Home | History | Annotate | Download | only in aarch32
      1 // Copyright 2016, VIXL authors
      2 // All rights reserved.
      3 //
      4 // Redistribution and use in source and binary forms, with or without
      5 // modification, are permitted provided that the following conditions are met:
      6 //
      7 //   * Redistributions of source code must retain the above copyright notice,
      8 //     this list of conditions and the following disclaimer.
      9 //   * Redistributions in binary form must reproduce the above copyright notice,
     10 //     this list of conditions and the following disclaimer in the documentation
     11 //     and/or other materials provided with the distribution.
     12 //   * Neither the name of ARM Limited nor the names of its contributors may be
     13 //     used to endorse or promote products derived from this software without
     14 //     specific prior written permission.
     15 //
     16 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS CONTRIBUTORS "AS IS" AND
     17 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     18 // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
     19 // DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
     20 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     21 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
     22 // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
     23 // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
     24 // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     25 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     26 
     27 
     28 // -----------------------------------------------------------------------------
     29 // This file is auto generated from the
     30 // test/aarch32/config/template-simulator-aarch32.cc.in template file using
     31 // tools/generate_tests.py.
     32 //
     33 // PLEASE DO NOT EDIT.
     34 // -----------------------------------------------------------------------------
     35 
     36 
     37 #include "test-runner.h"
     38 
     39 #include "test-utils.h"
     40 #include "test-utils-aarch32.h"
     41 
     42 #include "aarch32/assembler-aarch32.h"
     43 #include "aarch32/disasm-aarch32.h"
     44 #include "aarch32/macro-assembler-aarch32.h"
     45 
     46 #define __ masm.
     47 #define BUF_SIZE (4096)
     48 
     49 #ifdef VIXL_INCLUDE_SIMULATOR_AARCH32
     50 // Run tests with the simulator.
     51 
     52 #define SETUP() MacroAssembler masm(BUF_SIZE)
     53 
     54 #define START() masm.GetBuffer()->Reset()
     55 
     56 #define END() \
     57   __ Hlt(0);  \
     58   __ FinalizeCode();
     59 
     60 // TODO: Run the tests in the simulator.
     61 #define RUN()
     62 
     63 #else  // ifdef VIXL_INCLUDE_SIMULATOR_AARCH32.
     64 
     65 #define SETUP()                  \
     66   MacroAssembler masm(BUF_SIZE); \
     67   UseScratchRegisterScope harness_scratch;
     68 
     69 #define START()                 \
     70   harness_scratch.Open(&masm);  \
     71   harness_scratch.ExcludeAll(); \
     72   masm.GetBuffer()->Reset();    \
     73   __ Push(r4);                  \
     74   __ Push(r5);                  \
     75   __ Push(r6);                  \
     76   __ Push(r7);                  \
     77   __ Push(r8);                  \
     78   __ Push(r9);                  \
     79   __ Push(r10);                 \
     80   __ Push(r11);                 \
     81   __ Push(lr);                  \
     82   harness_scratch.Include(ip);
     83 
     84 #define END()                  \
     85   harness_scratch.Exclude(ip); \
     86   __ Pop(lr);                  \
     87   __ Pop(r11);                 \
     88   __ Pop(r10);                 \
     89   __ Pop(r9);                  \
     90   __ Pop(r8);                  \
     91   __ Pop(r7);                  \
     92   __ Pop(r6);                  \
     93   __ Pop(r5);                  \
     94   __ Pop(r4);                  \
     95   __ Bx(lr);                   \
     96   __ FinalizeCode();           \
     97   harness_scratch.Close();
     98 
     99 #define RUN()                                                 \
    100   {                                                           \
    101     int pcs_offset = masm.IsUsingT32() ? 1 : 0;               \
    102     masm.GetBuffer()->SetExecutable();                        \
    103     ExecuteMemory(masm.GetBuffer()->GetStartAddress<byte*>(), \
    104                   masm.GetSizeOfCodeGenerated(),              \
    105                   pcs_offset);                                \
    106     masm.GetBuffer()->SetWritable();                          \
    107   }
    108 
    109 #endif  // ifdef VIXL_INCLUDE_SIMULATOR_AARCH32
    110 
    111 namespace vixl {
    112 namespace aarch32 {
    113 
    114 // List of instruction encodings:
    115 #define FOREACH_INSTRUCTION(M) \
    116   M(Adc)                       \
    117   M(Adcs)                      \
    118   M(Add)                       \
    119   M(Adds)                      \
    120   M(And)                       \
    121   M(Ands)                      \
    122   M(Bic)                       \
    123   M(Bics)                      \
    124   M(Eor)                       \
    125   M(Eors)                      \
    126   M(Orr)                       \
    127   M(Orrs)                      \
    128   M(Rsb)                       \
    129   M(Rsbs)                      \
    130   M(Rsc)                       \
    131   M(Rscs)                      \
    132   M(Sbc)                       \
    133   M(Sbcs)                      \
    134   M(Sub)                       \
    135   M(Subs)
    136 
    137 
    138 // The following definitions are defined again in each generated test, therefore
    139 // we need to place them in an anomymous namespace. It expresses that they are
    140 // local to this file only, and the compiler is not allowed to share these types
    141 // across test files during template instantiation. Specifically, `Operands` and
    142 // `Inputs` have various layouts across generated tests so they absolutely
    143 // cannot be shared.
    144 
    145 #ifdef VIXL_INCLUDE_TARGET_A32
    146 namespace {
    147 
    148 // Values to be passed to the assembler to produce the instruction under test.
    149 struct Operands {
    150   Condition cond;
    151   Register rd;
    152   Register rn;
    153   Register rm;
    154   ShiftType shift;
    155   Register rs;
    156 };
    157 
    158 // Input data to feed to the instruction.
    159 struct Inputs {
    160   uint32_t apsr;
    161   uint32_t rd;
    162   uint32_t rn;
    163   uint32_t rm;
    164   uint32_t rs;
    165 };
    166 
    167 // This structure contains all input data needed to test one specific encoding.
    168 // It used to generate a loop over an instruction.
    169 struct TestLoopData {
    170   // The `operands` fields represents the values to pass to the assembler to
    171   // produce the instruction.
    172   Operands operands;
    173   // Description of the operands, used for error reporting.
    174   const char* operands_description;
    175   // Unique identifier, used for generating traces.
    176   const char* identifier;
    177   // Array of values to be fed to the instruction.
    178   size_t input_size;
    179   const Inputs* inputs;
    180 };
    181 
    182 static const Inputs kCondition[] =
    183     {{NFlag, 0xabababab, 0xabababab, 0xabababab, 0},
    184      {ZFlag, 0xabababab, 0xabababab, 0xabababab, 0},
    185      {CFlag, 0xabababab, 0xabababab, 0xabababab, 0},
    186      {VFlag, 0xabababab, 0xabababab, 0xabababab, 0},
    187      {NZFlag, 0xabababab, 0xabababab, 0xabababab, 0},
    188      {NCFlag, 0xabababab, 0xabababab, 0xabababab, 0},
    189      {NVFlag, 0xabababab, 0xabababab, 0xabababab, 0},
    190      {ZCFlag, 0xabababab, 0xabababab, 0xabababab, 0},
    191      {ZVFlag, 0xabababab, 0xabababab, 0xabababab, 0},
    192      {CVFlag, 0xabababab, 0xabababab, 0xabababab, 0},
    193      {NZCFlag, 0xabababab, 0xabababab, 0xabababab, 0},
    194      {NZVFlag, 0xabababab, 0xabababab, 0xabababab, 0},
    195      {NCVFlag, 0xabababab, 0xabababab, 0xabababab, 0},
    196      {ZCVFlag, 0xabababab, 0xabababab, 0xabababab, 0},
    197      {NZCVFlag, 0xabababab, 0xabababab, 0xabababab, 0}};
    198 
    199 static const Inputs kRdIsRn[] =
    200     {{NoFlag, 0xffffff83, 0xffffff83, 0xffff8002, 0},
    201      {NoFlag, 0x0000007e, 0x0000007e, 0x7fffffff, 0},
    202      {NoFlag, 0x0000007d, 0x0000007d, 0xffffffe0, 0},
    203      {NoFlag, 0x7fffffff, 0x7fffffff, 0x00000002, 0},
    204      {NoFlag, 0xffff8002, 0xffff8002, 0xfffffffd, 0},
    205      {NoFlag, 0xffffffe0, 0xffffffe0, 0x00007fff, 0},
    206      {NoFlag, 0xffff8000, 0xffff8000, 0xffffff83, 0},
    207      {NoFlag, 0xffff8002, 0xffff8002, 0x80000001, 0},
    208      {NoFlag, 0x00007ffd, 0x00007ffd, 0xffff8003, 0},
    209      {NoFlag, 0x00007fff, 0x00007fff, 0xffffffff, 0},
    210      {NoFlag, 0x00000000, 0x00000000, 0xffffff80, 0},
    211      {NoFlag, 0xffff8001, 0xffff8001, 0x33333333, 0},
    212      {NoFlag, 0xffffff80, 0xffffff80, 0x0000007e, 0},
    213      {NoFlag, 0x0000007e, 0x0000007e, 0x7ffffffd, 0},
    214      {NoFlag, 0xffffff80, 0xffffff80, 0xfffffffd, 0},
    215      {NoFlag, 0x00000020, 0x00000020, 0xffff8002, 0},
    216      {NoFlag, 0xffffff80, 0xffffff80, 0xfffffffe, 0},
    217      {NoFlag, 0x00000002, 0x00000002, 0x00000000, 0},
    218      {NoFlag, 0x0000007e, 0x0000007e, 0x00000001, 0},
    219      {NoFlag, 0x00000002, 0x00000002, 0x0000007f, 0},
    220      {NoFlag, 0x80000000, 0x80000000, 0x80000000, 0},
    221      {NoFlag, 0x7fffffff, 0x7fffffff, 0xffffff80, 0},
    222      {NoFlag, 0x00000001, 0x00000001, 0xfffffffe, 0},
    223      {NoFlag, 0x33333333, 0x33333333, 0x0000007d, 0},
    224      {NoFlag, 0x00000001, 0x00000001, 0x7ffffffe, 0},
    225      {NoFlag, 0x00007ffe, 0x00007ffe, 0x7fffffff, 0},
    226      {NoFlag, 0x80000000, 0x80000000, 0xffffff83, 0},
    227      {NoFlag, 0x00000000, 0x00000000, 0x7ffffffe, 0},
    228      {NoFlag, 0x00000000, 0x00000000, 0x0000007f, 0},
    229      {NoFlag, 0x7fffffff, 0x7fffffff, 0xcccccccc, 0},
    230      {NoFlag, 0xffffff82, 0xffffff82, 0x00000002, 0},
    231      {NoFlag, 0x7ffffffd, 0x7ffffffd, 0xaaaaaaaa, 0},
    232      {NoFlag, 0xcccccccc, 0xcccccccc, 0xffff8001, 0},
    233      {NoFlag, 0xfffffffe, 0xfffffffe, 0xffff8001, 0},
    234      {NoFlag, 0x7fffffff, 0x7fffffff, 0x00000020, 0},
    235      {NoFlag, 0xffffffe0, 0xffffffe0, 0x00007ffe, 0},
    236      {NoFlag, 0x80000001, 0x80000001, 0xffff8000, 0},
    237      {NoFlag, 0xffffff82, 0xffffff82, 0x0000007d, 0},
    238      {NoFlag, 0x0000007e, 0x0000007e, 0x7ffffffe, 0},
    239      {NoFlag, 0x00007ffd, 0x00007ffd, 0xffffff80, 0},
    240      {NoFlag, 0x0000007d, 0x0000007d, 0x0000007e, 0},
    241      {NoFlag, 0xffff8002, 0xffff8002, 0x7fffffff, 0},
    242      {NoFlag, 0xffffffe0, 0xffffffe0, 0x0000007f, 0},
    243      {NoFlag, 0x00007ffe, 0x00007ffe, 0xffffff81, 0},
    244      {NoFlag, 0x80000000, 0x80000000, 0x0000007e, 0},
    245      {NoFlag, 0xffffffff, 0xffffffff, 0xaaaaaaaa, 0},
    246      {NoFlag, 0xfffffffe, 0xfffffffe, 0x00000020, 0},
    247      {NoFlag, 0xffffff82, 0xffffff82, 0xffff8003, 0},
    248      {NoFlag, 0x7ffffffd, 0x7ffffffd, 0xffff8002, 0},
    249      {NoFlag, 0x7ffffffe, 0x7ffffffe, 0x00000000, 0},
    250      {NoFlag, 0xfffffffd, 0xfffffffd, 0xffffffe0, 0},
    251      {NoFlag, 0xffff8000, 0xffff8000, 0xffff8002, 0},
    252      {NoFlag, 0xffffff82, 0xffffff82, 0x7ffffffd, 0},
    253      {NoFlag, 0xcccccccc, 0xcccccccc, 0x80000000, 0},
    254      {NoFlag, 0x80000001, 0x80000001, 0x33333333, 0},
    255      {NoFlag, 0x00000001, 0x00000001, 0x00000002, 0},
    256      {NoFlag, 0x55555555, 0x55555555, 0x0000007f, 0},
    257      {NoFlag, 0xffffffff, 0xffffffff, 0xfffffffd, 0},
    258      {NoFlag, 0xffffff80, 0xffffff80, 0x80000000, 0},
    259      {NoFlag, 0x00000000, 0x00000000, 0x00000020, 0},
    260      {NoFlag, 0xfffffffe, 0xfffffffe, 0xffff8003, 0},
    261      {NoFlag, 0xffff8001, 0xffff8001, 0xffff8000, 0},
    262      {NoFlag, 0x55555555, 0x55555555, 0x55555555, 0},
    263      {NoFlag, 0x00007fff, 0x00007fff, 0xffff8000, 0},
    264      {NoFlag, 0x7fffffff, 0x7fffffff, 0xffffffe0, 0},
    265      {NoFlag, 0x00000001, 0x00000001, 0x55555555, 0},
    266      {NoFlag, 0x33333333, 0x33333333, 0x7ffffffe, 0},
    267      {NoFlag, 0x80000000, 0x80000000, 0xffffffe0, 0},
    268      {NoFlag, 0xffffff83, 0xffffff83, 0x0000007d, 0},
    269      {NoFlag, 0xffff8003, 0xffff8003, 0x00000002, 0},
    270      {NoFlag, 0x7ffffffe, 0x7ffffffe, 0xffffff81, 0},
    271      {NoFlag, 0xfffffffe, 0xfffffffe, 0xffffff80, 0},
    272      {NoFlag, 0x00007ffe, 0x00007ffe, 0xffff8002, 0},
    273      {NoFlag, 0x80000001, 0x80000001, 0xfffffffe, 0},
    274      {NoFlag, 0x7ffffffd, 0x7ffffffd, 0xfffffffd, 0},
    275      {NoFlag, 0x7ffffffd, 0x7ffffffd, 0xfffffffe, 0},
    276      {NoFlag, 0x7ffffffe, 0x7ffffffe, 0xffffff83, 0},
    277      {NoFlag, 0xfffffffd, 0xfffffffd, 0x00007ffe, 0},
    278      {NoFlag, 0x7fffffff, 0x7fffffff, 0x80000000, 0},
    279      {NoFlag, 0xffffff82, 0xffffff82, 0x7fffffff, 0},
    280      {NoFlag, 0xffffffe0, 0xffffffe0, 0xffffff83, 0},
    281      {NoFlag, 0xffff8000, 0xffff8000, 0xffff8000, 0},
    282      {NoFlag, 0x00000001, 0x00000001, 0x7fffffff, 0},
    283      {NoFlag, 0xfffffffe, 0xfffffffe, 0xffffffff, 0},
    284      {NoFlag, 0xffffff82, 0xffffff82, 0xffffffff, 0},
    285      {NoFlag, 0xffffffff, 0xffffffff, 0xfffffffe, 0},
    286      {NoFlag, 0xaaaaaaaa, 0xaaaaaaaa, 0x0000007d, 0},
    287      {NoFlag, 0xffff8001, 0xffff8001, 0xfffffffe, 0},
    288      {NoFlag, 0x00007ffe, 0x00007ffe, 0x0000007d, 0},
    289      {NoFlag, 0xffffff82, 0xffffff82, 0xfffffffe, 0},
    290      {NoFlag, 0x00000000, 0x00000000, 0x00007ffd, 0},
    291      {NoFlag, 0xaaaaaaaa, 0xaaaaaaaa, 0xffff8002, 0},
    292      {NoFlag, 0x0000007f, 0x0000007f, 0xffffff82, 0},
    293      {NoFlag, 0x00007fff, 0x00007fff, 0x33333333, 0},
    294      {NoFlag, 0xfffffffd, 0xfffffffd, 0x80000000, 0},
    295      {NoFlag, 0x00000000, 0x00000000, 0xfffffffd, 0},
    296      {NoFlag, 0x0000007d, 0x0000007d, 0x0000007f, 0},
    297      {NoFlag, 0xfffffffd, 0xfffffffd, 0x0000007e, 0},
    298      {NoFlag, 0xffffffe0, 0xffffffe0, 0x55555555, 0},
    299      {NoFlag, 0xffffffff, 0xffffffff, 0x80000000, 0},
    300      {NoFlag, 0xffffffe0, 0xffffffe0, 0x0000007e, 0},
    301      {NoFlag, 0xffffff81, 0xffffff81, 0x00007ffd, 0},
    302      {NoFlag, 0x00000020, 0x00000020, 0xffff8001, 0},
    303      {NoFlag, 0x00007fff, 0x00007fff, 0xffffff83, 0},
    304      {NoFlag, 0x33333333, 0x33333333, 0x00000000, 0},
    305      {NoFlag, 0xffff8000, 0xffff8000, 0xffffff82, 0},
    306      {NoFlag, 0xffff8001, 0xffff8001, 0x0000007e, 0},
    307      {NoFlag, 0xffffff80, 0xffffff80, 0x00000001, 0},
    308      {NoFlag, 0x80000000, 0x80000000, 0xcccccccc, 0},
    309      {NoFlag, 0x00000002, 0x00000002, 0x00007ffd, 0},
    310      {NoFlag, 0x7ffffffe, 0x7ffffffe, 0x80000001, 0},
    311      {NoFlag, 0x00000020, 0x00000020, 0x00007ffe, 0},
    312      {NoFlag, 0xffff8000, 0xffff8000, 0xfffffffd, 0},
    313      {NoFlag, 0x7fffffff, 0x7fffffff, 0xffff8001, 0},
    314      {NoFlag, 0x00000000, 0x00000000, 0xffffff83, 0},
    315      {NoFlag, 0x0000007f, 0x0000007f, 0x00000020, 0},
    316      {NoFlag, 0x80000001, 0x80000001, 0xffff8003, 0},
    317      {NoFlag, 0xffff8001, 0xffff8001, 0x0000007f, 0},
    318      {NoFlag, 0x0000007f, 0x0000007f, 0x80000001, 0},
    319      {NoFlag, 0x00000002, 0x00000002, 0x7ffffffe, 0},
    320      {NoFlag, 0xffffff82, 0xffffff82, 0xffffff83, 0},
    321      {NoFlag, 0x00007ffd, 0x00007ffd, 0x7fffffff, 0},
    322      {NoFlag, 0x7ffffffe, 0x7ffffffe, 0xfffffffe, 0},
    323      {NoFlag, 0xffffff82, 0xffffff82, 0xffff8000, 0},
    324      {NoFlag, 0xfffffffe, 0xfffffffe, 0xffff8000, 0},
    325      {NoFlag, 0xffff8002, 0xffff8002, 0xffffff81, 0},
    326      {NoFlag, 0x33333333, 0x33333333, 0x7fffffff, 0},
    327      {NoFlag, 0x80000001, 0x80000001, 0x00007fff, 0},
    328      {NoFlag, 0xffff8002, 0xffff8002, 0xcccccccc, 0},
    329      {NoFlag, 0xffffffff, 0xffffffff, 0x00000002, 0},
    330      {NoFlag, 0x33333333, 0x33333333, 0xffffff81, 0},
    331      {NoFlag, 0xfffffffd, 0xfffffffd, 0xffffff80, 0},
    332      {NoFlag, 0x55555555, 0x55555555, 0xaaaaaaaa, 0},
    333      {NoFlag, 0x33333333, 0x33333333, 0xffffff82, 0},
    334      {NoFlag, 0xffffff80, 0xffffff80, 0xaaaaaaaa, 0},
    335      {NoFlag, 0x0000007e, 0x0000007e, 0x00000020, 0},
    336      {NoFlag, 0xffffff83, 0xffffff83, 0x00007ffd, 0},
    337      {NoFlag, 0xffffff82, 0xffffff82, 0xaaaaaaaa, 0},
    338      {NoFlag, 0xffff8003, 0xffff8003, 0xffffffff, 0},
    339      {NoFlag, 0xaaaaaaaa, 0xaaaaaaaa, 0xfffffffe, 0},
    340      {NoFlag, 0xaaaaaaaa, 0xaaaaaaaa, 0x00000000, 0},
    341      {NoFlag, 0xaaaaaaaa, 0xaaaaaaaa, 0x0000007f, 0},
    342      {NoFlag, 0x0000007f, 0x0000007f, 0x0000007d, 0},
    343      {NoFlag, 0xfffffffd, 0xfffffffd, 0x55555555, 0},
    344      {NoFlag, 0xffffffff, 0xffffffff, 0x00000020, 0},
    345      {NoFlag, 0x00007ffe, 0x00007ffe, 0xffffff83, 0},
    346      {NoFlag, 0x7fffffff, 0x7fffffff, 0x55555555, 0},
    347      {NoFlag, 0x55555555, 0x55555555, 0xcccccccc, 0},
    348      {NoFlag, 0xffffffe0, 0xffffffe0, 0xffff8003, 0},
    349      {NoFlag, 0x7ffffffe, 0x7ffffffe, 0x00007ffe, 0},
    350      {NoFlag, 0x00007ffd, 0x00007ffd, 0xffff8002, 0},
    351      {NoFlag, 0x00007ffd, 0x00007ffd, 0x00000001, 0},
    352      {NoFlag, 0x00000000, 0x00000000, 0x00007ffe, 0},
    353      {NoFlag, 0xffffff80, 0xffffff80, 0x00000020, 0},
    354      {NoFlag, 0xffff8000, 0xffff8000, 0x0000007d, 0},
    355      {NoFlag, 0xffff8003, 0xffff8003, 0x00000000, 0},
    356      {NoFlag, 0x0000007e, 0x0000007e, 0x80000000, 0},
    357      {NoFlag, 0xfffffffd, 0xfffffffd, 0x00000000, 0},
    358      {NoFlag, 0xffffff80, 0xffffff80, 0xffffffff, 0},
    359      {NoFlag, 0xcccccccc, 0xcccccccc, 0x0000007f, 0},
    360      {NoFlag, 0x7ffffffd, 0x7ffffffd, 0x00000000, 0},
    361      {NoFlag, 0x00007fff, 0x00007fff, 0x00000000, 0},
    362      {NoFlag, 0x0000007f, 0x0000007f, 0x00000001, 0},
    363      {NoFlag, 0xffffffff, 0xffffffff, 0xffffff82, 0},
    364      {NoFlag, 0x00007ffe, 0x00007ffe, 0x00007ffd, 0},
    365      {NoFlag, 0xaaaaaaaa, 0xaaaaaaaa, 0x33333333, 0},
    366      {NoFlag, 0xffffff82, 0xffffff82, 0x55555555, 0},
    367      {NoFlag, 0xffff8003, 0xffff8003, 0x0000007e, 0},
    368      {NoFlag, 0xffffff83, 0xffffff83, 0x00000002, 0},
    369      {NoFlag, 0xffffff82, 0xffffff82, 0x33333333, 0},
    370      {NoFlag, 0x55555555, 0x55555555, 0xffffffff, 0},
    371      {NoFlag, 0xaaaaaaaa, 0xaaaaaaaa, 0x80000001, 0},
    372      {NoFlag, 0xffffff83, 0xffffff83, 0xffffffe0, 0},
    373      {NoFlag, 0x00000001, 0x00000001, 0xffffffe0, 0},
    374      {NoFlag, 0x33333333, 0x33333333, 0x33333333, 0},
    375      {NoFlag, 0x55555555, 0x55555555, 0x00000001, 0},
    376      {NoFlag, 0xffffff83, 0xffffff83, 0x00007fff, 0},
    377      {NoFlag, 0x00000002, 0x00000002, 0xfffffffd, 0},
    378      {NoFlag, 0xffffffe0, 0xffffffe0, 0xffff8002, 0},
    379      {NoFlag, 0x80000000, 0x80000000, 0x00007ffd, 0},
    380      {NoFlag, 0xffffff83, 0xffffff83, 0xfffffffe, 0},
    381      {NoFlag, 0x80000001, 0x80000001, 0xffffffff, 0},
    382      {NoFlag, 0xffff8003, 0xffff8003, 0x00000020, 0},
    383      {NoFlag, 0xffffff82, 0xffffff82, 0xcccccccc, 0},
    384      {NoFlag, 0x00000020, 0x00000020, 0x7fffffff, 0},
    385      {NoFlag, 0xffffff80, 0xffffff80, 0x55555555, 0},
    386      {NoFlag, 0x00000001, 0x00000001, 0x00000020, 0},
    387      {NoFlag, 0xffff8001, 0xffff8001, 0x00007fff, 0},
    388      {NoFlag, 0x00000020, 0x00000020, 0xaaaaaaaa, 0},
    389      {NoFlag, 0x55555555, 0x55555555, 0x7fffffff, 0},
    390      {NoFlag, 0xfffffffe, 0xfffffffe, 0x7fffffff, 0},
    391      {NoFlag, 0x00007fff, 0x00007fff, 0x55555555, 0},
    392      {NoFlag, 0x55555555, 0x55555555, 0x0000007d, 0},
    393      {NoFlag, 0xcccccccc, 0xcccccccc, 0x7ffffffe, 0},
    394      {NoFlag, 0xffff8002, 0xffff8002, 0x00007ffe, 0},
    395      {NoFlag, 0xfffffffe, 0xfffffffe, 0xffffff81, 0},
    396      {NoFlag, 0xffffff81, 0xffffff81, 0x0000007d, 0},
    397      {NoFlag, 0x00000020, 0x00000020, 0x0000007e, 0},
    398      {NoFlag, 0xffffffff, 0xffffffff, 0x00007ffe, 0},
    399      {NoFlag, 0xffff8002, 0xffff8002, 0x0000007e, 0}};
    400 
    401 static const Inputs kRdIsRm[] =
    402     {{NoFlag, 0x55555555, 0x7ffffffe, 0x55555555, 0},
    403      {NoFlag, 0xfffffffe, 0x00000001, 0xfffffffe, 0},
    404      {NoFlag, 0xffffff82, 0xffffff82, 0xffffff82, 0},
    405      {NoFlag, 0xffff8000, 0xffff8003, 0xffff8000, 0},
    406      {NoFlag, 0x00000001, 0x00000000, 0x00000001, 0},
    407      {NoFlag, 0xffffff81, 0x00007fff, 0xffffff81, 0},
    408      {NoFlag, 0x0000007d, 0xffff8002, 0x0000007d, 0},
    409      {NoFlag, 0x80000000, 0xffff8000, 0x80000000, 0},
    410      {NoFlag, 0xffffff80, 0x00000020, 0xffffff80, 0},
    411      {NoFlag, 0x55555555, 0xffffff81, 0x55555555, 0},
    412      {NoFlag, 0x00007ffd, 0xffffff82, 0x00007ffd, 0},
    413      {NoFlag, 0x55555555, 0x00007fff, 0x55555555, 0},
    414      {NoFlag, 0x7ffffffd, 0xffff8000, 0x7ffffffd, 0},
    415      {NoFlag, 0xffffffff, 0xffffff83, 0xffffffff, 0},
    416      {NoFlag, 0x00000000, 0xffffffff, 0x00000000, 0},
    417      {NoFlag, 0xffff8002, 0x33333333, 0xffff8002, 0},
    418      {NoFlag, 0x00007ffd, 0xaaaaaaaa, 0x00007ffd, 0},
    419      {NoFlag, 0x55555555, 0xffff8000, 0x55555555, 0},
    420      {NoFlag, 0x80000001, 0xffffffff, 0x80000001, 0},
    421      {NoFlag, 0x0000007d, 0xffffff83, 0x0000007d, 0},
    422      {NoFlag, 0x0000007e, 0xffffff82, 0x0000007e, 0},
    423      {NoFlag, 0xcccccccc, 0x0000007d, 0xcccccccc, 0},
    424      {NoFlag, 0xffff8002, 0xffffffff, 0xffff8002, 0},
    425      {NoFlag, 0xffffff81, 0x0000007f, 0xffffff81, 0},
    426      {NoFlag, 0xffff8000, 0xffffff83, 0xffff8000, 0},
    427      {NoFlag, 0xffffffff, 0xffffffe0, 0xffffffff, 0},
    428      {NoFlag, 0xfffffffd, 0x80000001, 0xfffffffd, 0},
    429      {NoFlag, 0x55555555, 0x80000000, 0x55555555, 0},
    430      {NoFlag, 0xffff8000, 0x0000007d, 0xffff8000, 0},
    431      {NoFlag, 0xaaaaaaaa, 0xffff8003, 0xaaaaaaaa, 0},
    432      {NoFlag, 0x00000001, 0x00007ffd, 0x00000001, 0},
    433      {NoFlag, 0x0000007e, 0x7ffffffe, 0x0000007e, 0},
    434      {NoFlag, 0x00000020, 0x00007ffd, 0x00000020, 0},
    435      {NoFlag, 0xffffff81, 0x7ffffffd, 0xffffff81, 0},
    436      {NoFlag, 0xffffff83, 0x0000007f, 0xffffff83, 0},
    437      {NoFlag, 0x00000001, 0x0000007e, 0x00000001, 0},
    438      {NoFlag, 0xffffff82, 0xfffffffd, 0xffffff82, 0},
    439      {NoFlag, 0xffff8003, 0x7ffffffe, 0xffff8003, 0},
    440      {NoFlag, 0x00000002, 0x00000002, 0x00000002, 0},
    441      {NoFlag, 0xffffff83, 0xffff8001, 0xffffff83, 0},
    442      {NoFlag, 0xffff8002, 0xfffffffe, 0xffff8002, 0},
    443      {NoFlag, 0xffffff80, 0xffffff81, 0xffffff80, 0},
    444      {NoFlag, 0x7fffffff, 0xffffff81, 0x7fffffff, 0},
    445      {NoFlag, 0x00000020, 0xffffff81, 0x00000020, 0},
    446      {NoFlag, 0x0000007f, 0xffffffff, 0x0000007f, 0},
    447      {NoFlag, 0x0000007d, 0xcccccccc, 0x0000007d, 0},
    448      {NoFlag, 0x00007fff, 0x55555555, 0x00007fff, 0},
    449      {NoFlag, 0xffff8003, 0x00007ffd, 0xffff8003, 0},
    450      {NoFlag, 0x80000001, 0x80000001, 0x80000001, 0},
    451      {NoFlag, 0xffffffff, 0xfffffffd, 0xffffffff, 0},
    452      {NoFlag, 0xffff8000, 0xfffffffe, 0xffff8000, 0},
    453      {NoFlag, 0xcccccccc, 0x0000007f, 0xcccccccc, 0},
    454      {NoFlag, 0x00000001, 0x00000002, 0x00000001, 0},
    455      {NoFlag, 0xffffff82, 0xffffff81, 0xffffff82, 0},
    456      {NoFlag, 0xfffffffd, 0x00007ffd, 0xfffffffd, 0},
    457      {NoFlag, 0x80000001, 0x33333333, 0x80000001, 0},
    458      {NoFlag, 0xffffff82, 0xffff8002, 0xffffff82, 0},
    459      {NoFlag, 0xffff8003, 0xfffffffd, 0xffff8003, 0},
    460      {NoFlag, 0xffffff81, 0x00000020, 0xffffff81, 0},
    461      {NoFlag, 0xffff8001, 0xffff8003, 0xffff8001, 0},
    462      {NoFlag, 0x00000001, 0x80000001, 0x00000001, 0},
    463      {NoFlag, 0xfffffffd, 0x00000002, 0xfffffffd, 0},
    464      {NoFlag, 0xffff8003, 0x7ffffffd, 0xffff8003, 0},
    465      {NoFlag, 0x0000007e, 0xaaaaaaaa, 0x0000007e, 0},
    466      {NoFlag, 0x7ffffffe, 0x7fffffff, 0x7ffffffe, 0},
    467      {NoFlag, 0x00007ffd, 0x00007ffe, 0x00007ffd, 0},
    468      {NoFlag, 0x00007fff, 0x80000001, 0x00007fff, 0},
    469      {NoFlag, 0x00007fff, 0xfffffffe, 0x00007fff, 0},
    470      {NoFlag, 0x00000001, 0xffffff80, 0x00000001, 0},
    471      {NoFlag, 0x55555555, 0xcccccccc, 0x55555555, 0},
    472      {NoFlag, 0x7ffffffd, 0xffffffe0, 0x7ffffffd, 0},
    473      {NoFlag, 0xffffff81, 0xfffffffe, 0xffffff81, 0},
    474      {NoFlag, 0xffffff82, 0x00007ffe, 0xffffff82, 0},
    475      {NoFlag, 0xffffff82, 0x80000001, 0xffffff82, 0},
    476      {NoFlag, 0x0000007f, 0xffff8001, 0x0000007f, 0},
    477      {NoFlag, 0x7ffffffd, 0xffffff83, 0x7ffffffd, 0},
    478      {NoFlag, 0xffffff82, 0xcccccccc, 0xffffff82, 0},
    479      {NoFlag, 0x00000020, 0xffffff83, 0x00000020, 0},
    480      {NoFlag, 0x00007ffe, 0x80000000, 0x00007ffe, 0},
    481      {NoFlag, 0x0000007f, 0xffff8000, 0x0000007f, 0},
    482      {NoFlag, 0xffffff82, 0x33333333, 0xffffff82, 0},
    483      {NoFlag, 0x7ffffffd, 0x7ffffffd, 0x7ffffffd, 0},
    484      {NoFlag, 0xffffff80, 0xffff8001, 0xffffff80, 0},
    485      {NoFlag, 0x00000002, 0xaaaaaaaa, 0x00000002, 0},
    486      {NoFlag, 0xffffffff, 0x7fffffff, 0xffffffff, 0},
    487      {NoFlag, 0xfffffffd, 0xfffffffe, 0xfffffffd, 0},
    488      {NoFlag, 0x00000020, 0x00000001, 0x00000020, 0},
    489      {NoFlag, 0x55555555, 0x00000001, 0x55555555, 0},
    490      {NoFlag, 0x55555555, 0xffffff80, 0x55555555, 0},
    491      {NoFlag, 0xffffffff, 0x00007fff, 0xffffffff, 0},
    492      {NoFlag, 0x00000020, 0xaaaaaaaa, 0x00000020, 0},
    493      {NoFlag, 0x00000002, 0x00007ffe, 0x00000002, 0},
    494      {NoFlag, 0x00000001, 0xcccccccc, 0x00000001, 0},
    495      {NoFlag, 0xffff8001, 0x00000000, 0xffff8001, 0},
    496      {NoFlag, 0x00000001, 0xffff8000, 0x00000001, 0},
    497      {NoFlag, 0xffffffe0, 0x00007fff, 0xffffffe0, 0},
    498      {NoFlag, 0xfffffffe, 0x00007fff, 0xfffffffe, 0},
    499      {NoFlag, 0xffffff83, 0x00000001, 0xffffff83, 0},
    500      {NoFlag, 0x00007fff, 0xffff8002, 0x00007fff, 0},
    501      {NoFlag, 0x7ffffffd, 0x7ffffffe, 0x7ffffffd, 0},
    502      {NoFlag, 0x80000001, 0xaaaaaaaa, 0x80000001, 0},
    503      {NoFlag, 0x80000001, 0xcccccccc, 0x80000001, 0},
    504      {NoFlag, 0x00007ffe, 0xffffffe0, 0x00007ffe, 0},
    505      {NoFlag, 0x00007ffe, 0xfffffffd, 0x00007ffe, 0},
    506      {NoFlag, 0x55555555, 0xaaaaaaaa, 0x55555555, 0},
    507      {NoFlag, 0xffffffe0, 0x00000001, 0xffffffe0, 0},
    508      {NoFlag, 0x0000007e, 0x00007fff, 0x0000007e, 0},
    509      {NoFlag, 0xfffffffe, 0xfffffffd, 0xfffffffe, 0},
    510      {NoFlag, 0x33333333, 0x0000007d, 0x33333333, 0},
    511      {NoFlag, 0xffffff81, 0x7fffffff, 0xffffff81, 0},
    512      {NoFlag, 0x0000007e, 0x0000007d, 0x0000007e, 0},
    513      {NoFlag, 0x00000001, 0xffffff81, 0x00000001, 0},
    514      {NoFlag, 0x80000000, 0x00000002, 0x80000000, 0},
    515      {NoFlag, 0x0000007d, 0xffff8003, 0x0000007d, 0},
    516      {NoFlag, 0x7ffffffe, 0x00007ffd, 0x7ffffffe, 0},
    517      {NoFlag, 0x7ffffffe, 0xaaaaaaaa, 0x7ffffffe, 0},
    518      {NoFlag, 0x00000000, 0xffff8000, 0x00000000, 0},
    519      {NoFlag, 0x33333333, 0x00000002, 0x33333333, 0},
    520      {NoFlag, 0xffffff81, 0xffffff83, 0xffffff81, 0},
    521      {NoFlag, 0x7ffffffe, 0x00007ffe, 0x7ffffffe, 0},
    522      {NoFlag, 0x80000000, 0x0000007d, 0x80000000, 0},
    523      {NoFlag, 0x00000020, 0x00000002, 0x00000020, 0},
    524      {NoFlag, 0x33333333, 0x80000001, 0x33333333, 0},
    525      {NoFlag, 0xffffff83, 0x00007ffd, 0xffffff83, 0},
    526      {NoFlag, 0x00007ffd, 0xffffff83, 0x00007ffd, 0},
    527      {NoFlag, 0xffff8001, 0x80000000, 0xffff8001, 0},
    528      {NoFlag, 0x00000000, 0x80000000, 0x00000000, 0},
    529      {NoFlag, 0xffffffe0, 0xffffffff, 0xffffffe0, 0},
    530      {NoFlag, 0x80000000, 0xffffff83, 0x80000000, 0},
    531      {NoFlag, 0x00000020, 0xffffff80, 0x00000020, 0},
    532      {NoFlag, 0x7ffffffd, 0xffff8001, 0x7ffffffd, 0},
    533      {NoFlag, 0x80000001, 0xffff8003, 0x80000001, 0},
    534      {NoFlag, 0x00007ffe, 0x7fffffff, 0x00007ffe, 0},
    535      {NoFlag, 0x7fffffff, 0x00000002, 0x7fffffff, 0},
    536      {NoFlag, 0xffffff83, 0xffff8003, 0xffffff83, 0},
    537      {NoFlag, 0xaaaaaaaa, 0xcccccccc, 0xaaaaaaaa, 0},
    538      {NoFlag, 0x0000007f, 0xffffff80, 0x0000007f, 0},
    539      {NoFlag, 0x80000001, 0x00007ffd, 0x80000001, 0},
    540      {NoFlag, 0xffff8000, 0x80000001, 0xffff8000, 0},
    541      {NoFlag, 0x00007fff, 0x00007ffd, 0x00007fff, 0},
    542      {NoFlag, 0x0000007e, 0x0000007f, 0x0000007e, 0},
    543      {NoFlag, 0x00000002, 0x0000007d, 0x00000002, 0},
    544      {NoFlag, 0x80000001, 0x7fffffff, 0x80000001, 0},
    545      {NoFlag, 0x0000007e, 0xffffff81, 0x0000007e, 0},
    546      {NoFlag, 0x7ffffffe, 0xffff8001, 0x7ffffffe, 0},
    547      {NoFlag, 0x7fffffff, 0x80000001, 0x7fffffff, 0},
    548      {NoFlag, 0x7ffffffd, 0x0000007f, 0x7ffffffd, 0},
    549      {NoFlag, 0xffffff81, 0xffffff81, 0xffffff81, 0},
    550      {NoFlag, 0x00000001, 0xfffffffd, 0x00000001, 0},
    551      {NoFlag, 0x00000001, 0xffffffff, 0x00000001, 0},
    552      {NoFlag, 0x7ffffffd, 0x55555555, 0x7ffffffd, 0},
    553      {NoFlag, 0x55555555, 0x0000007f, 0x55555555, 0},
    554      {NoFlag, 0x55555555, 0xffff8003, 0x55555555, 0},
    555      {NoFlag, 0xaaaaaaaa, 0x00007ffd, 0xaaaaaaaa, 0},
    556      {NoFlag, 0x0000007e, 0x33333333, 0x0000007e, 0},
    557      {NoFlag, 0xfffffffe, 0x80000001, 0xfffffffe, 0},
    558      {NoFlag, 0xfffffffe, 0xffff8000, 0xfffffffe, 0},
    559      {NoFlag, 0xffffffe0, 0xffffff81, 0xffffffe0, 0},
    560      {NoFlag, 0x7fffffff, 0x0000007f, 0x7fffffff, 0},
    561      {NoFlag, 0xffff8003, 0x0000007f, 0xffff8003, 0},
    562      {NoFlag, 0xffffff82, 0x00007ffd, 0xffffff82, 0},
    563      {NoFlag, 0x33333333, 0xffffffff, 0x33333333, 0},
    564      {NoFlag, 0xffffffe0, 0xcccccccc, 0xffffffe0, 0},
    565      {NoFlag, 0xffffff83, 0x7ffffffd, 0xffffff83, 0},
    566      {NoFlag, 0x0000007e, 0xcccccccc, 0x0000007e, 0},
    567      {NoFlag, 0x00000002, 0xfffffffd, 0x00000002, 0},
    568      {NoFlag, 0x00007fff, 0xcccccccc, 0x00007fff, 0},
    569      {NoFlag, 0x7fffffff, 0x00007fff, 0x7fffffff, 0},
    570      {NoFlag, 0xffffffe0, 0x33333333, 0xffffffe0, 0},
    571      {NoFlag, 0x0000007f, 0x0000007d, 0x0000007f, 0},
    572      {NoFlag, 0x0000007f, 0xffffffe0, 0x0000007f, 0},
    573      {NoFlag, 0x00007fff, 0xffff8000, 0x00007fff, 0},
    574      {NoFlag, 0x7fffffff, 0xffffffff, 0x7fffffff, 0},
    575      {NoFlag, 0xffff8000, 0x7ffffffd, 0xffff8000, 0},
    576      {NoFlag, 0xcccccccc, 0x0000007e, 0xcccccccc, 0},
    577      {NoFlag, 0x33333333, 0xffff8003, 0x33333333, 0},
    578      {NoFlag, 0x55555555, 0x00000002, 0x55555555, 0},
    579      {NoFlag, 0x00000001, 0x00000001, 0x00000001, 0},
    580      {NoFlag, 0xaaaaaaaa, 0x33333333, 0xaaaaaaaa, 0},
    581      {NoFlag, 0x7ffffffd, 0x00000001, 0x7ffffffd, 0},
    582      {NoFlag, 0xffffff82, 0xffff8000, 0xffffff82, 0},
    583      {NoFlag, 0x0000007d, 0x55555555, 0x0000007d, 0},
    584      {NoFlag, 0xffff8000, 0x7ffffffe, 0xffff8000, 0},
    585      {NoFlag, 0x7fffffff, 0xffffffe0, 0x7fffffff, 0},
    586      {NoFlag, 0x7fffffff, 0xffff8003, 0x7fffffff, 0},
    587      {NoFlag, 0xffffff82, 0xaaaaaaaa, 0xffffff82, 0},
    588      {NoFlag, 0xfffffffd, 0xffffff80, 0xfffffffd, 0},
    589      {NoFlag, 0x7ffffffd, 0x80000001, 0x7ffffffd, 0},
    590      {NoFlag, 0x00000000, 0x00007ffd, 0x00000000, 0},
    591      {NoFlag, 0xffffffff, 0xffffff80, 0xffffffff, 0},
    592      {NoFlag, 0xffffff80, 0xcccccccc, 0xffffff80, 0},
    593      {NoFlag, 0x00007ffe, 0x55555555, 0x00007ffe, 0},
    594      {NoFlag, 0xffff8000, 0xffff8000, 0xffff8000, 0},
    595      {NoFlag, 0xffffffff, 0xffff8000, 0xffffffff, 0},
    596      {NoFlag, 0x80000001, 0x0000007d, 0x80000001, 0},
    597      {NoFlag, 0xffffffe0, 0xffff8002, 0xffffffe0, 0},
    598      {NoFlag, 0xfffffffe, 0xffffffe0, 0xfffffffe, 0},
    599      {NoFlag, 0x80000000, 0xffff8003, 0x80000000, 0},
    600      {NoFlag, 0x80000001, 0xffffff81, 0x80000001, 0},
    601      {NoFlag, 0xffffffe0, 0x00007ffe, 0xffffffe0, 0}};
    602 
    603 static const Inputs kRdIsNotRnIsNotRm[] =
    604     {{NoFlag, 0x0000007e, 0x0000007e, 0x0000007d, 0},
    605      {NoFlag, 0x55555555, 0x00000002, 0xffff8002, 0},
    606      {NoFlag, 0xffffffe0, 0x80000001, 0x00000000, 0},
    607      {NoFlag, 0x55555555, 0xffffff83, 0x00000002, 0},
    608      {NoFlag, 0xffffffe0, 0xffffffe0, 0x00000002, 0},
    609      {NoFlag, 0x00000000, 0x80000001, 0xffffff82, 0},
    610      {NoFlag, 0x80000001, 0x00007fff, 0x0000007f, 0},
    611      {NoFlag, 0xffffff80, 0x0000007d, 0x7ffffffe, 0},
    612      {NoFlag, 0xaaaaaaaa, 0x00000020, 0xffff8002, 0},
    613      {NoFlag, 0x33333333, 0x55555555, 0x00000001, 0},
    614      {NoFlag, 0x7ffffffe, 0x33333333, 0x00000000, 0},
    615      {NoFlag, 0x80000000, 0x7ffffffd, 0x55555555, 0},
    616      {NoFlag, 0xcccccccc, 0xffff8001, 0x7ffffffe, 0},
    617      {NoFlag, 0x00000020, 0xffffff83, 0xffff8003, 0},
    618      {NoFlag, 0x00007fff, 0xffffffe0, 0xffffff81, 0},
    619      {NoFlag, 0xffff8000, 0xffff8001, 0x0000007e, 0},
    620      {NoFlag, 0x33333333, 0x0000007e, 0x00000020, 0},
    621      {NoFlag, 0x0000007f, 0xfffffffd, 0xaaaaaaaa, 0},
    622      {NoFlag, 0xffffff83, 0xffffff82, 0x7ffffffd, 0},
    623      {NoFlag, 0x0000007e, 0xcccccccc, 0x7fffffff, 0},
    624      {NoFlag, 0xffff8001, 0x80000001, 0xffffffff, 0},
    625      {NoFlag, 0xffffff81, 0x00000020, 0x7ffffffe, 0},
    626      {NoFlag, 0xffffff83, 0xffffff81, 0xffffffe0, 0},
    627      {NoFlag, 0xffffffe0, 0xffffff81, 0xfffffffd, 0},
    628      {NoFlag, 0x80000001, 0xffffffff, 0xffffffff, 0},
    629      {NoFlag, 0x7ffffffe, 0xffff8000, 0xcccccccc, 0},
    630      {NoFlag, 0xffffff80, 0x00007ffe, 0xffffff82, 0},
    631      {NoFlag, 0x0000007e, 0x0000007d, 0xffff8003, 0},
    632      {NoFlag, 0xffff8002, 0xffffff81, 0x0000007e, 0},
    633      {NoFlag, 0x00007fff, 0x7ffffffd, 0xfffffffe, 0},
    634      {NoFlag, 0x00007ffe, 0x80000001, 0xffffff81, 0},
    635      {NoFlag, 0xffffff81, 0x00007ffd, 0xfffffffd, 0},
    636      {NoFlag, 0x00000020, 0x7fffffff, 0xffff8003, 0},
    637      {NoFlag, 0x0000007e, 0x0000007d, 0x33333333, 0},
    638      {NoFlag, 0xcccccccc, 0xffff8000, 0x00007ffe, 0},
    639      {NoFlag, 0x00007fff, 0xffff8000, 0x00000020, 0},
    640      {NoFlag, 0x00007ffd, 0x00007fff, 0xffffffe0, 0},
    641      {NoFlag, 0x7ffffffd, 0x00000000, 0x00007ffe, 0},
    642      {NoFlag, 0xffffff82, 0x33333333, 0x00000001, 0},
    643      {NoFlag, 0x7ffffffe, 0xffffff80, 0x00000020, 0},
    644      {NoFlag, 0x00007fff, 0xffffff83, 0x00007ffd, 0},
    645      {NoFlag, 0xffff8001, 0xffffffff, 0x80000001, 0},
    646      {NoFlag, 0x00000002, 0xffffff81, 0xcccccccc, 0},
    647      {NoFlag, 0x55555555, 0x0000007f, 0xffff8001, 0},
    648      {NoFlag, 0x80000000, 0x00000020, 0x80000000, 0},
    649      {NoFlag, 0xffffff83, 0x00007fff, 0xffffff80, 0},
    650      {NoFlag, 0x33333333, 0x7ffffffe, 0x7ffffffd, 0},
    651      {NoFlag, 0xffffff80, 0xffffffff, 0x00000001, 0},
    652      {NoFlag, 0x00007ffd, 0x7ffffffd, 0xffffff83, 0},
    653      {NoFlag, 0x33333333, 0xffff8001, 0xffffffe0, 0},
    654      {NoFlag, 0xffff8001, 0xffffff80, 0x00007ffd, 0},
    655      {NoFlag, 0xffffffe0, 0x00007fff, 0x00007ffe, 0},
    656      {NoFlag, 0x0000007d, 0x00000000, 0xffff8000, 0},
    657      {NoFlag, 0x7ffffffe, 0xaaaaaaaa, 0x7ffffffe, 0},
    658      {NoFlag, 0x0000007e, 0x00007ffd, 0xffffffe0, 0},
    659      {NoFlag, 0xfffffffd, 0xffffffe0, 0xffffff83, 0},
    660      {NoFlag, 0x00000001, 0xffffffe0, 0x7ffffffd, 0},
    661      {NoFlag, 0xfffffffd, 0xffff8002, 0x80000000, 0},
    662      {NoFlag, 0x00000020, 0xffffffff, 0x80000000, 0},
    663      {NoFlag, 0x00000001, 0x80000001, 0xffff8003, 0},
    664      {NoFlag, 0xffff8003, 0xaaaaaaaa, 0xffffff81, 0},
    665      {NoFlag, 0x0000007f, 0xfffffffd, 0xffffffe0, 0},
    666      {NoFlag, 0x00007ffe, 0xffffff80, 0x00007ffe, 0},
    667      {NoFlag, 0xffff8002, 0xffff8003, 0xffffffff, 0},
    668      {NoFlag, 0x7ffffffe, 0xffffff82, 0xffff8000, 0},
    669      {NoFlag, 0xffff8000, 0x00000002, 0x80000000, 0},
    670      {NoFlag, 0xffffff80, 0xffffff82, 0xffffff81, 0},
    671      {NoFlag, 0x00000000, 0xcccccccc, 0x00007ffd, 0},
    672      {NoFlag, 0x55555555, 0x00007ffe, 0x7fffffff, 0},
    673      {NoFlag, 0x00000002, 0xffffff81, 0xaaaaaaaa, 0},
    674      {NoFlag, 0x00007ffd, 0x0000007e, 0x00000002, 0},
    675      {NoFlag, 0xffffff83, 0x0000007e, 0xffffff80, 0},
    676      {NoFlag, 0xcccccccc, 0x00007ffe, 0xaaaaaaaa, 0},
    677      {NoFlag, 0x7ffffffe, 0x55555555, 0xffff8003, 0},
    678      {NoFlag, 0xfffffffd, 0x00000001, 0xffffff80, 0},
    679      {NoFlag, 0x00007ffd, 0x55555555, 0x80000001, 0},
    680      {NoFlag, 0x0000007f, 0x00000000, 0x0000007e, 0},
    681      {NoFlag, 0x7fffffff, 0xaaaaaaaa, 0x00000000, 0},
    682      {NoFlag, 0x7ffffffd, 0xffffff81, 0xcccccccc, 0},
    683      {NoFlag, 0xffffffe0, 0xcccccccc, 0xfffffffd, 0},
    684      {NoFlag, 0x00000002, 0xffff8000, 0x7ffffffd, 0},
    685      {NoFlag, 0xffffffe0, 0xffff8000, 0x80000001, 0},
    686      {NoFlag, 0x7ffffffd, 0xffff8003, 0xffff8001, 0},
    687      {NoFlag, 0x33333333, 0x00007ffd, 0x80000000, 0},
    688      {NoFlag, 0x7ffffffd, 0x00007fff, 0xcccccccc, 0},
    689      {NoFlag, 0xffffffff, 0xffffff80, 0x00007ffe, 0},
    690      {NoFlag, 0xffffff83, 0x7ffffffd, 0xaaaaaaaa, 0},
    691      {NoFlag, 0xfffffffd, 0xffff8003, 0x0000007f, 0},
    692      {NoFlag, 0xfffffffe, 0xfffffffe, 0xfffffffd, 0},
    693      {NoFlag, 0x00007fff, 0xfffffffe, 0x55555555, 0},
    694      {NoFlag, 0x7ffffffd, 0xfffffffe, 0xfffffffe, 0},
    695      {NoFlag, 0xfffffffe, 0xffffffff, 0x00007fff, 0},
    696      {NoFlag, 0x7ffffffd, 0x0000007e, 0x00007ffd, 0},
    697      {NoFlag, 0x7ffffffd, 0xffffffe0, 0x00000002, 0},
    698      {NoFlag, 0xffffffff, 0x00007ffd, 0xffffff81, 0},
    699      {NoFlag, 0xffff8001, 0x00000020, 0xfffffffd, 0},
    700      {NoFlag, 0x00007fff, 0x0000007d, 0xffffff83, 0},
    701      {NoFlag, 0x00000002, 0x55555555, 0x7ffffffe, 0},
    702      {NoFlag, 0x00007fff, 0x00007ffe, 0x00000002, 0},
    703      {NoFlag, 0x80000001, 0x7fffffff, 0x00007ffd, 0},
    704      {NoFlag, 0x0000007f, 0xffffffff, 0x00000001, 0},
    705      {NoFlag, 0xffff8001, 0x33333333, 0xffffff83, 0},
    706      {NoFlag, 0x00007fff, 0xcccccccc, 0x33333333, 0},
    707      {NoFlag, 0x33333333, 0xffffff80, 0x00000001, 0},
    708      {NoFlag, 0x00007fff, 0xcccccccc, 0x00007ffd, 0},
    709      {NoFlag, 0xffff8002, 0xfffffffd, 0x7ffffffe, 0},
    710      {NoFlag, 0x00007ffe, 0x7ffffffe, 0xffffff83, 0},
    711      {NoFlag, 0xffffffe0, 0x0000007f, 0xffff8001, 0},
    712      {NoFlag, 0x80000000, 0x00007fff, 0xffffff80, 0},
    713      {NoFlag, 0x7fffffff, 0x00007fff, 0x7ffffffe, 0},
    714      {NoFlag, 0xffff8002, 0x55555555, 0xffff8001, 0},
    715      {NoFlag, 0xffffff80, 0x00000000, 0xffffff80, 0},
    716      {NoFlag, 0x00007ffd, 0x00007fff, 0x00000002, 0},
    717      {NoFlag, 0x00000000, 0x55555555, 0xffff8003, 0},
    718      {NoFlag, 0x0000007f, 0xffff8003, 0x00000020, 0},
    719      {NoFlag, 0x00000000, 0xffff8002, 0x7fffffff, 0},
    720      {NoFlag, 0x00007fff, 0x55555555, 0x00000000, 0},
    721      {NoFlag, 0x7fffffff, 0x00007ffe, 0xffffff81, 0},
    722      {NoFlag, 0x0000007e, 0x80000001, 0x00007ffe, 0},
    723      {NoFlag, 0x7ffffffd, 0xaaaaaaaa, 0x00000020, 0},
    724      {NoFlag, 0xfffffffd, 0xfffffffe, 0x00000002, 0},
    725      {NoFlag, 0xffffff80, 0xffff8000, 0xffff8002, 0},
    726      {NoFlag, 0x0000007d, 0x00007fff, 0xaaaaaaaa, 0},
    727      {NoFlag, 0xfffffffd, 0xffffff80, 0x00007ffd, 0},
    728      {NoFlag, 0xffffff82, 0x80000000, 0xffffff80, 0},
    729      {NoFlag, 0xffffffe0, 0x55555555, 0xfffffffd, 0},
    730      {NoFlag, 0xffffffff, 0xffffffff, 0x00007ffd, 0},
    731      {NoFlag, 0x0000007e, 0xfffffffe, 0xffffff80, 0},
    732      {NoFlag, 0xffff8000, 0xffffff82, 0xffff8002, 0},
    733      {NoFlag, 0xaaaaaaaa, 0x7ffffffe, 0xffff8000, 0},
    734      {NoFlag, 0x55555555, 0xffff8003, 0xffffff80, 0},
    735      {NoFlag, 0x7ffffffe, 0x00000020, 0xffffffe0, 0},
    736      {NoFlag, 0x00000001, 0xffff8001, 0xffffffe0, 0},
    737      {NoFlag, 0xcccccccc, 0xffff8000, 0xffff8002, 0},
    738      {NoFlag, 0x80000000, 0x00000002, 0x7ffffffe, 0},
    739      {NoFlag, 0x00000002, 0x0000007f, 0xffffff81, 0},
    740      {NoFlag, 0xffffffff, 0x00000001, 0x7fffffff, 0},
    741      {NoFlag, 0xffffff83, 0x00000000, 0x33333333, 0},
    742      {NoFlag, 0xffff8000, 0xffffff83, 0xcccccccc, 0},
    743      {NoFlag, 0x80000000, 0x00000020, 0x00007ffd, 0},
    744      {NoFlag, 0xffffff81, 0xcccccccc, 0x00000000, 0},
    745      {NoFlag, 0xffffffff, 0xffff8000, 0x00007fff, 0},
    746      {NoFlag, 0xffff8003, 0xcccccccc, 0x00007ffe, 0},
    747      {NoFlag, 0xffffffff, 0xfffffffd, 0x7ffffffe, 0},
    748      {NoFlag, 0xffff8003, 0xaaaaaaaa, 0x55555555, 0},
    749      {NoFlag, 0x00000000, 0xaaaaaaaa, 0xffffff81, 0},
    750      {NoFlag, 0x0000007f, 0xfffffffe, 0xffff8000, 0},
    751      {NoFlag, 0x00000001, 0xffffffe0, 0xfffffffd, 0},
    752      {NoFlag, 0x33333333, 0x33333333, 0xfffffffd, 0},
    753      {NoFlag, 0xffffff82, 0xffff8002, 0x80000001, 0},
    754      {NoFlag, 0x55555555, 0xffffff83, 0xffffff83, 0},
    755      {NoFlag, 0xffffff83, 0xffff8002, 0x00000020, 0},
    756      {NoFlag, 0x0000007d, 0x7fffffff, 0x0000007f, 0},
    757      {NoFlag, 0x00000000, 0xcccccccc, 0xffff8000, 0},
    758      {NoFlag, 0x00000002, 0x7ffffffe, 0x00007fff, 0},
    759      {NoFlag, 0xffffff82, 0x7ffffffd, 0x7ffffffd, 0},
    760      {NoFlag, 0xaaaaaaaa, 0xfffffffd, 0xffff8002, 0},
    761      {NoFlag, 0xfffffffd, 0x00000002, 0x7fffffff, 0},
    762      {NoFlag, 0xfffffffe, 0xfffffffe, 0x00000020, 0},
    763      {NoFlag, 0x80000001, 0x0000007e, 0x00007ffe, 0},
    764      {NoFlag, 0x00007ffd, 0x00007ffd, 0xfffffffd, 0},
    765      {NoFlag, 0xffff8000, 0x0000007f, 0x00000002, 0},
    766      {NoFlag, 0x7ffffffd, 0x80000000, 0x7ffffffd, 0},
    767      {NoFlag, 0x0000007d, 0x00007fff, 0x80000001, 0},
    768      {NoFlag, 0xffffffff, 0x80000000, 0xaaaaaaaa, 0},
    769      {NoFlag, 0x00000000, 0xaaaaaaaa, 0xffff8001, 0},
    770      {NoFlag, 0xaaaaaaaa, 0xffffffe0, 0xffff8003, 0},
    771      {NoFlag, 0xffffff82, 0xffffffff, 0x00007ffd, 0},
    772      {NoFlag, 0x00000001, 0xffffff81, 0x00000001, 0},
    773      {NoFlag, 0x7fffffff, 0xaaaaaaaa, 0x80000001, 0},
    774      {NoFlag, 0x7fffffff, 0xffff8000, 0xffff8000, 0},
    775      {NoFlag, 0xaaaaaaaa, 0x00007ffd, 0xaaaaaaaa, 0},
    776      {NoFlag, 0x0000007f, 0x7ffffffe, 0x80000000, 0},
    777      {NoFlag, 0x00007ffd, 0x00007ffe, 0xffffff81, 0},
    778      {NoFlag, 0x0000007d, 0x0000007d, 0xffff8002, 0},
    779      {NoFlag, 0x80000001, 0x00000002, 0xffffff81, 0},
    780      {NoFlag, 0xffff8000, 0xfffffffd, 0x7ffffffd, 0},
    781      {NoFlag, 0xfffffffe, 0x00000020, 0xffffff80, 0},
    782      {NoFlag, 0x00000020, 0x7fffffff, 0xffffffe0, 0},
    783      {NoFlag, 0xffff8002, 0xffff8002, 0x0000007f, 0},
    784      {NoFlag, 0xffff8003, 0x7fffffff, 0xffff8002, 0},
    785      {NoFlag, 0x00000020, 0xfffffffd, 0x00000020, 0},
    786      {NoFlag, 0x7ffffffd, 0xffffffe0, 0x0000007e, 0},
    787      {NoFlag, 0x00000020, 0x00000020, 0x7ffffffe, 0},
    788      {NoFlag, 0xfffffffe, 0x0000007f, 0xffff8000, 0},
    789      {NoFlag, 0x80000001, 0x80000001, 0x0000007d, 0},
    790      {NoFlag, 0x55555555, 0x0000007f, 0x00007ffd, 0},
    791      {NoFlag, 0x55555555, 0xffffffe0, 0xffffff82, 0},
    792      {NoFlag, 0xffff8001, 0x0000007e, 0xffff8002, 0},
    793      {NoFlag, 0xffffffe0, 0x55555555, 0x0000007f, 0},
    794      {NoFlag, 0xffff8000, 0x7fffffff, 0x7ffffffe, 0},
    795      {NoFlag, 0xffffffff, 0xfffffffe, 0xffffff80, 0},
    796      {NoFlag, 0xffff8001, 0xffff8002, 0x33333333, 0},
    797      {NoFlag, 0x7ffffffd, 0xfffffffd, 0xaaaaaaaa, 0},
    798      {NoFlag, 0xaaaaaaaa, 0xfffffffd, 0x00000020, 0},
    799      {NoFlag, 0x0000007f, 0x00007ffe, 0x55555555, 0},
    800      {NoFlag, 0x00000020, 0x00000020, 0x00000002, 0},
    801      {NoFlag, 0x80000001, 0xffff8002, 0xfffffffe, 0},
    802      {NoFlag, 0x7fffffff, 0x80000001, 0xffff8002, 0},
    803      {NoFlag, 0x00000020, 0x0000007e, 0x33333333, 0}};
    804 
    805 static const Inputs kShiftTypes[] =
    806     {{NoFlag, 0xabababab, 0xabababab, 0x00000000, 0},
    807      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 1},
    808      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 2},
    809      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 3},
    810      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 4},
    811      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 5},
    812      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 6},
    813      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 7},
    814      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 8},
    815      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 9},
    816      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 10},
    817      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 11},
    818      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 12},
    819      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 13},
    820      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 14},
    821      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 15},
    822      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 16},
    823      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 17},
    824      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 18},
    825      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 19},
    826      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 20},
    827      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 21},
    828      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 22},
    829      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 23},
    830      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 24},
    831      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 25},
    832      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 26},
    833      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 27},
    834      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 28},
    835      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 29},
    836      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 30},
    837      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 31},
    838      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 32},
    839      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 0},
    840      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 1},
    841      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 2},
    842      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 3},
    843      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 4},
    844      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 5},
    845      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 6},
    846      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 7},
    847      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 8},
    848      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 9},
    849      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 10},
    850      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 11},
    851      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 12},
    852      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 13},
    853      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 14},
    854      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 15},
    855      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 16},
    856      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 17},
    857      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 18},
    858      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 19},
    859      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 20},
    860      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 21},
    861      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 22},
    862      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 23},
    863      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 24},
    864      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 25},
    865      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 26},
    866      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 27},
    867      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 28},
    868      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 29},
    869      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 30},
    870      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 31},
    871      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 32},
    872      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 0},
    873      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 1},
    874      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 2},
    875      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 3},
    876      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 4},
    877      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 5},
    878      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 6},
    879      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 7},
    880      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 8},
    881      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 9},
    882      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 10},
    883      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 11},
    884      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 12},
    885      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 13},
    886      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 14},
    887      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 15},
    888      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 16},
    889      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 17},
    890      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 18},
    891      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 19},
    892      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 20},
    893      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 21},
    894      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 22},
    895      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 23},
    896      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 24},
    897      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 25},
    898      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 26},
    899      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 27},
    900      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 28},
    901      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 29},
    902      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 30},
    903      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 31},
    904      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 32},
    905      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 0},
    906      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 1},
    907      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 2},
    908      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 3},
    909      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 4},
    910      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 5},
    911      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 6},
    912      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 7},
    913      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 8},
    914      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 9},
    915      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 10},
    916      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 11},
    917      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 12},
    918      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 13},
    919      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 14},
    920      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 15},
    921      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 16},
    922      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 17},
    923      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 18},
    924      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 19},
    925      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 20},
    926      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 21},
    927      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 22},
    928      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 23},
    929      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 24},
    930      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 25},
    931      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 26},
    932      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 27},
    933      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 28},
    934      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 29},
    935      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 30},
    936      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 31},
    937      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 32},
    938      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 0},
    939      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 1},
    940      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 2},
    941      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 3},
    942      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 4},
    943      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 5},
    944      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 6},
    945      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 7},
    946      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 8},
    947      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 9},
    948      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 10},
    949      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 11},
    950      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 12},
    951      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 13},
    952      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 14},
    953      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 15},
    954      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 16},
    955      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 17},
    956      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 18},
    957      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 19},
    958      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 20},
    959      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 21},
    960      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 22},
    961      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 23},
    962      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 24},
    963      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 25},
    964      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 26},
    965      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 27},
    966      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 28},
    967      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 29},
    968      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 30},
    969      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 31},
    970      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 32},
    971      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 0},
    972      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 1},
    973      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 2},
    974      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 3},
    975      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 4},
    976      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 5},
    977      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 6},
    978      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 7},
    979      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 8},
    980      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 9},
    981      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 10},
    982      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 11},
    983      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 12},
    984      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 13},
    985      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 14},
    986      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 15},
    987      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 16},
    988      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 17},
    989      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 18},
    990      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 19},
    991      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 20},
    992      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 21},
    993      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 22},
    994      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 23},
    995      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 24},
    996      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 25},
    997      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 26},
    998      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 27},
    999      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 28},
   1000      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 29},
   1001      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 30},
   1002      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 31},
   1003      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 32},
   1004      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 0},
   1005      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 1},
   1006      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 2},
   1007      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 3},
   1008      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 4},
   1009      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 5},
   1010      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 6},
   1011      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 7},
   1012      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 8},
   1013      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 9},
   1014      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 10},
   1015      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 11},
   1016      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 12},
   1017      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 13},
   1018      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 14},
   1019      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 15},
   1020      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 16},
   1021      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 17},
   1022      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 18},
   1023      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 19},
   1024      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 20},
   1025      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 21},
   1026      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 22},
   1027      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 23},
   1028      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 24},
   1029      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 25},
   1030      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 26},
   1031      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 27},
   1032      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 28},
   1033      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 29},
   1034      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 30},
   1035      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 31},
   1036      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 32},
   1037      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 0},
   1038      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 1},
   1039      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 2},
   1040      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 3},
   1041      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 4},
   1042      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 5},
   1043      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 6},
   1044      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 7},
   1045      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 8},
   1046      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 9},
   1047      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 10},
   1048      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 11},
   1049      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 12},
   1050      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 13},
   1051      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 14},
   1052      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 15},
   1053      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 16},
   1054      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 17},
   1055      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 18},
   1056      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 19},
   1057      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 20},
   1058      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 21},
   1059      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 22},
   1060      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 23},
   1061      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 24},
   1062      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 25},
   1063      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 26},
   1064      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 27},
   1065      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 28},
   1066      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 29},
   1067      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 30},
   1068      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 31},
   1069      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 32},
   1070      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 0},
   1071      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 1},
   1072      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 2},
   1073      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 3},
   1074      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 4},
   1075      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 5},
   1076      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 6},
   1077      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 7},
   1078      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 8},
   1079      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 9},
   1080      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 10},
   1081      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 11},
   1082      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 12},
   1083      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 13},
   1084      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 14},
   1085      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 15},
   1086      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 16},
   1087      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 17},
   1088      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 18},
   1089      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 19},
   1090      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 20},
   1091      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 21},
   1092      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 22},
   1093      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 23},
   1094      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 24},
   1095      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 25},
   1096      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 26},
   1097      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 27},
   1098      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 28},
   1099      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 29},
   1100      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 30},
   1101      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 31},
   1102      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 32},
   1103      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 0},
   1104      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 1},
   1105      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 2},
   1106      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 3},
   1107      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 4},
   1108      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 5},
   1109      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 6},
   1110      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 7},
   1111      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 8},
   1112      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 9},
   1113      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 10},
   1114      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 11},
   1115      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 12},
   1116      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 13},
   1117      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 14},
   1118      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 15},
   1119      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 16},
   1120      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 17},
   1121      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 18},
   1122      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 19},
   1123      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 20},
   1124      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 21},
   1125      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 22},
   1126      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 23},
   1127      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 24},
   1128      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 25},
   1129      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 26},
   1130      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 27},
   1131      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 28},
   1132      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 29},
   1133      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 30},
   1134      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 31},
   1135      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 32},
   1136      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 0},
   1137      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 1},
   1138      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 2},
   1139      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 3},
   1140      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 4},
   1141      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 5},
   1142      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 6},
   1143      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 7},
   1144      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 8},
   1145      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 9},
   1146      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 10},
   1147      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 11},
   1148      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 12},
   1149      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 13},
   1150      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 14},
   1151      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 15},
   1152      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 16},
   1153      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 17},
   1154      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 18},
   1155      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 19},
   1156      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 20},
   1157      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 21},
   1158      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 22},
   1159      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 23},
   1160      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 24},
   1161      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 25},
   1162      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 26},
   1163      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 27},
   1164      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 28},
   1165      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 29},
   1166      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 30},
   1167      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 31},
   1168      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 32},
   1169      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 0},
   1170      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 1},
   1171      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 2},
   1172      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 3},
   1173      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 4},
   1174      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 5},
   1175      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 6},
   1176      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 7},
   1177      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 8},
   1178      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 9},
   1179      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 10},
   1180      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 11},
   1181      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 12},
   1182      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 13},
   1183      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 14},
   1184      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 15},
   1185      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 16},
   1186      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 17},
   1187      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 18},
   1188      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 19},
   1189      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 20},
   1190      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 21},
   1191      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 22},
   1192      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 23},
   1193      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 24},
   1194      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 25},
   1195      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 26},
   1196      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 27},
   1197      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 28},
   1198      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 29},
   1199      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 30},
   1200      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 31},
   1201      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 32},
   1202      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 0},
   1203      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 1},
   1204      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 2},
   1205      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 3},
   1206      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 4},
   1207      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 5},
   1208      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 6},
   1209      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 7},
   1210      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 8},
   1211      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 9},
   1212      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 10},
   1213      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 11},
   1214      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 12},
   1215      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 13},
   1216      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 14},
   1217      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 15},
   1218      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 16},
   1219      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 17},
   1220      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 18},
   1221      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 19},
   1222      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 20},
   1223      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 21},
   1224      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 22},
   1225      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 23},
   1226      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 24},
   1227      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 25},
   1228      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 26},
   1229      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 27},
   1230      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 28},
   1231      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 29},
   1232      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 30},
   1233      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 31},
   1234      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 32},
   1235      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 0},
   1236      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 1},
   1237      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 2},
   1238      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 3},
   1239      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 4},
   1240      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 5},
   1241      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 6},
   1242      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 7},
   1243      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 8},
   1244      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 9},
   1245      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 10},
   1246      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 11},
   1247      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 12},
   1248      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 13},
   1249      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 14},
   1250      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 15},
   1251      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 16},
   1252      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 17},
   1253      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 18},
   1254      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 19},
   1255      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 20},
   1256      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 21},
   1257      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 22},
   1258      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 23},
   1259      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 24},
   1260      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 25},
   1261      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 26},
   1262      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 27},
   1263      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 28},
   1264      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 29},
   1265      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 30},
   1266      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 31},
   1267      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 32},
   1268      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 0},
   1269      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 1},
   1270      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 2},
   1271      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 3},
   1272      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 4},
   1273      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 5},
   1274      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 6},
   1275      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 7},
   1276      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 8},
   1277      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 9},
   1278      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 10},
   1279      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 11},
   1280      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 12},
   1281      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 13},
   1282      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 14},
   1283      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 15},
   1284      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 16},
   1285      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 17},
   1286      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 18},
   1287      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 19},
   1288      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 20},
   1289      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 21},
   1290      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 22},
   1291      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 23},
   1292      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 24},
   1293      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 25},
   1294      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 26},
   1295      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 27},
   1296      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 28},
   1297      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 29},
   1298      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 30},
   1299      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 31},
   1300      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 32},
   1301      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 0},
   1302      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 1},
   1303      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 2},
   1304      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 3},
   1305      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 4},
   1306      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 5},
   1307      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 6},
   1308      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 7},
   1309      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 8},
   1310      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 9},
   1311      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 10},
   1312      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 11},
   1313      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 12},
   1314      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 13},
   1315      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 14},
   1316      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 15},
   1317      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 16},
   1318      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 17},
   1319      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 18},
   1320      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 19},
   1321      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 20},
   1322      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 21},
   1323      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 22},
   1324      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 23},
   1325      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 24},
   1326      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 25},
   1327      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 26},
   1328      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 27},
   1329      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 28},
   1330      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 29},
   1331      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 30},
   1332      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 31},
   1333      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 32},
   1334      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 0},
   1335      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 1},
   1336      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 2},
   1337      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 3},
   1338      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 4},
   1339      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 5},
   1340      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 6},
   1341      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 7},
   1342      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 8},
   1343      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 9},
   1344      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 10},
   1345      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 11},
   1346      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 12},
   1347      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 13},
   1348      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 14},
   1349      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 15},
   1350      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 16},
   1351      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 17},
   1352      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 18},
   1353      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 19},
   1354      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 20},
   1355      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 21},
   1356      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 22},
   1357      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 23},
   1358      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 24},
   1359      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 25},
   1360      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 26},
   1361      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 27},
   1362      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 28},
   1363      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 29},
   1364      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 30},
   1365      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 31},
   1366      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 32},
   1367      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 0},
   1368      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 1},
   1369      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 2},
   1370      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 3},
   1371      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 4},
   1372      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 5},
   1373      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 6},
   1374      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 7},
   1375      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 8},
   1376      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 9},
   1377      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 10},
   1378      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 11},
   1379      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 12},
   1380      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 13},
   1381      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 14},
   1382      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 15},
   1383      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 16},
   1384      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 17},
   1385      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 18},
   1386      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 19},
   1387      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 20},
   1388      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 21},
   1389      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 22},
   1390      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 23},
   1391      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 24},
   1392      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 25},
   1393      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 26},
   1394      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 27},
   1395      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 28},
   1396      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 29},
   1397      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 30},
   1398      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 31},
   1399      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 32},
   1400      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 0},
   1401      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 1},
   1402      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 2},
   1403      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 3},
   1404      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 4},
   1405      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 5},
   1406      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 6},
   1407      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 7},
   1408      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 8},
   1409      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 9},
   1410      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 10},
   1411      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 11},
   1412      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 12},
   1413      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 13},
   1414      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 14},
   1415      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 15},
   1416      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 16},
   1417      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 17},
   1418      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 18},
   1419      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 19},
   1420      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 20},
   1421      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 21},
   1422      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 22},
   1423      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 23},
   1424      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 24},
   1425      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 25},
   1426      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 26},
   1427      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 27},
   1428      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 28},
   1429      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 29},
   1430      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 30},
   1431      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 31},
   1432      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 32},
   1433      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 0},
   1434      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 1},
   1435      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 2},
   1436      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 3},
   1437      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 4},
   1438      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 5},
   1439      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 6},
   1440      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 7},
   1441      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 8},
   1442      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 9},
   1443      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 10},
   1444      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 11},
   1445      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 12},
   1446      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 13},
   1447      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 14},
   1448      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 15},
   1449      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 16},
   1450      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 17},
   1451      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 18},
   1452      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 19},
   1453      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 20},
   1454      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 21},
   1455      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 22},
   1456      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 23},
   1457      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 24},
   1458      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 25},
   1459      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 26},
   1460      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 27},
   1461      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 28},
   1462      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 29},
   1463      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 30},
   1464      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 31},
   1465      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 32},
   1466      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 0},
   1467      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 1},
   1468      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 2},
   1469      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 3},
   1470      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 4},
   1471      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 5},
   1472      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 6},
   1473      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 7},
   1474      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 8},
   1475      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 9},
   1476      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 10},
   1477      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 11},
   1478      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 12},
   1479      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 13},
   1480      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 14},
   1481      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 15},
   1482      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 16},
   1483      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 17},
   1484      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 18},
   1485      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 19},
   1486      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 20},
   1487      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 21},
   1488      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 22},
   1489      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 23},
   1490      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 24},
   1491      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 25},
   1492      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 26},
   1493      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 27},
   1494      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 28},
   1495      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 29},
   1496      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 30},
   1497      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 31},
   1498      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 32},
   1499      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 0},
   1500      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 1},
   1501      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 2},
   1502      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 3},
   1503      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 4},
   1504      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 5},
   1505      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 6},
   1506      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 7},
   1507      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 8},
   1508      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 9},
   1509      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 10},
   1510      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 11},
   1511      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 12},
   1512      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 13},
   1513      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 14},
   1514      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 15},
   1515      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 16},
   1516      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 17},
   1517      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 18},
   1518      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 19},
   1519      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 20},
   1520      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 21},
   1521      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 22},
   1522      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 23},
   1523      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 24},
   1524      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 25},
   1525      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 26},
   1526      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 27},
   1527      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 28},
   1528      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 29},
   1529      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 30},
   1530      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 31},
   1531      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 32},
   1532      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 0},
   1533      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 1},
   1534      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 2},
   1535      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 3},
   1536      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 4},
   1537      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 5},
   1538      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 6},
   1539      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 7},
   1540      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 8},
   1541      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 9},
   1542      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 10},
   1543      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 11},
   1544      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 12},
   1545      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 13},
   1546      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 14},
   1547      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 15},
   1548      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 16},
   1549      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 17},
   1550      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 18},
   1551      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 19},
   1552      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 20},
   1553      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 21},
   1554      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 22},
   1555      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 23},
   1556      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 24},
   1557      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 25},
   1558      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 26},
   1559      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 27},
   1560      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 28},
   1561      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 29},
   1562      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 30},
   1563      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 31},
   1564      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 32},
   1565      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 0},
   1566      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 1},
   1567      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 2},
   1568      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 3},
   1569      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 4},
   1570      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 5},
   1571      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 6},
   1572      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 7},
   1573      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 8},
   1574      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 9},
   1575      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 10},
   1576      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 11},
   1577      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 12},
   1578      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 13},
   1579      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 14},
   1580      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 15},
   1581      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 16},
   1582      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 17},
   1583      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 18},
   1584      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 19},
   1585      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 20},
   1586      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 21},
   1587      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 22},
   1588      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 23},
   1589      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 24},
   1590      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 25},
   1591      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 26},
   1592      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 27},
   1593      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 28},
   1594      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 29},
   1595      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 30},
   1596      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 31},
   1597      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 32},
   1598      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 0},
   1599      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 1},
   1600      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 2},
   1601      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 3},
   1602      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 4},
   1603      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 5},
   1604      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 6},
   1605      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 7},
   1606      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 8},
   1607      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 9},
   1608      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 10},
   1609      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 11},
   1610      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 12},
   1611      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 13},
   1612      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 14},
   1613      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 15},
   1614      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 16},
   1615      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 17},
   1616      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 18},
   1617      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 19},
   1618      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 20},
   1619      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 21},
   1620      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 22},
   1621      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 23},
   1622      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 24},
   1623      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 25},
   1624      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 26},
   1625      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 27},
   1626      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 28},
   1627      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 29},
   1628      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 30},
   1629      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 31},
   1630      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 32},
   1631      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 0},
   1632      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 1},
   1633      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 2},
   1634      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 3},
   1635      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 4},
   1636      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 5},
   1637      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 6},
   1638      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 7},
   1639      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 8},
   1640      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 9},
   1641      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 10},
   1642      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 11},
   1643      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 12},
   1644      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 13},
   1645      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 14},
   1646      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 15},
   1647      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 16},
   1648      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 17},
   1649      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 18},
   1650      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 19},
   1651      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 20},
   1652      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 21},
   1653      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 22},
   1654      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 23},
   1655      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 24},
   1656      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 25},
   1657      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 26},
   1658      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 27},
   1659      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 28},
   1660      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 29},
   1661      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 30},
   1662      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 31},
   1663      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 32},
   1664      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 0},
   1665      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 1},
   1666      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 2},
   1667      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 3},
   1668      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 4},
   1669      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 5},
   1670      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 6},
   1671      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 7},
   1672      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 8},
   1673      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 9},
   1674      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 10},
   1675      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 11},
   1676      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 12},
   1677      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 13},
   1678      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 14},
   1679      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 15},
   1680      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 16},
   1681      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 17},
   1682      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 18},
   1683      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 19},
   1684      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 20},
   1685      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 21},
   1686      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 22},
   1687      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 23},
   1688      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 24},
   1689      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 25},
   1690      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 26},
   1691      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 27},
   1692      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 28},
   1693      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 29},
   1694      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 30},
   1695      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 31},
   1696      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 32},
   1697      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 0},
   1698      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 1},
   1699      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 2},
   1700      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 3},
   1701      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 4},
   1702      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 5},
   1703      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 6},
   1704      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 7},
   1705      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 8},
   1706      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 9},
   1707      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 10},
   1708      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 11},
   1709      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 12},
   1710      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 13},
   1711      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 14},
   1712      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 15},
   1713      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 16},
   1714      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 17},
   1715      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 18},
   1716      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 19},
   1717      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 20},
   1718      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 21},
   1719      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 22},
   1720      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 23},
   1721      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 24},
   1722      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 25},
   1723      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 26},
   1724      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 27},
   1725      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 28},
   1726      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 29},
   1727      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 30},
   1728      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 31},
   1729      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 32},
   1730      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 0},
   1731      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 1},
   1732      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 2},
   1733      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 3},
   1734      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 4},
   1735      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 5},
   1736      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 6},
   1737      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 7},
   1738      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 8},
   1739      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 9},
   1740      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 10},
   1741      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 11},
   1742      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 12},
   1743      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 13},
   1744      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 14},
   1745      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 15},
   1746      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 16},
   1747      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 17},
   1748      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 18},
   1749      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 19},
   1750      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 20},
   1751      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 21},
   1752      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 22},
   1753      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 23},
   1754      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 24},
   1755      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 25},
   1756      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 26},
   1757      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 27},
   1758      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 28},
   1759      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 29},
   1760      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 30},
   1761      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 31},
   1762      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 32},
   1763      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 0},
   1764      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 1},
   1765      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 2},
   1766      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 3},
   1767      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 4},
   1768      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 5},
   1769      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 6},
   1770      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 7},
   1771      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 8},
   1772      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 9},
   1773      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 10},
   1774      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 11},
   1775      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 12},
   1776      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 13},
   1777      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 14},
   1778      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 15},
   1779      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 16},
   1780      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 17},
   1781      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 18},
   1782      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 19},
   1783      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 20},
   1784      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 21},
   1785      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 22},
   1786      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 23},
   1787      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 24},
   1788      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 25},
   1789      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 26},
   1790      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 27},
   1791      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 28},
   1792      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 29},
   1793      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 30},
   1794      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 31},
   1795      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 32},
   1796      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 0},
   1797      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 1},
   1798      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 2},
   1799      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 3},
   1800      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 4},
   1801      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 5},
   1802      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 6},
   1803      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 7},
   1804      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 8},
   1805      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 9},
   1806      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 10},
   1807      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 11},
   1808      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 12},
   1809      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 13},
   1810      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 14},
   1811      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 15},
   1812      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 16},
   1813      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 17},
   1814      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 18},
   1815      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 19},
   1816      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 20},
   1817      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 21},
   1818      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 22},
   1819      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 23},
   1820      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 24},
   1821      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 25},
   1822      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 26},
   1823      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 27},
   1824      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 28},
   1825      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 29},
   1826      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 30},
   1827      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 31},
   1828      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 32}};
   1829 
   1830 
   1831 // A loop will be generated for each element of this array.
   1832 const TestLoopData kTests[] = {{{eq, r0, r0, r0, LSL, r0},
   1833                                 "eq r0 r0 r0 LSL r0",
   1834                                 "Condition_eq_r0_r0_r0_LSL_r0",
   1835                                 ARRAY_SIZE(kCondition),
   1836                                 kCondition},
   1837                                {{ne, r0, r0, r0, LSL, r0},
   1838                                 "ne r0 r0 r0 LSL r0",
   1839                                 "Condition_ne_r0_r0_r0_LSL_r0",
   1840                                 ARRAY_SIZE(kCondition),
   1841                                 kCondition},
   1842                                {{cs, r0, r0, r0, LSL, r0},
   1843                                 "cs r0 r0 r0 LSL r0",
   1844                                 "Condition_cs_r0_r0_r0_LSL_r0",
   1845                                 ARRAY_SIZE(kCondition),
   1846                                 kCondition},
   1847                                {{cc, r0, r0, r0, LSL, r0},
   1848                                 "cc r0 r0 r0 LSL r0",
   1849                                 "Condition_cc_r0_r0_r0_LSL_r0",
   1850                                 ARRAY_SIZE(kCondition),
   1851                                 kCondition},
   1852                                {{mi, r0, r0, r0, LSL, r0},
   1853                                 "mi r0 r0 r0 LSL r0",
   1854                                 "Condition_mi_r0_r0_r0_LSL_r0",
   1855                                 ARRAY_SIZE(kCondition),
   1856                                 kCondition},
   1857                                {{pl, r0, r0, r0, LSL, r0},
   1858                                 "pl r0 r0 r0 LSL r0",
   1859                                 "Condition_pl_r0_r0_r0_LSL_r0",
   1860                                 ARRAY_SIZE(kCondition),
   1861                                 kCondition},
   1862                                {{vs, r0, r0, r0, LSL, r0},
   1863                                 "vs r0 r0 r0 LSL r0",
   1864                                 "Condition_vs_r0_r0_r0_LSL_r0",
   1865                                 ARRAY_SIZE(kCondition),
   1866                                 kCondition},
   1867                                {{vc, r0, r0, r0, LSL, r0},
   1868                                 "vc r0 r0 r0 LSL r0",
   1869                                 "Condition_vc_r0_r0_r0_LSL_r0",
   1870                                 ARRAY_SIZE(kCondition),
   1871                                 kCondition},
   1872                                {{hi, r0, r0, r0, LSL, r0},
   1873                                 "hi r0 r0 r0 LSL r0",
   1874                                 "Condition_hi_r0_r0_r0_LSL_r0",
   1875                                 ARRAY_SIZE(kCondition),
   1876                                 kCondition},
   1877                                {{ls, r0, r0, r0, LSL, r0},
   1878                                 "ls r0 r0 r0 LSL r0",
   1879                                 "Condition_ls_r0_r0_r0_LSL_r0",
   1880                                 ARRAY_SIZE(kCondition),
   1881                                 kCondition},
   1882                                {{ge, r0, r0, r0, LSL, r0},
   1883                                 "ge r0 r0 r0 LSL r0",
   1884                                 "Condition_ge_r0_r0_r0_LSL_r0",
   1885                                 ARRAY_SIZE(kCondition),
   1886                                 kCondition},
   1887                                {{lt, r0, r0, r0, LSL, r0},
   1888                                 "lt r0 r0 r0 LSL r0",
   1889                                 "Condition_lt_r0_r0_r0_LSL_r0",
   1890                                 ARRAY_SIZE(kCondition),
   1891                                 kCondition},
   1892                                {{gt, r0, r0, r0, LSL, r0},
   1893                                 "gt r0 r0 r0 LSL r0",
   1894                                 "Condition_gt_r0_r0_r0_LSL_r0",
   1895                                 ARRAY_SIZE(kCondition),
   1896                                 kCondition},
   1897                                {{le, r0, r0, r0, LSL, r0},
   1898                                 "le r0 r0 r0 LSL r0",
   1899                                 "Condition_le_r0_r0_r0_LSL_r0",
   1900                                 ARRAY_SIZE(kCondition),
   1901                                 kCondition},
   1902                                {{al, r0, r0, r0, LSL, r0},
   1903                                 "al r0 r0 r0 LSL r0",
   1904                                 "Condition_al_r0_r0_r0_LSL_r0",
   1905                                 ARRAY_SIZE(kCondition),
   1906                                 kCondition},
   1907                                {{al, r3, r3, r4, LSL, r0},
   1908                                 "al r3 r3 r4 LSL r0",
   1909                                 "RdIsRn_al_r3_r3_r4_LSL_r0",
   1910                                 ARRAY_SIZE(kRdIsRn),
   1911                                 kRdIsRn},
   1912                                {{al, r2, r2, r12, LSL, r0},
   1913                                 "al r2 r2 r12 LSL r0",
   1914                                 "RdIsRn_al_r2_r2_r12_LSL_r0",
   1915                                 ARRAY_SIZE(kRdIsRn),
   1916                                 kRdIsRn},
   1917                                {{al, r8, r8, r5, LSL, r0},
   1918                                 "al r8 r8 r5 LSL r0",
   1919                                 "RdIsRn_al_r8_r8_r5_LSL_r0",
   1920                                 ARRAY_SIZE(kRdIsRn),
   1921                                 kRdIsRn},
   1922                                {{al, r14, r14, r0, LSL, r0},
   1923                                 "al r14 r14 r0 LSL r0",
   1924                                 "RdIsRn_al_r14_r14_r0_LSL_r0",
   1925                                 ARRAY_SIZE(kRdIsRn),
   1926                                 kRdIsRn},
   1927                                {{al, r11, r11, r10, LSL, r0},
   1928                                 "al r11 r11 r10 LSL r0",
   1929                                 "RdIsRn_al_r11_r11_r10_LSL_r0",
   1930                                 ARRAY_SIZE(kRdIsRn),
   1931                                 kRdIsRn},
   1932                                {{al, r12, r12, r10, LSL, r0},
   1933                                 "al r12 r12 r10 LSL r0",
   1934                                 "RdIsRn_al_r12_r12_r10_LSL_r0",
   1935                                 ARRAY_SIZE(kRdIsRn),
   1936                                 kRdIsRn},
   1937                                {{al, r4, r4, r8, LSL, r0},
   1938                                 "al r4 r4 r8 LSL r0",
   1939                                 "RdIsRn_al_r4_r4_r8_LSL_r0",
   1940                                 ARRAY_SIZE(kRdIsRn),
   1941                                 kRdIsRn},
   1942                                {{al, r5, r5, r14, LSL, r0},
   1943                                 "al r5 r5 r14 LSL r0",
   1944                                 "RdIsRn_al_r5_r5_r14_LSL_r0",
   1945                                 ARRAY_SIZE(kRdIsRn),
   1946                                 kRdIsRn},
   1947                                {{al, r0, r0, r6, LSL, r0},
   1948                                 "al r0 r0 r6 LSL r0",
   1949                                 "RdIsRn_al_r0_r0_r6_LSL_r0",
   1950                                 ARRAY_SIZE(kRdIsRn),
   1951                                 kRdIsRn},
   1952                                {{al, r12, r12, r1, LSL, r0},
   1953                                 "al r12 r12 r1 LSL r0",
   1954                                 "RdIsRn_al_r12_r12_r1_LSL_r0",
   1955                                 ARRAY_SIZE(kRdIsRn),
   1956                                 kRdIsRn},
   1957                                {{al, r6, r11, r6, LSL, r0},
   1958                                 "al r6 r11 r6 LSL r0",
   1959                                 "RdIsRm_al_r6_r11_r6_LSL_r0",
   1960                                 ARRAY_SIZE(kRdIsRm),
   1961                                 kRdIsRm},
   1962                                {{al, r11, r9, r11, LSL, r0},
   1963                                 "al r11 r9 r11 LSL r0",
   1964                                 "RdIsRm_al_r11_r9_r11_LSL_r0",
   1965                                 ARRAY_SIZE(kRdIsRm),
   1966                                 kRdIsRm},
   1967                                {{al, r0, r8, r0, LSL, r0},
   1968                                 "al r0 r8 r0 LSL r0",
   1969                                 "RdIsRm_al_r0_r8_r0_LSL_r0",
   1970                                 ARRAY_SIZE(kRdIsRm),
   1971                                 kRdIsRm},
   1972                                {{al, r2, r11, r2, LSL, r0},
   1973                                 "al r2 r11 r2 LSL r0",
   1974                                 "RdIsRm_al_r2_r11_r2_LSL_r0",
   1975                                 ARRAY_SIZE(kRdIsRm),
   1976                                 kRdIsRm},
   1977                                {{al, r9, r4, r9, LSL, r0},
   1978                                 "al r9 r4 r9 LSL r0",
   1979                                 "RdIsRm_al_r9_r4_r9_LSL_r0",
   1980                                 ARRAY_SIZE(kRdIsRm),
   1981                                 kRdIsRm},
   1982                                {{al, r14, r10, r14, LSL, r0},
   1983                                 "al r14 r10 r14 LSL r0",
   1984                                 "RdIsRm_al_r14_r10_r14_LSL_r0",
   1985                                 ARRAY_SIZE(kRdIsRm),
   1986                                 kRdIsRm},
   1987                                {{al, r7, r0, r7, LSL, r0},
   1988                                 "al r7 r0 r7 LSL r0",
   1989                                 "RdIsRm_al_r7_r0_r7_LSL_r0",
   1990                                 ARRAY_SIZE(kRdIsRm),
   1991                                 kRdIsRm},
   1992                                {{al, r4, r9, r4, LSL, r0},
   1993                                 "al r4 r9 r4 LSL r0",
   1994                                 "RdIsRm_al_r4_r9_r4_LSL_r0",
   1995                                 ARRAY_SIZE(kRdIsRm),
   1996                                 kRdIsRm},
   1997                                {{al, r6, r10, r6, LSL, r0},
   1998                                 "al r6 r10 r6 LSL r0",
   1999                                 "RdIsRm_al_r6_r10_r6_LSL_r0",
   2000                                 ARRAY_SIZE(kRdIsRm),
   2001                                 kRdIsRm},
   2002                                {{al, r7, r6, r7, LSL, r0},
   2003                                 "al r7 r6 r7 LSL r0",
   2004                                 "RdIsRm_al_r7_r6_r7_LSL_r0",
   2005                                 ARRAY_SIZE(kRdIsRm),
   2006                                 kRdIsRm},
   2007                                {{al, r3, r9, r10, LSL, r0},
   2008                                 "al r3 r9 r10 LSL r0",
   2009                                 "RdIsNotRnIsNotRm_al_r3_r9_r10_LSL_r0",
   2010                                 ARRAY_SIZE(kRdIsNotRnIsNotRm),
   2011                                 kRdIsNotRnIsNotRm},
   2012                                {{al, r7, r12, r5, LSL, r0},
   2013                                 "al r7 r12 r5 LSL r0",
   2014                                 "RdIsNotRnIsNotRm_al_r7_r12_r5_LSL_r0",
   2015                                 ARRAY_SIZE(kRdIsNotRnIsNotRm),
   2016                                 kRdIsNotRnIsNotRm},
   2017                                {{al, r8, r5, r6, LSL, r0},
   2018                                 "al r8 r5 r6 LSL r0",
   2019                                 "RdIsNotRnIsNotRm_al_r8_r5_r6_LSL_r0",
   2020                                 ARRAY_SIZE(kRdIsNotRnIsNotRm),
   2021                                 kRdIsNotRnIsNotRm},
   2022                                {{al, r0, r6, r0, LSL, r0},
   2023                                 "al r0 r6 r0 LSL r0",
   2024                                 "RdIsNotRnIsNotRm_al_r0_r6_r0_LSL_r0",
   2025                                 ARRAY_SIZE(kRdIsNotRnIsNotRm),
   2026                                 kRdIsNotRnIsNotRm},
   2027                                {{al, r11, r7, r8, LSL, r0},
   2028                                 "al r11 r7 r8 LSL r0",
   2029                                 "RdIsNotRnIsNotRm_al_r11_r7_r8_LSL_r0",
   2030                                 ARRAY_SIZE(kRdIsNotRnIsNotRm),
   2031                                 kRdIsNotRnIsNotRm},
   2032                                {{al, r12, r2, r3, LSL, r0},
   2033                                 "al r12 r2 r3 LSL r0",
   2034                                 "RdIsNotRnIsNotRm_al_r12_r2_r3_LSL_r0",
   2035                                 ARRAY_SIZE(kRdIsNotRnIsNotRm),
   2036                                 kRdIsNotRnIsNotRm},
   2037                                {{al, r7, r4, r10, LSL, r0},
   2038                                 "al r7 r4 r10 LSL r0",
   2039                                 "RdIsNotRnIsNotRm_al_r7_r4_r10_LSL_r0",
   2040                                 ARRAY_SIZE(kRdIsNotRnIsNotRm),
   2041                                 kRdIsNotRnIsNotRm},
   2042                                {{al, r9, r6, r1, LSL, r0},
   2043                                 "al r9 r6 r1 LSL r0",
   2044                                 "RdIsNotRnIsNotRm_al_r9_r6_r1_LSL_r0",
   2045                                 ARRAY_SIZE(kRdIsNotRnIsNotRm),
   2046                                 kRdIsNotRnIsNotRm},
   2047                                {{al, r10, r14, r3, LSL, r0},
   2048                                 "al r10 r14 r3 LSL r0",
   2049                                 "RdIsNotRnIsNotRm_al_r10_r14_r3_LSL_r0",
   2050                                 ARRAY_SIZE(kRdIsNotRnIsNotRm),
   2051                                 kRdIsNotRnIsNotRm},
   2052                                {{al, r14, r3, r6, LSL, r0},
   2053                                 "al r14 r3 r6 LSL r0",
   2054                                 "RdIsNotRnIsNotRm_al_r14_r3_r6_LSL_r0",
   2055                                 ARRAY_SIZE(kRdIsNotRnIsNotRm),
   2056                                 kRdIsNotRnIsNotRm},
   2057                                {{al, r0, r0, r1, LSL, r2},
   2058                                 "al r0 r0 r1 LSL r2",
   2059                                 "ShiftTypes_al_r0_r0_r1_LSL_r2",
   2060                                 ARRAY_SIZE(kShiftTypes),
   2061                                 kShiftTypes},
   2062                                {{al, r0, r0, r1, LSR, r2},
   2063                                 "al r0 r0 r1 LSR r2",
   2064                                 "ShiftTypes_al_r0_r0_r1_LSR_r2",
   2065                                 ARRAY_SIZE(kShiftTypes),
   2066                                 kShiftTypes},
   2067                                {{al, r0, r0, r1, ASR, r2},
   2068                                 "al r0 r0 r1 ASR r2",
   2069                                 "ShiftTypes_al_r0_r0_r1_ASR_r2",
   2070                                 ARRAY_SIZE(kShiftTypes),
   2071                                 kShiftTypes},
   2072                                {{al, r0, r0, r1, ROR, r2},
   2073                                 "al r0 r0 r1 ROR r2",
   2074                                 "ShiftTypes_al_r0_r0_r1_ROR_r2",
   2075                                 ARRAY_SIZE(kShiftTypes),
   2076                                 kShiftTypes}};
   2077 
   2078 // We record all inputs to the instructions as outputs. This way, we also check
   2079 // that what shouldn't change didn't change.
   2080 struct TestResult {
   2081   size_t output_size;
   2082   const Inputs* outputs;
   2083 };
   2084 
   2085 // These headers each contain an array of `TestResult` with the reference output
   2086 // values. The reference arrays are names `kReference{mnemonic}`.
   2087 #include "aarch32/traces/simulator-cond-rd-rn-operand-rm-shift-rs-adc-a32.h"
   2088 #include "aarch32/traces/simulator-cond-rd-rn-operand-rm-shift-rs-adcs-a32.h"
   2089 #include "aarch32/traces/simulator-cond-rd-rn-operand-rm-shift-rs-add-a32.h"
   2090 #include "aarch32/traces/simulator-cond-rd-rn-operand-rm-shift-rs-adds-a32.h"
   2091 #include "aarch32/traces/simulator-cond-rd-rn-operand-rm-shift-rs-and-a32.h"
   2092 #include "aarch32/traces/simulator-cond-rd-rn-operand-rm-shift-rs-ands-a32.h"
   2093 #include "aarch32/traces/simulator-cond-rd-rn-operand-rm-shift-rs-bic-a32.h"
   2094 #include "aarch32/traces/simulator-cond-rd-rn-operand-rm-shift-rs-bics-a32.h"
   2095 #include "aarch32/traces/simulator-cond-rd-rn-operand-rm-shift-rs-eor-a32.h"
   2096 #include "aarch32/traces/simulator-cond-rd-rn-operand-rm-shift-rs-eors-a32.h"
   2097 #include "aarch32/traces/simulator-cond-rd-rn-operand-rm-shift-rs-orr-a32.h"
   2098 #include "aarch32/traces/simulator-cond-rd-rn-operand-rm-shift-rs-orrs-a32.h"
   2099 #include "aarch32/traces/simulator-cond-rd-rn-operand-rm-shift-rs-rsb-a32.h"
   2100 #include "aarch32/traces/simulator-cond-rd-rn-operand-rm-shift-rs-rsbs-a32.h"
   2101 #include "aarch32/traces/simulator-cond-rd-rn-operand-rm-shift-rs-rsc-a32.h"
   2102 #include "aarch32/traces/simulator-cond-rd-rn-operand-rm-shift-rs-rscs-a32.h"
   2103 #include "aarch32/traces/simulator-cond-rd-rn-operand-rm-shift-rs-sbc-a32.h"
   2104 #include "aarch32/traces/simulator-cond-rd-rn-operand-rm-shift-rs-sbcs-a32.h"
   2105 #include "aarch32/traces/simulator-cond-rd-rn-operand-rm-shift-rs-sub-a32.h"
   2106 #include "aarch32/traces/simulator-cond-rd-rn-operand-rm-shift-rs-subs-a32.h"
   2107 
   2108 
   2109 // The maximum number of errors to report in detail for each test.
   2110 const unsigned kErrorReportLimit = 8;
   2111 
   2112 typedef void (MacroAssembler::*Fn)(Condition cond,
   2113                                    Register rd,
   2114                                    Register rn,
   2115                                    const Operand& op);
   2116 
   2117 void TestHelper(Fn instruction,
   2118                 const char* mnemonic,
   2119                 const TestResult reference[]) {
   2120   SETUP();
   2121   masm.UseA32();
   2122   START();
   2123 
   2124   // Data to compare to `reference`.
   2125   TestResult* results[ARRAY_SIZE(kTests)];
   2126 
   2127   // Test cases for memory bound instructions may allocate a buffer and save its
   2128   // address in this array.
   2129   byte* scratch_memory_buffers[ARRAY_SIZE(kTests)];
   2130 
   2131   // Generate a loop for each element in `kTests`. Each loop tests one specific
   2132   // instruction.
   2133   for (unsigned i = 0; i < ARRAY_SIZE(kTests); i++) {
   2134     // Allocate results on the heap for this test.
   2135     results[i] = new TestResult;
   2136     results[i]->outputs = new Inputs[kTests[i].input_size];
   2137     results[i]->output_size = kTests[i].input_size;
   2138 
   2139     size_t input_stride = sizeof(kTests[i].inputs[0]) * kTests[i].input_size;
   2140     VIXL_ASSERT(IsUint32(input_stride));
   2141 
   2142     scratch_memory_buffers[i] = NULL;
   2143 
   2144     Label loop;
   2145     UseScratchRegisterScope scratch_registers(&masm);
   2146     // Include all registers from r0 ro r12.
   2147     scratch_registers.Include(RegisterList(0x1fff));
   2148 
   2149     // Values to pass to the macro-assembler.
   2150     Condition cond = kTests[i].operands.cond;
   2151     Register rd = kTests[i].operands.rd;
   2152     Register rn = kTests[i].operands.rn;
   2153     Register rm = kTests[i].operands.rm;
   2154     ShiftType shift = kTests[i].operands.shift;
   2155     Register rs = kTests[i].operands.rs;
   2156     Operand op(rm, shift, rs);
   2157     scratch_registers.Exclude(rd);
   2158     scratch_registers.Exclude(rn);
   2159     scratch_registers.Exclude(rm);
   2160     scratch_registers.Exclude(rs);
   2161 
   2162     // Allocate reserved registers for our own use.
   2163     Register input_ptr = scratch_registers.Acquire();
   2164     Register input_end = scratch_registers.Acquire();
   2165     Register result_ptr = scratch_registers.Acquire();
   2166 
   2167     // Initialize `input_ptr` to the first element and `input_end` the address
   2168     // after the array.
   2169     __ Mov(input_ptr, Operand::From(kTests[i].inputs));
   2170     __ Add(input_end, input_ptr, static_cast<uint32_t>(input_stride));
   2171     __ Mov(result_ptr, Operand::From(results[i]->outputs));
   2172     __ Bind(&loop);
   2173 
   2174     {
   2175       UseScratchRegisterScope temp_registers(&masm);
   2176       Register nzcv_bits = temp_registers.Acquire();
   2177       Register saved_q_bit = temp_registers.Acquire();
   2178       // Save the `Q` bit flag.
   2179       __ Mrs(saved_q_bit, APSR);
   2180       __ And(saved_q_bit, saved_q_bit, QFlag);
   2181       // Set the `NZCV` and `Q` flags together.
   2182       __ Ldr(nzcv_bits, MemOperand(input_ptr, offsetof(Inputs, apsr)));
   2183       __ Orr(nzcv_bits, nzcv_bits, saved_q_bit);
   2184       __ Msr(APSR_nzcvq, nzcv_bits);
   2185     }
   2186     __ Ldr(rd, MemOperand(input_ptr, offsetof(Inputs, rd)));
   2187     __ Ldr(rn, MemOperand(input_ptr, offsetof(Inputs, rn)));
   2188     __ Ldr(rm, MemOperand(input_ptr, offsetof(Inputs, rm)));
   2189     __ Ldr(rs, MemOperand(input_ptr, offsetof(Inputs, rs)));
   2190 
   2191     (masm.*instruction)(cond, rd, rn, op);
   2192 
   2193     {
   2194       UseScratchRegisterScope temp_registers(&masm);
   2195       Register nzcv_bits = temp_registers.Acquire();
   2196       __ Mrs(nzcv_bits, APSR);
   2197       // Only record the NZCV bits.
   2198       __ And(nzcv_bits, nzcv_bits, NZCVFlag);
   2199       __ Str(nzcv_bits, MemOperand(result_ptr, offsetof(Inputs, apsr)));
   2200     }
   2201     __ Str(rd, MemOperand(result_ptr, offsetof(Inputs, rd)));
   2202     __ Str(rn, MemOperand(result_ptr, offsetof(Inputs, rn)));
   2203     __ Str(rm, MemOperand(result_ptr, offsetof(Inputs, rm)));
   2204     __ Str(rs, MemOperand(result_ptr, offsetof(Inputs, rs)));
   2205 
   2206     // Advance the result pointer.
   2207     __ Add(result_ptr, result_ptr, Operand::From(sizeof(kTests[i].inputs[0])));
   2208     // Loop back until `input_ptr` is lower than `input_base`.
   2209     __ Add(input_ptr, input_ptr, Operand::From(sizeof(kTests[i].inputs[0])));
   2210     __ Cmp(input_ptr, input_end);
   2211     __ B(ne, &loop);
   2212   }
   2213 
   2214   END();
   2215 
   2216   RUN();
   2217 
   2218   if (Test::generate_test_trace()) {
   2219     // Print the results.
   2220     for (size_t i = 0; i < ARRAY_SIZE(kTests); i++) {
   2221       printf("const Inputs kOutputs_%s_%s[] = {\n",
   2222              mnemonic,
   2223              kTests[i].identifier);
   2224       for (size_t j = 0; j < results[i]->output_size; j++) {
   2225         printf("  { ");
   2226         printf("0x%08" PRIx32, results[i]->outputs[j].apsr);
   2227         printf(", ");
   2228         printf("0x%08" PRIx32, results[i]->outputs[j].rd);
   2229         printf(", ");
   2230         printf("0x%08" PRIx32, results[i]->outputs[j].rn);
   2231         printf(", ");
   2232         printf("0x%08" PRIx32, results[i]->outputs[j].rm);
   2233         printf(", ");
   2234         printf("0x%08" PRIx32, results[i]->outputs[j].rs);
   2235         printf(" },\n");
   2236       }
   2237       printf("};\n");
   2238     }
   2239     printf("const TestResult kReference%s[] = {\n", mnemonic);
   2240     for (size_t i = 0; i < ARRAY_SIZE(kTests); i++) {
   2241       printf("  {\n");
   2242       printf("    ARRAY_SIZE(kOutputs_%s_%s),\n",
   2243              mnemonic,
   2244              kTests[i].identifier);
   2245       printf("    kOutputs_%s_%s,\n", mnemonic, kTests[i].identifier);
   2246       printf("  },\n");
   2247     }
   2248     printf("};\n");
   2249   } else if (kCheckSimulatorTestResults) {
   2250     // Check the results.
   2251     unsigned total_error_count = 0;
   2252     for (size_t i = 0; i < ARRAY_SIZE(kTests); i++) {
   2253       bool instruction_has_errors = false;
   2254       for (size_t j = 0; j < kTests[i].input_size; j++) {
   2255         uint32_t apsr = results[i]->outputs[j].apsr;
   2256         uint32_t rd = results[i]->outputs[j].rd;
   2257         uint32_t rn = results[i]->outputs[j].rn;
   2258         uint32_t rm = results[i]->outputs[j].rm;
   2259         uint32_t rs = results[i]->outputs[j].rs;
   2260         uint32_t apsr_input = kTests[i].inputs[j].apsr;
   2261         uint32_t rd_input = kTests[i].inputs[j].rd;
   2262         uint32_t rn_input = kTests[i].inputs[j].rn;
   2263         uint32_t rm_input = kTests[i].inputs[j].rm;
   2264         uint32_t rs_input = kTests[i].inputs[j].rs;
   2265         uint32_t apsr_ref = reference[i].outputs[j].apsr;
   2266         uint32_t rd_ref = reference[i].outputs[j].rd;
   2267         uint32_t rn_ref = reference[i].outputs[j].rn;
   2268         uint32_t rm_ref = reference[i].outputs[j].rm;
   2269         uint32_t rs_ref = reference[i].outputs[j].rs;
   2270 
   2271         if (((apsr != apsr_ref) || (rd != rd_ref) || (rn != rn_ref) ||
   2272              (rm != rm_ref) || (rs != rs_ref)) &&
   2273             (++total_error_count <= kErrorReportLimit)) {
   2274           // Print the instruction once even if it triggered multiple failures.
   2275           if (!instruction_has_errors) {
   2276             printf("Error(s) when testing \"%s %s\":\n",
   2277                    mnemonic,
   2278                    kTests[i].operands_description);
   2279             instruction_has_errors = true;
   2280           }
   2281           // Print subsequent errors.
   2282           printf("  Input:    ");
   2283           printf("0x%08" PRIx32, apsr_input);
   2284           printf(", ");
   2285           printf("0x%08" PRIx32, rd_input);
   2286           printf(", ");
   2287           printf("0x%08" PRIx32, rn_input);
   2288           printf(", ");
   2289           printf("0x%08" PRIx32, rm_input);
   2290           printf(", ");
   2291           printf("0x%08" PRIx32, rs_input);
   2292           printf("\n");
   2293           printf("  Expected: ");
   2294           printf("0x%08" PRIx32, apsr_ref);
   2295           printf(", ");
   2296           printf("0x%08" PRIx32, rd_ref);
   2297           printf(", ");
   2298           printf("0x%08" PRIx32, rn_ref);
   2299           printf(", ");
   2300           printf("0x%08" PRIx32, rm_ref);
   2301           printf(", ");
   2302           printf("0x%08" PRIx32, rs_ref);
   2303           printf("\n");
   2304           printf("  Found:    ");
   2305           printf("0x%08" PRIx32, apsr);
   2306           printf(", ");
   2307           printf("0x%08" PRIx32, rd);
   2308           printf(", ");
   2309           printf("0x%08" PRIx32, rn);
   2310           printf(", ");
   2311           printf("0x%08" PRIx32, rm);
   2312           printf(", ");
   2313           printf("0x%08" PRIx32, rs);
   2314           printf("\n\n");
   2315         }
   2316       }
   2317     }
   2318 
   2319     if (total_error_count > kErrorReportLimit) {
   2320       printf("%u other errors follow.\n",
   2321              total_error_count - kErrorReportLimit);
   2322     }
   2323     VIXL_CHECK(total_error_count == 0);
   2324   } else {
   2325     VIXL_WARNING("Assembled the code, but did not run anything.\n");
   2326   }
   2327 
   2328   for (size_t i = 0; i < ARRAY_SIZE(kTests); i++) {
   2329     delete[] results[i]->outputs;
   2330     delete results[i];
   2331     delete[] scratch_memory_buffers[i];
   2332   }
   2333 }
   2334 
   2335 // Instantiate tests for each instruction in the list.
   2336 // TODO: Remove this limitation by having a sandboxing mechanism.
   2337 #if defined(VIXL_HOST_POINTER_32)
   2338 #define TEST(mnemonic)                                                      \
   2339   void Test_##mnemonic() {                                                  \
   2340     TestHelper(&MacroAssembler::mnemonic, #mnemonic, kReference##mnemonic); \
   2341   }                                                                         \
   2342   Test test_##mnemonic(                                                     \
   2343       "AARCH32_SIMULATOR_COND_RD_RN_OPERAND_RM_SHIFT_RS_" #mnemonic "_A32", \
   2344       &Test_##mnemonic);
   2345 #else
   2346 #define TEST(mnemonic)                                                      \
   2347   void Test_##mnemonic() {                                                  \
   2348     VIXL_WARNING("This test can only run on a 32-bit host.\n");             \
   2349     USE(TestHelper);                                                        \
   2350   }                                                                         \
   2351   Test test_##mnemonic(                                                     \
   2352       "AARCH32_SIMULATOR_COND_RD_RN_OPERAND_RM_SHIFT_RS_" #mnemonic "_A32", \
   2353       &Test_##mnemonic);
   2354 #endif
   2355 
   2356 FOREACH_INSTRUCTION(TEST)
   2357 #undef TEST
   2358 
   2359 }  // namespace
   2360 #endif
   2361 
   2362 }  // namespace aarch32
   2363 }  // namespace vixl
   2364