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-assembler-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/macro-assembler-aarch32.h"
44
45#define BUF_SIZE (4096)
46
47namespace vixl {
48namespace aarch32 {
49
50// List of instruction mnemonics.
51#define FOREACH_INSTRUCTION(M) \
52  M(add)                       \
53  M(addw)                      \
54  M(sub)                       \
55  M(subw)
56
57
58// The following definitions are defined again in each generated test, therefore
59// we need to place them in an anomymous namespace. It expresses that they are
60// local to this file only, and the compiler is not allowed to share these types
61// across test files during template instantiation. Specifically, `Operands` has
62// various layouts across generated tests so it absolutely cannot be shared.
63
64#ifdef VIXL_INCLUDE_TARGET_T32
65namespace {
66
67// Values to be passed to the assembler to produce the instruction under test.
68struct Operands {
69  Condition cond;
70  Register rd;
71  Register rn;
72  int32_t immediate;
73};
74
75// This structure contains all data needed to test one specific
76// instruction.
77struct TestData {
78  // The `operands` field represents what to pass to the assembler to
79  // produce the instruction.
80  Operands operands;
81  // True if we need to generate an IT instruction for this test to be valid.
82  bool in_it_block;
83  // The condition to give the IT instruction, this will be set to "al" by
84  // default.
85  Condition it_condition;
86  // Description of the operands, used for error reporting.
87  const char* operands_description;
88  // Unique identifier, used for generating traces.
89  const char* identifier;
90};
91
92struct TestResult {
93  size_t size;
94  const byte* encoding;
95};
96
97// Each element of this array produce one instruction encoding.
98const TestData kTests[] =
99    {{{al, r12, r7, 1536}, false, al, "al r12 r7 1536", "al_r12_r7_1536"},
100     {{al, r7, r10, 1991}, false, al, "al r7 r10 1991", "al_r7_r10_1991"},
101     {{al, r13, r10, 3585}, false, al, "al r13 r10 3585", "al_r13_r10_3585"},
102     {{al, r8, r12, 3384}, false, al, "al r8 r12 3384", "al_r8_r12_3384"},
103     {{al, r14, r4, 3899}, false, al, "al r14 r4 3899", "al_r14_r4_3899"},
104     {{al, r10, r1, 3397}, false, al, "al r10 r1 3397", "al_r10_r1_3397"},
105     {{al, r2, r10, 3063}, false, al, "al r2 r10 3063", "al_r2_r10_3063"},
106     {{al, r6, r9, 3696}, false, al, "al r6 r9 3696", "al_r6_r9_3696"},
107     {{al, r13, r7, 606}, false, al, "al r13 r7 606", "al_r13_r7_606"},
108     {{al, r6, r1, 2016}, false, al, "al r6 r1 2016", "al_r6_r1_2016"},
109     {{al, r13, r14, 2047}, false, al, "al r13 r14 2047", "al_r13_r14_2047"},
110     {{al, r10, r9, 2025}, false, al, "al r10 r9 2025", "al_r10_r9_2025"},
111     {{al, r11, r14, 2323}, false, al, "al r11 r14 2323", "al_r11_r14_2323"},
112     {{al, r13, r7, 3071}, false, al, "al r13 r7 3071", "al_r13_r7_3071"},
113     {{al, r7, r0, 4092}, false, al, "al r7 r0 4092", "al_r7_r0_4092"},
114     {{al, r2, r3, 3287}, false, al, "al r2 r3 3287", "al_r2_r3_3287"},
115     {{al, r3, r14, 4079}, false, al, "al r3 r14 4079", "al_r3_r14_4079"},
116     {{al, r1, r3, 4037}, false, al, "al r1 r3 4037", "al_r1_r3_4037"},
117     {{al, r2, r11, 2701}, false, al, "al r2 r11 2701", "al_r2_r11_2701"},
118     {{al, r5, r11, 2892}, false, al, "al r5 r11 2892", "al_r5_r11_2892"},
119     {{al, r0, r0, 969}, false, al, "al r0 r0 969", "al_r0_r0_969"},
120     {{al, r0, r12, 1924}, false, al, "al r0 r12 1924", "al_r0_r12_1924"},
121     {{al, r10, r3, 4046}, false, al, "al r10 r3 4046", "al_r10_r3_4046"},
122     {{al, r12, r13, 3787}, false, al, "al r12 r13 3787", "al_r12_r13_3787"},
123     {{al, r13, r4, 3548}, false, al, "al r13 r4 3548", "al_r13_r4_3548"},
124     {{al, r8, r6, 2}, false, al, "al r8 r6 2", "al_r8_r6_2"},
125     {{al, r4, r14, 1027}, false, al, "al r4 r14 1027", "al_r4_r14_1027"},
126     {{al, r10, r2, 3136}, false, al, "al r10 r2 3136", "al_r10_r2_3136"},
127     {{al, r9, r13, 2978}, false, al, "al r9 r13 2978", "al_r9_r13_2978"},
128     {{al, r4, r4, 2046}, false, al, "al r4 r4 2046", "al_r4_r4_2046"},
129     {{al, r12, r14, 1323}, false, al, "al r12 r14 1323", "al_r12_r14_1323"},
130     {{al, r4, r8, 2721}, false, al, "al r4 r8 2721", "al_r4_r8_2721"},
131     {{al, r10, r3, 811}, false, al, "al r10 r3 811", "al_r10_r3_811"},
132     {{al, r7, r12, 188}, false, al, "al r7 r12 188", "al_r7_r12_188"},
133     {{al, r5, r1, 997}, false, al, "al r5 r1 997", "al_r5_r1_997"},
134     {{al, r13, r7, 98}, false, al, "al r13 r7 98", "al_r13_r7_98"},
135     {{al, r11, r1, 2046}, false, al, "al r11 r1 2046", "al_r11_r1_2046"},
136     {{al, r13, r13, 4095}, false, al, "al r13 r13 4095", "al_r13_r13_4095"},
137     {{al, r12, r14, 47}, false, al, "al r12 r14 47", "al_r12_r14_47"},
138     {{al, r11, r0, 3566}, false, al, "al r11 r0 3566", "al_r11_r0_3566"},
139     {{al, r2, r3, 2901}, false, al, "al r2 r3 2901", "al_r2_r3_2901"},
140     {{al, r14, r14, 774}, false, al, "al r14 r14 774", "al_r14_r14_774"},
141     {{al, r12, r11, 1823}, false, al, "al r12 r11 1823", "al_r12_r11_1823"},
142     {{al, r7, r6, 3397}, false, al, "al r7 r6 3397", "al_r7_r6_3397"},
143     {{al, r14, r6, 3921}, false, al, "al r14 r6 3921", "al_r14_r6_3921"},
144     {{al, r11, r12, 3063}, false, al, "al r11 r12 3063", "al_r11_r12_3063"},
145     {{al, r14, r12, 1009}, false, al, "al r14 r12 1009", "al_r14_r12_1009"},
146     {{al, r9, r10, 4093}, false, al, "al r9 r10 4093", "al_r9_r10_4093"},
147     {{al, r10, r10, 1198}, false, al, "al r10 r10 1198", "al_r10_r10_1198"},
148     {{al, r14, r3, 3481}, false, al, "al r14 r3 3481", "al_r14_r3_3481"},
149     {{al, r8, r0, 1266}, false, al, "al r8 r0 1266", "al_r8_r0_1266"},
150     {{al, r8, r1, 958}, false, al, "al r8 r1 958", "al_r8_r1_958"},
151     {{al, r1, r11, 1171}, false, al, "al r1 r11 1171", "al_r1_r11_1171"},
152     {{al, r5, r6, 282}, false, al, "al r5 r6 282", "al_r5_r6_282"},
153     {{al, r11, r13, 1506}, false, al, "al r11 r13 1506", "al_r11_r13_1506"},
154     {{al, r3, r3, 3583}, false, al, "al r3 r3 3583", "al_r3_r3_3583"},
155     {{al, r1, r14, 3685}, false, al, "al r1 r14 3685", "al_r1_r14_3685"},
156     {{al, r1, r1, 3583}, false, al, "al r1 r1 3583", "al_r1_r1_3583"},
157     {{al, r1, r5, 595}, false, al, "al r1 r5 595", "al_r1_r5_595"},
158     {{al, r11, r2, 3802}, false, al, "al r11 r2 3802", "al_r11_r2_3802"},
159     {{al, r13, r4, 3325}, false, al, "al r13 r4 3325", "al_r13_r4_3325"},
160     {{al, r1, r1, 1266}, false, al, "al r1 r1 1266", "al_r1_r1_1266"},
161     {{al, r10, r0, 1231}, false, al, "al r10 r0 1231", "al_r10_r0_1231"},
162     {{al, r3, r0, 3752}, false, al, "al r3 r0 3752", "al_r3_r0_3752"},
163     {{al, r13, r10, 3994}, false, al, "al r13 r10 3994", "al_r13_r10_3994"},
164     {{al, r14, r8, 210}, false, al, "al r14 r8 210", "al_r14_r8_210"},
165     {{al, r3, r13, 3787}, false, al, "al r3 r13 3787", "al_r3_r13_3787"},
166     {{al, r4, r3, 3472}, false, al, "al r4 r3 3472", "al_r4_r3_3472"},
167     {{al, r13, r3, 264}, false, al, "al r13 r3 264", "al_r13_r3_264"},
168     {{al, r3, r4, 3871}, false, al, "al r3 r4 3871", "al_r3_r4_3871"},
169     {{al, r1, r3, 3343}, false, al, "al r1 r3 3343", "al_r1_r3_3343"},
170     {{al, r12, r8, 3063}, false, al, "al r12 r8 3063", "al_r12_r8_3063"},
171     {{al, r4, r13, 988}, false, al, "al r4 r13 988", "al_r4_r13_988"},
172     {{al, r12, r7, 997}, false, al, "al r12 r7 997", "al_r12_r7_997"},
173     {{al, r14, r8, 3391}, false, al, "al r14 r8 3391", "al_r14_r8_3391"},
174     {{al, r7, r12, 2984}, false, al, "al r7 r12 2984", "al_r7_r12_2984"},
175     {{al, r8, r1, 2590}, false, al, "al r8 r1 2590", "al_r8_r1_2590"},
176     {{al, r13, r12, 83}, false, al, "al r13 r12 83", "al_r13_r12_83"},
177     {{al, r2, r0, 4082}, false, al, "al r2 r0 4082", "al_r2_r0_4082"},
178     {{al, r4, r13, 4092}, false, al, "al r4 r13 4092", "al_r4_r13_4092"},
179     {{al, r7, r5, 2454}, false, al, "al r7 r5 2454", "al_r7_r5_2454"},
180     {{al, r0, r1, 4076}, false, al, "al r0 r1 4076", "al_r0_r1_4076"},
181     {{al, r0, r1, 3449}, false, al, "al r0 r1 3449", "al_r0_r1_3449"},
182     {{al, r10, r12, 132}, false, al, "al r10 r12 132", "al_r10_r12_132"},
183     {{al, r11, r9, 3772}, false, al, "al r11 r9 3772", "al_r11_r9_3772"},
184     {{al, r4, r8, 964}, false, al, "al r4 r8 964", "al_r4_r8_964"},
185     {{al, r1, r4, 1017}, false, al, "al r1 r4 1017", "al_r1_r4_1017"},
186     {{al, r1, r10, 136}, false, al, "al r1 r10 136", "al_r1_r10_136"},
187     {{al, r3, r3, 3142}, false, al, "al r3 r3 3142", "al_r3_r3_3142"},
188     {{al, r3, r5, 2627}, false, al, "al r3 r5 2627", "al_r3_r5_2627"},
189     {{al, r8, r2, 1660}, false, al, "al r8 r2 1660", "al_r8_r2_1660"},
190     {{al, r11, r3, 98}, false, al, "al r11 r3 98", "al_r11_r3_98"},
191     {{al, r10, r10, 3774}, false, al, "al r10 r10 3774", "al_r10_r10_3774"},
192     {{al, r0, r14, 2690}, false, al, "al r0 r14 2690", "al_r0_r14_2690"},
193     {{al, r6, r12, 1394}, false, al, "al r6 r12 1394", "al_r6_r12_1394"},
194     {{al, r12, r7, 1438}, false, al, "al r12 r7 1438", "al_r12_r7_1438"},
195     {{al, r1, r11, 1556}, false, al, "al r1 r11 1556", "al_r1_r11_1556"},
196     {{al, r7, r7, 2982}, false, al, "al r7 r7 2982", "al_r7_r7_2982"},
197     {{al, r1, r4, 3007}, false, al, "al r1 r4 3007", "al_r1_r4_3007"},
198     {{al, r2, r13, 1537}, false, al, "al r2 r13 1537", "al_r2_r13_1537"},
199     {{al, r1, r12, 1527}, false, al, "al r1 r12 1527", "al_r1_r12_1527"},
200     {{al, r12, r0, 3907}, false, al, "al r12 r0 3907", "al_r12_r0_3907"},
201     {{al, r14, r3, 1916}, false, al, "al r14 r3 1916", "al_r14_r3_1916"},
202     {{al, r14, r12, 3610}, false, al, "al r14 r12 3610", "al_r14_r12_3610"},
203     {{al, r7, r7, 915}, false, al, "al r7 r7 915", "al_r7_r7_915"},
204     {{al, r14, r3, 2025}, false, al, "al r14 r3 2025", "al_r14_r3_2025"},
205     {{al, r13, r5, 362}, false, al, "al r13 r5 362", "al_r13_r5_362"},
206     {{al, r6, r1, 3057}, false, al, "al r6 r1 3057", "al_r6_r1_3057"},
207     {{al, r10, r7, 282}, false, al, "al r10 r7 282", "al_r10_r7_282"},
208     {{al, r4, r13, 662}, false, al, "al r4 r13 662", "al_r4_r13_662"},
209     {{al, r6, r13, 2038}, false, al, "al r6 r13 2038", "al_r6_r13_2038"},
210     {{al, r12, r7, 2810}, false, al, "al r12 r7 2810", "al_r12_r7_2810"},
211     {{al, r11, r6, 3391}, false, al, "al r11 r6 3391", "al_r11_r6_3391"},
212     {{al, r8, r2, 2365}, false, al, "al r8 r2 2365", "al_r8_r2_2365"},
213     {{al, r6, r7, 3636}, false, al, "al r6 r7 3636", "al_r6_r7_3636"},
214     {{al, r1, r10, 1485}, false, al, "al r1 r10 1485", "al_r1_r10_1485"},
215     {{al, r8, r14, 3907}, false, al, "al r8 r14 3907", "al_r8_r14_3907"},
216     {{al, r5, r5, 1458}, false, al, "al r5 r5 1458", "al_r5_r5_1458"},
217     {{al, r1, r0, 3003}, false, al, "al r1 r0 3003", "al_r1_r0_3003"},
218     {{al, r14, r14, 3072}, false, al, "al r14 r14 3072", "al_r14_r14_3072"},
219     {{al, r2, r6, 1823}, false, al, "al r2 r6 1823", "al_r2_r6_1823"},
220     {{al, r1, r2, 3765}, false, al, "al r1 r2 3765", "al_r1_r2_3765"},
221     {{al, r1, r0, 2021}, false, al, "al r1 r0 2021", "al_r1_r0_2021"},
222     {{al, r14, r8, 2665}, false, al, "al r14 r8 2665", "al_r14_r8_2665"},
223     {{al, r8, r8, 342}, false, al, "al r8 r8 342", "al_r8_r8_342"},
224     {{al, r14, r10, 3266}, false, al, "al r14 r10 3266", "al_r14_r10_3266"},
225     {{al, r5, r7, 4058}, false, al, "al r5 r7 4058", "al_r5_r7_4058"},
226     {{al, r12, r8, 2475}, false, al, "al r12 r8 2475", "al_r12_r8_2475"},
227     {{al, r10, r7, 797}, false, al, "al r10 r7 797", "al_r10_r7_797"},
228     {{al, r12, r9, 2038}, false, al, "al r12 r9 2038", "al_r12_r9_2038"},
229     {{al, r13, r6, 1498}, false, al, "al r13 r6 1498", "al_r13_r6_1498"},
230     {{al, r5, r5, 2628}, false, al, "al r5 r5 2628", "al_r5_r5_2628"},
231     {{al, r11, r12, 47}, false, al, "al r11 r12 47", "al_r11_r12_47"},
232     {{al, r1, r3, 689}, false, al, "al r1 r3 689", "al_r1_r3_689"},
233     {{al, r0, r12, 964}, false, al, "al r0 r12 964", "al_r0_r12_964"},
234     {{al, r9, r10, 999}, false, al, "al r9 r10 999", "al_r9_r10_999"},
235     {{al, r6, r2, 1472}, false, al, "al r6 r2 1472", "al_r6_r2_1472"},
236     {{al, r10, r12, 3548}, false, al, "al r10 r12 3548", "al_r10_r12_3548"},
237     {{al, r5, r0, 618}, false, al, "al r5 r0 618", "al_r5_r0_618"},
238     {{al, r10, r8, 1652}, false, al, "al r10 r8 1652", "al_r10_r8_1652"},
239     {{al, r9, r4, 3287}, false, al, "al r9 r4 3287", "al_r9_r4_3287"},
240     {{al, r9, r6, 1808}, false, al, "al r9 r6 1808", "al_r9_r6_1808"},
241     {{al, r14, r3, 2023}, false, al, "al r14 r3 2023", "al_r14_r3_2023"},
242     {{al, r7, r4, 2202}, false, al, "al r7 r4 2202", "al_r7_r4_2202"},
243     {{al, r7, r4, 2047}, false, al, "al r7 r4 2047", "al_r7_r4_2047"},
244     {{al, r1, r0, 4065}, false, al, "al r1 r0 4065", "al_r1_r0_4065"},
245     {{al, r2, r2, 2721}, false, al, "al r2 r2 2721", "al_r2_r2_2721"},
246     {{al, r2, r14, 778}, false, al, "al r2 r14 778", "al_r2_r14_778"},
247     {{al, r4, r3, 3821}, false, al, "al r4 r3 3821", "al_r4_r3_3821"},
248     {{al, r14, r5, 1097}, false, al, "al r14 r5 1097", "al_r14_r5_1097"},
249     {{al, r9, r12, 672}, false, al, "al r9 r12 672", "al_r9_r12_672"},
250     {{al, r6, r3, 719}, false, al, "al r6 r3 719", "al_r6_r3_719"},
251     {{al, r10, r0, 1916}, false, al, "al r10 r0 1916", "al_r10_r0_1916"},
252     {{al, r12, r13, 2999}, false, al, "al r12 r13 2999", "al_r12_r13_2999"},
253     {{al, r5, r8, 674}, false, al, "al r5 r8 674", "al_r5_r8_674"},
254     {{al, r12, r1, 3907}, false, al, "al r12 r1 3907", "al_r12_r1_3907"},
255     {{al, r12, r12, 342}, false, al, "al r12 r12 342", "al_r12_r12_342"},
256     {{al, r2, r14, 3522}, false, al, "al r2 r14 3522", "al_r2_r14_3522"},
257     {{al, r4, r12, 2929}, false, al, "al r4 r12 2929", "al_r4_r12_2929"},
258     {{al, r9, r0, 3239}, false, al, "al r9 r0 3239", "al_r9_r0_3239"},
259     {{al, r7, r2, 2703}, false, al, "al r7 r2 2703", "al_r7_r2_2703"},
260     {{al, r9, r0, 2180}, false, al, "al r9 r0 2180", "al_r9_r0_2180"},
261     {{al, r12, r2, 4046}, false, al, "al r12 r2 4046", "al_r12_r2_4046"},
262     {{al, r9, r13, 3821}, false, al, "al r9 r13 3821", "al_r9_r13_3821"},
263     {{al, r5, r1, 1159}, false, al, "al r5 r1 1159", "al_r5_r1_1159"},
264     {{al, r2, r10, 1660}, false, al, "al r2 r10 1660", "al_r2_r10_1660"},
265     {{al, r8, r14, 3608}, false, al, "al r8 r14 3608", "al_r8_r14_3608"},
266     {{al, r10, r2, 998}, false, al, "al r10 r2 998", "al_r10_r2_998"},
267     {{al, r11, r13, 3069}, false, al, "al r11 r13 3069", "al_r11_r13_3069"},
268     {{al, r14, r8, 3221}, false, al, "al r14 r8 3221", "al_r14_r8_3221"},
269     {{al, r5, r7, 1455}, false, al, "al r5 r7 1455", "al_r5_r7_1455"},
270     {{al, r12, r6, 997}, false, al, "al r12 r6 997", "al_r12_r6_997"},
271     {{al, r5, r5, 606}, false, al, "al r5 r5 606", "al_r5_r5_606"},
272     {{al, r8, r0, 358}, false, al, "al r8 r0 358", "al_r8_r0_358"},
273     {{al, r4, r11, 1870}, false, al, "al r4 r11 1870", "al_r4_r11_1870"},
274     {{al, r0, r8, 216}, false, al, "al r0 r8 216", "al_r0_r8_216"},
275     {{al, r2, r8, 685}, false, al, "al r2 r8 685", "al_r2_r8_685"},
276     {{al, r6, r9, 3743}, false, al, "al r6 r9 3743", "al_r6_r9_3743"},
277     {{al, r12, r7, 72}, false, al, "al r12 r7 72", "al_r12_r7_72"},
278     {{al, r0, r11, 2044}, false, al, "al r0 r11 2044", "al_r0_r11_2044"},
279     {{al, r0, r14, 679}, false, al, "al r0 r14 679", "al_r0_r14_679"},
280     {{al, r11, r14, 136}, false, al, "al r11 r14 136", "al_r11_r14_136"},
281     {{al, r6, r7, 3057}, false, al, "al r6 r7 3057", "al_r6_r7_3057"},
282     {{al, r5, r9, 1922}, false, al, "al r5 r9 1922", "al_r5_r9_1922"},
283     {{al, r3, r12, 3772}, false, al, "al r3 r12 3772", "al_r3_r12_3772"},
284     {{al, r12, r3, 678}, false, al, "al r12 r3 678", "al_r12_r3_678"},
285     {{al, r11, r8, 2086}, false, al, "al r11 r8 2086", "al_r11_r8_2086"},
286     {{al, r4, r14, 2689}, false, al, "al r4 r14 2689", "al_r4_r14_2689"},
287     {{al, r11, r0, 2011}, false, al, "al r11 r0 2011", "al_r11_r0_2011"},
288     {{al, r7, r10, 1389}, false, al, "al r7 r10 1389", "al_r7_r10_1389"},
289     {{al, r3, r1, 478}, false, al, "al r3 r1 478", "al_r3_r1_478"},
290     {{al, r1, r0, 2721}, false, al, "al r1 r0 2721", "al_r1_r0_2721"},
291     {{al, r6, r5, 4076}, false, al, "al r6 r5 4076", "al_r6_r5_4076"},
292     {{al, r2, r2, 188}, false, al, "al r2 r2 188", "al_r2_r2_188"},
293     {{al, r9, r4, 3481}, false, al, "al r9 r4 3481", "al_r9_r4_3481"},
294     {{al, r10, r13, 47}, false, al, "al r10 r13 47", "al_r10_r13_47"},
295     {{al, r4, r4, 2796}, false, al, "al r4 r4 2796", "al_r4_r4_2796"},
296     {{al, r10, r7, 2690}, false, al, "al r10 r7 2690", "al_r10_r7_2690"},
297     {{al, r14, r7, 3921}, false, al, "al r14 r7 3921", "al_r14_r7_3921"},
298     {{al, r13, r9, 3003}, false, al, "al r13 r9 3003", "al_r13_r9_3003"},
299     {{al, r7, r11, 2038}, false, al, "al r7 r11 2038", "al_r7_r11_2038"},
300     {{al, r10, r0, 57}, false, al, "al r10 r0 57", "al_r10_r0_57"},
301     {{al, r7, r5, 2545}, false, al, "al r7 r5 2545", "al_r7_r5_2545"},
302     {{al, r9, r7, 3625}, false, al, "al r9 r7 3625", "al_r9_r7_3625"},
303     {{al, r10, r7, 2866}, false, al, "al r10 r7 2866", "al_r10_r7_2866"},
304     {{al, r9, r4, 1892}, false, al, "al r9 r4 1892", "al_r9_r4_1892"},
305     {{al, r4, r6, 955}, false, al, "al r4 r6 955", "al_r4_r6_955"},
306     {{al, r4, r12, 3517}, false, al, "al r4 r12 3517", "al_r4_r12_3517"},
307     {{al, r1, r0, 2541}, false, al, "al r1 r0 2541", "al_r1_r0_2541"},
308     {{al, r11, r1, 915}, false, al, "al r11 r1 915", "al_r11_r1_915"},
309     {{al, r8, r7, 1824}, false, al, "al r8 r7 1824", "al_r8_r7_1824"},
310     {{al, r7, r12, 2864}, false, al, "al r7 r12 2864", "al_r7_r12_2864"},
311     {{al, r11, r14, 1666}, false, al, "al r11 r14 1666", "al_r11_r14_1666"},
312     {{al, r6, r4, 2072}, false, al, "al r6 r4 2072", "al_r6_r4_2072"},
313     {{al, r0, r1, 4082}, false, al, "al r0 r1 4082", "al_r0_r1_4082"},
314     {{al, r0, r13, 1099}, false, al, "al r0 r13 1099", "al_r0_r13_1099"},
315     {{al, r4, r1, 2800}, false, al, "al r4 r1 2800", "al_r4_r1_2800"},
316     {{al, r6, r5, 1323}, false, al, "al r6 r5 1323", "al_r6_r5_1323"},
317     {{al, r3, r0, 3867}, false, al, "al r3 r0 3867", "al_r3_r0_3867"},
318     {{al, r3, r6, 2984}, false, al, "al r3 r6 2984", "al_r3_r6_2984"},
319     {{al, r9, r0, 57}, false, al, "al r9 r0 57", "al_r9_r0_57"},
320     {{al, r6, r7, 712}, false, al, "al r6 r7 712", "al_r6_r7_712"},
321     {{al, r5, r4, 1035}, false, al, "al r5 r4 1035", "al_r5_r4_1035"},
322     {{al, r12, r5, 4076}, false, al, "al r12 r5 4076", "al_r12_r5_4076"},
323     {{al, r2, r12, 2669}, false, al, "al r2 r12 2669", "al_r2_r12_2669"},
324     {{al, r9, r5, 2098}, false, al, "al r9 r5 2098", "al_r9_r5_2098"},
325     {{al, r14, r1, 1323}, false, al, "al r14 r1 1323", "al_r14_r1_1323"},
326     {{al, r6, r1, 322}, false, al, "al r6 r1 322", "al_r6_r1_322"},
327     {{al, r1, r14, 783}, false, al, "al r1 r14 783", "al_r1_r14_783"},
328     {{al, r13, r8, 192}, false, al, "al r13 r8 192", "al_r13_r8_192"},
329     {{al, r1, r14, 3585}, false, al, "al r1 r14 3585", "al_r1_r14_3585"},
330     {{al, r13, r7, 263}, false, al, "al r13 r7 263", "al_r13_r7_263"},
331     {{al, r8, r13, 783}, false, al, "al r8 r13 783", "al_r8_r13_783"},
332     {{al, r10, r7, 618}, false, al, "al r10 r7 618", "al_r10_r7_618"},
333     {{al, r14, r2, 1740}, false, al, "al r14 r2 1740", "al_r14_r2_1740"},
334     {{al, r11, r1, 3313}, false, al, "al r11 r1 3313", "al_r11_r1_3313"},
335     {{al, r14, r3, 2072}, false, al, "al r14 r3 2072", "al_r14_r3_2072"},
336     {{al, r10, r14, 2403}, false, al, "al r10 r14 2403", "al_r10_r14_2403"},
337     {{al, r9, r12, 977}, false, al, "al r9 r12 977", "al_r9_r12_977"},
338     {{al, r5, r8, 1934}, false, al, "al r5 r8 1934", "al_r5_r8_1934"},
339     {{al, r4, r11, 2345}, false, al, "al r4 r11 2345", "al_r4_r11_2345"},
340     {{al, r10, r7, 3636}, false, al, "al r10 r7 3636", "al_r10_r7_3636"},
341     {{al, r10, r7, 517}, false, al, "al r10 r7 517", "al_r10_r7_517"},
342     {{al, r2, r13, 3871}, false, al, "al r2 r13 3871", "al_r2_r13_3871"},
343     {{al, r12, r3, 2775}, false, al, "al r12 r3 2775", "al_r12_r3_2775"},
344     {{al, r12, r12, 421}, false, al, "al r12 r12 421", "al_r12_r12_421"},
345     {{al, r4, r0, 3041}, false, al, "al r4 r0 3041", "al_r4_r0_3041"},
346     {{al, r2, r2, 1736}, false, al, "al r2 r2 1736", "al_r2_r2_1736"},
347     {{al, r14, r0, 4092}, false, al, "al r14 r0 4092", "al_r14_r0_4092"},
348     {{al, r4, r12, 1687}, false, al, "al r4 r12 1687", "al_r4_r12_1687"},
349     {{al, r8, r14, 3170}, false, al, "al r8 r14 3170", "al_r8_r14_3170"},
350     {{al, r3, r5, 3449}, false, al, "al r3 r5 3449", "al_r3_r5_3449"},
351     {{al, r3, r1, 2582}, false, al, "al r3 r1 2582", "al_r3_r1_2582"},
352     {{al, r13, r9, 3057}, false, al, "al r13 r9 3057", "al_r13_r9_3057"},
353     {{al, r10, r12, 1556}, false, al, "al r10 r12 1556", "al_r10_r12_1556"},
354     {{al, r7, r10, 19}, false, al, "al r7 r10 19", "al_r7_r10_19"},
355     {{al, r13, r11, 674}, false, al, "al r13 r11 674", "al_r13_r11_674"},
356     {{al, r10, r1, 3099}, false, al, "al r10 r1 3099", "al_r10_r1_3099"},
357     {{al, r0, r10, 1804}, false, al, "al r0 r10 1804", "al_r0_r10_1804"},
358     {{al, r0, r12, 2021}, false, al, "al r0 r12 2021", "al_r0_r12_2021"},
359     {{al, r14, r6, 2359}, false, al, "al r14 r6 2359", "al_r14_r6_2359"},
360     {{al, r9, r11, 1542}, false, al, "al r9 r11 1542", "al_r9_r11_1542"},
361     {{al, r4, r1, 3566}, false, al, "al r4 r1 3566", "al_r4_r1_3566"},
362     {{al, r0, r6, 2662}, false, al, "al r0 r6 2662", "al_r0_r6_2662"},
363     {{al, r13, r6, 2217}, false, al, "al r13 r6 2217", "al_r13_r6_2217"},
364     {{al, r7, r9, 3287}, false, al, "al r7 r9 3287", "al_r7_r9_3287"},
365     {{al, r12, r14, 2365}, false, al, "al r12 r14 2365", "al_r12_r14_2365"},
366     {{al, r5, r10, 1168}, false, al, "al r5 r10 1168", "al_r5_r10_1168"},
367     {{al, r7, r2, 1848}, false, al, "al r7 r2 1848", "al_r7_r2_1848"},
368     {{al, r10, r6, 55}, false, al, "al r10 r6 55", "al_r10_r6_55"},
369     {{al, r12, r6, 1246}, false, al, "al r12 r6 1246", "al_r12_r6_1246"},
370     {{al, r10, r3, 2366}, false, al, "al r10 r3 2366", "al_r10_r3_2366"},
371     {{al, r9, r7, 2012}, false, al, "al r9 r7 2012", "al_r9_r7_2012"},
372     {{al, r6, r10, 3821}, false, al, "al r6 r10 3821", "al_r6_r10_3821"},
373     {{al, r6, r1, 1241}, false, al, "al r6 r1 1241", "al_r6_r1_1241"},
374     {{al, r0, r10, 2945}, false, al, "al r0 r10 2945", "al_r0_r10_2945"},
375     {{al, r0, r5, 210}, false, al, "al r0 r5 210", "al_r0_r5_210"},
376     {{al, r7, r13, 688}, false, al, "al r7 r13 688", "al_r7_r13_688"},
377     {{al, r12, r0, 3072}, false, al, "al r12 r0 3072", "al_r12_r0_3072"},
378     {{al, r10, r7, 1234}, false, al, "al r10 r7 1234", "al_r10_r7_1234"},
379     {{al, r0, r5, 2545}, false, al, "al r0 r5 2545", "al_r0_r5_2545"},
380     {{al, r13, r9, 663}, false, al, "al r13 r9 663", "al_r13_r9_663"},
381     {{al, r6, r7, 3491}, false, al, "al r6 r7 3491", "al_r6_r7_3491"},
382     {{al, r12, r5, 3008}, false, al, "al r12 r5 3008", "al_r12_r5_3008"},
383     {{al, r12, r1, 1899}, false, al, "al r12 r1 1899", "al_r12_r1_1899"},
384     {{al, r3, r3, 1437}, false, al, "al r3 r3 1437", "al_r3_r3_1437"},
385     {{al, r5, r13, 1536}, false, al, "al r5 r13 1536", "al_r5_r13_1536"},
386     {{al, r6, r9, 1035}, false, al, "al r6 r9 1035", "al_r6_r9_1035"},
387     {{al, r9, r4, 3425}, false, al, "al r9 r4 3425", "al_r9_r4_3425"},
388     {{al, r11, r10, 1274}, false, al, "al r11 r10 1274", "al_r11_r10_1274"},
389     {{al, r7, r7, 3728}, false, al, "al r7 r7 3728", "al_r7_r7_3728"},
390     {{al, r7, r1, 1186}, false, al, "al r7 r1 1186", "al_r7_r1_1186"},
391     {{al, r11, r0, 3256}, false, al, "al r11 r0 3256", "al_r11_r0_3256"},
392     {{al, r1, r8, 459}, false, al, "al r1 r8 459", "al_r1_r8_459"},
393     {{al, r11, r3, 53}, false, al, "al r11 r3 53", "al_r11_r3_53"},
394     {{al, r3, r14, 662}, false, al, "al r3 r14 662", "al_r3_r14_662"},
395     {{al, r7, r0, 1498}, false, al, "al r7 r0 1498", "al_r7_r0_1498"},
396     {{al, r14, r0, 3752}, false, al, "al r14 r0 3752", "al_r14_r0_3752"},
397     {{al, r11, r5, 2535}, false, al, "al r11 r5 2535", "al_r11_r5_2535"},
398     {{al, r12, r0, 3597}, false, al, "al r12 r0 3597", "al_r12_r0_3597"},
399     {{al, r1, r11, 580}, false, al, "al r1 r11 580", "al_r1_r11_580"},
400     {{al, r3, r5, 1348}, false, al, "al r3 r5 1348", "al_r3_r5_1348"},
401     {{al, r10, r5, 3871}, false, al, "al r10 r5 3871", "al_r10_r5_3871"},
402     {{al, r7, r8, 3989}, false, al, "al r7 r8 3989", "al_r7_r8_3989"},
403     {{al, r8, r10, 3449}, false, al, "al r8 r10 3449", "al_r8_r10_3449"},
404     {{al, r6, r8, 3907}, false, al, "al r6 r8 3907", "al_r6_r8_3907"},
405     {{al, r14, r10, 1175}, false, al, "al r14 r10 1175", "al_r14_r10_1175"},
406     {{al, r1, r5, 612}, false, al, "al r1 r5 612", "al_r1_r5_612"},
407     {{al, r6, r5, 2545}, false, al, "al r6 r5 2545", "al_r6_r5_2545"},
408     {{al, r4, r8, 582}, false, al, "al r4 r8 582", "al_r4_r8_582"},
409     {{al, r10, r3, 1677}, false, al, "al r10 r3 1677", "al_r10_r3_1677"},
410     {{al, r4, r13, 2821}, false, al, "al r4 r13 2821", "al_r4_r13_2821"},
411     {{al, r8, r14, 2025}, false, al, "al r8 r14 2025", "al_r8_r14_2025"},
412     {{al, r4, r3, 794}, false, al, "al r4 r3 794", "al_r4_r3_794"},
413     {{al, r14, r7, 1870}, false, al, "al r14 r7 1870", "al_r14_r7_1870"},
414     {{al, r8, r1, 1665}, false, al, "al r8 r1 1665", "al_r8_r1_1665"},
415     {{al, r0, r14, 1666}, false, al, "al r0 r14 1666", "al_r0_r14_1666"},
416     {{al, r0, r3, 932}, false, al, "al r0 r3 932", "al_r0_r3_932"},
417     {{al, r9, r5, 1660}, false, al, "al r9 r5 1660", "al_r9_r5_1660"},
418     {{al, r1, r12, 1687}, false, al, "al r1 r12 1687", "al_r1_r12_1687"},
419     {{al, r2, r6, 3659}, false, al, "al r2 r6 3659", "al_r2_r6_3659"},
420     {{al, r4, r13, 1892}, false, al, "al r4 r13 1892", "al_r4_r13_1892"},
421     {{al, r10, r9, 3811}, false, al, "al r10 r9 3811", "al_r10_r9_3811"},
422     {{al, r11, r3, 1732}, false, al, "al r11 r3 1732", "al_r11_r3_1732"},
423     {{al, r8, r4, 2810}, false, al, "al r8 r4 2810", "al_r8_r4_2810"},
424     {{al, r10, r9, 2462}, false, al, "al r10 r9 2462", "al_r10_r9_2462"},
425     {{al, r4, r4, 2098}, false, al, "al r4 r4 2098", "al_r4_r4_2098"},
426     {{al, r9, r1, 2314}, false, al, "al r9 r1 2314", "al_r9_r1_2314"},
427     {{al, r6, r6, 2642}, false, al, "al r6 r6 2642", "al_r6_r6_2642"},
428     {{al, r5, r8, 3638}, false, al, "al r5 r8 3638", "al_r5_r8_3638"},
429     {{al, r12, r0, 3660}, false, al, "al r12 r0 3660", "al_r12_r0_3660"},
430     {{al, r9, r9, 778}, false, al, "al r9 r9 778", "al_r9_r9_778"},
431     {{al, r7, r4, 3003}, false, al, "al r7 r4 3003", "al_r7_r4_3003"},
432     {{al, r5, r9, 3450}, false, al, "al r5 r9 3450", "al_r5_r9_3450"},
433     {{al, r10, r0, 1666}, false, al, "al r10 r0 1666", "al_r10_r0_1666"},
434     {{al, r10, r1, 2046}, false, al, "al r10 r1 2046", "al_r10_r1_2046"},
435     {{al, r10, r12, 3239}, false, al, "al r10 r12 3239", "al_r10_r12_3239"},
436     {{al, r0, r13, 3082}, false, al, "al r0 r13 3082", "al_r0_r13_3082"},
437     {{al, r6, r0, 2617}, false, al, "al r6 r0 2617", "al_r6_r0_2617"},
438     {{al, r5, r14, 2945}, false, al, "al r5 r14 2945", "al_r5_r14_2945"},
439     {{al, r7, r0, 2359}, false, al, "al r7 r0 2359", "al_r7_r0_2359"},
440     {{al, r1, r4, 958}, false, al, "al r1 r4 958", "al_r1_r4_958"},
441     {{al, r6, r6, 1859}, false, al, "al r6 r6 1859", "al_r6_r6_1859"},
442     {{al, r2, r4, 210}, false, al, "al r2 r4 210", "al_r2_r4_210"},
443     {{al, r13, r11, 1261}, false, al, "al r13 r11 1261", "al_r13_r11_1261"},
444     {{al, r8, r14, 964}, false, al, "al r8 r14 964", "al_r8_r14_964"},
445     {{al, r8, r4, 3607}, false, al, "al r8 r4 3607", "al_r8_r4_3607"},
446     {{al, r4, r5, 1934}, false, al, "al r4 r5 1934", "al_r4_r5_1934"},
447     {{al, r6, r0, 678}, false, al, "al r6 r0 678", "al_r6_r0_678"},
448     {{al, r0, r7, 2946}, false, al, "al r0 r7 2946", "al_r0_r7_2946"},
449     {{al, r10, r5, 955}, false, al, "al r10 r5 955", "al_r10_r5_955"},
450     {{al, r12, r7, 704}, false, al, "al r12 r7 704", "al_r12_r7_704"},
451     {{al, r13, r6, 2619}, false, al, "al r13 r6 2619", "al_r13_r6_2619"},
452     {{al, r10, r1, 3774}, false, al, "al r10 r1 3774", "al_r10_r1_3774"},
453     {{al, r6, r8, 4065}, false, al, "al r6 r8 4065", "al_r6_r8_4065"},
454     {{al, r9, r14, 2023}, false, al, "al r9 r14 2023", "al_r9_r14_2023"},
455     {{al, r0, r11, 1459}, false, al, "al r0 r11 1459", "al_r0_r11_1459"},
456     {{al, r3, r8, 3952}, false, al, "al r3 r8 3952", "al_r3_r8_3952"},
457     {{al, r7, r3, 618}, false, al, "al r7 r3 618", "al_r7_r3_618"},
458     {{al, r3, r10, 2948}, false, al, "al r3 r10 2948", "al_r3_r10_2948"},
459     {{al, r9, r14, 3239}, false, al, "al r9 r14 3239", "al_r9_r14_3239"},
460     {{al, r11, r10, 970}, false, al, "al r11 r10 970", "al_r11_r10_970"},
461     {{al, r0, r3, 358}, false, al, "al r0 r3 358", "al_r0_r3_358"},
462     {{al, r6, r13, 871}, false, al, "al r6 r13 871", "al_r6_r13_871"},
463     {{al, r0, r5, 1266}, false, al, "al r0 r5 1266", "al_r0_r5_1266"},
464     {{al, r7, r3, 2864}, false, al, "al r7 r3 2864", "al_r7_r3_2864"},
465     {{al, r3, r8, 2689}, false, al, "al r3 r8 2689", "al_r3_r8_2689"},
466     {{al, r0, r4, 719}, false, al, "al r0 r4 719", "al_r0_r4_719"},
467     {{al, r7, r0, 3989}, false, al, "al r7 r0 3989", "al_r7_r0_3989"},
468     {{al, r9, r2, 1666}, false, al, "al r9 r2 1666", "al_r9_r2_1666"},
469     {{al, r9, r10, 2326}, false, al, "al r9 r10 2326", "al_r9_r10_2326"},
470     {{al, r6, r6, 1551}, false, al, "al r6 r6 1551", "al_r6_r6_1551"},
471     {{al, r6, r5, 3867}, false, al, "al r6 r5 3867", "al_r6_r5_3867"},
472     {{al, r10, r0, 478}, false, al, "al r10 r0 478", "al_r10_r0_478"},
473     {{al, r7, r13, 997}, false, al, "al r7 r13 997", "al_r7_r13_997"},
474     {{al, r10, r1, 3717}, false, al, "al r10 r1 3717", "al_r10_r1_3717"},
475     {{al, r3, r13, 3529}, false, al, "al r3 r13 3529", "al_r3_r13_3529"},
476     {{al, r3, r0, 3802}, false, al, "al r3 r0 3802", "al_r3_r0_3802"},
477     {{al, r3, r9, 3491}, false, al, "al r3 r9 3491", "al_r3_r9_3491"},
478     {{al, r3, r0, 2945}, false, al, "al r3 r0 2945", "al_r3_r0_2945"},
479     {{al, r7, r11, 3633}, false, al, "al r7 r11 3633", "al_r7_r11_3633"},
480     {{al, r13, r4, 2224}, false, al, "al r13 r4 2224", "al_r13_r4_2224"},
481     {{al, r9, r11, 3517}, false, al, "al r9 r11 3517", "al_r9_r11_3517"},
482     {{al, r12, r13, 1916}, false, al, "al r12 r13 1916", "al_r12_r13_1916"},
483     {{al, r10, r7, 4091}, false, al, "al r10 r7 4091", "al_r10_r7_4091"},
484     {{al, r5, r0, 2040}, false, al, "al r5 r0 2040", "al_r5_r0_2040"},
485     {{al, r10, r1, 83}, false, al, "al r10 r1 83", "al_r10_r1_83"},
486     {{al, r12, r0, 98}, false, al, "al r12 r0 98", "al_r12_r0_98"},
487     {{al, r7, r4, 3109}, false, al, "al r7 r4 3109", "al_r7_r4_3109"},
488     {{al, r9, r13, 1536}, false, al, "al r9 r13 1536", "al_r9_r13_1536"},
489     {{al, r12, r14, 1687}, false, al, "al r12 r14 1687", "al_r12_r14_1687"},
490     {{al, r10, r13, 1567}, false, al, "al r10 r13 1567", "al_r10_r13_1567"},
491     {{al, r3, r1, 872}, false, al, "al r3 r1 872", "al_r3_r1_872"},
492     {{al, r0, r4, 2710}, false, al, "al r0 r4 2710", "al_r0_r4_2710"},
493     {{al, r5, r14, 233}, false, al, "al r5 r14 233", "al_r5_r14_233"},
494     {{al, r4, r0, 1437}, false, al, "al r4 r0 1437", "al_r4_r0_1437"},
495     {{al, r5, r4, 1610}, false, al, "al r5 r4 1610", "al_r5_r4_1610"},
496     {{al, r8, r13, 1660}, false, al, "al r8 r13 1660", "al_r8_r13_1660"},
497     {{al, r2, r8, 1536}, false, al, "al r2 r8 1536", "al_r2_r8_1536"},
498     {{al, r11, r7, 612}, false, al, "al r11 r7 612", "al_r11_r7_612"},
499     {{al, r8, r6, 1198}, false, al, "al r8 r6 1198", "al_r8_r6_1198"},
500     {{al, r2, r8, 1896}, false, al, "al r2 r8 1896", "al_r2_r8_1896"},
501     {{al, r5, r9, 3039}, false, al, "al r5 r9 3039", "al_r5_r9_3039"},
502     {{al, r2, r7, 1999}, false, al, "al r2 r7 1999", "al_r2_r7_1999"},
503     {{al, r1, r3, 3564}, false, al, "al r1 r3 3564", "al_r1_r3_3564"},
504     {{al, r0, r3, 55}, false, al, "al r0 r3 55", "al_r0_r3_55"},
505     {{al, r12, r2, 198}, false, al, "al r12 r2 198", "al_r12_r2_198"},
506     {{al, r12, r9, 797}, false, al, "al r12 r9 797", "al_r12_r9_797"},
507     {{al, r2, r0, 3136}, false, al, "al r2 r0 3136", "al_r2_r0_3136"},
508     {{al, r2, r14, 342}, false, al, "al r2 r14 342", "al_r2_r14_342"},
509     {{al, r8, r14, 932}, false, al, "al r8 r14 932", "al_r8_r14_932"},
510     {{al, r11, r9, 3544}, false, al, "al r11 r9 3544", "al_r11_r9_3544"},
511     {{al, r4, r7, 1231}, false, al, "al r4 r7 1231", "al_r4_r7_1231"},
512     {{al, r8, r11, 2933}, false, al, "al r8 r11 2933", "al_r8_r11_2933"},
513     {{al, r11, r5, 0}, false, al, "al r11 r5 0", "al_r11_r5_0"},
514     {{al, r12, r5, 1171}, false, al, "al r12 r5 1171", "al_r12_r5_1171"},
515     {{al, r4, r6, 2541}, false, al, "al r4 r6 2541", "al_r4_r6_2541"},
516     {{al, r5, r12, 2642}, false, al, "al r5 r12 2642", "al_r5_r12_2642"},
517     {{al, r13, r4, 3397}, false, al, "al r13 r4 3397", "al_r13_r4_3397"},
518     {{al, r14, r1, 3626}, false, al, "al r14 r1 3626", "al_r14_r1_3626"},
519     {{al, r9, r4, 322}, false, al, "al r9 r4 322", "al_r9_r4_322"},
520     {{al, r6, r11, 2026}, false, al, "al r6 r11 2026", "al_r6_r11_2026"},
521     {{al, r10, r8, 1948}, false, al, "al r10 r8 1948", "al_r10_r8_1948"},
522     {{al, r1, r1, 484}, false, al, "al r1 r1 484", "al_r1_r1_484"},
523     {{al, r1, r1, 2690}, false, al, "al r1 r1 2690", "al_r1_r1_2690"},
524     {{al, r2, r8, 662}, false, al, "al r2 r8 662", "al_r2_r8_662"},
525     {{al, r10, r13, 2403}, false, al, "al r10 r13 2403", "al_r10_r13_2403"},
526     {{al, r7, r6, 2374}, false, al, "al r7 r6 2374", "al_r7_r6_2374"},
527     {{al, r3, r0, 4079}, false, al, "al r3 r0 4079", "al_r3_r0_4079"},
528     {{al, r4, r7, 2728}, false, al, "al r4 r7 2728", "al_r4_r7_2728"},
529     {{al, r12, r11, 679}, false, al, "al r12 r11 679", "al_r12_r11_679"},
530     {{al, r10, r1, 3811}, false, al, "al r10 r1 3811", "al_r10_r1_3811"},
531     {{al, r10, r11, 3921}, false, al, "al r10 r11 3921", "al_r10_r11_3921"},
532     {{al, r12, r11, 1655}, false, al, "al r12 r11 1655", "al_r12_r11_1655"},
533     {{al, r6, r5, 3811}, false, al, "al r6 r5 3811", "al_r6_r5_3811"},
534     {{al, r14, r2, 3504}, false, al, "al r14 r2 3504", "al_r14_r2_3504"},
535     {{al, r9, r10, 3209}, false, al, "al r9 r10 3209", "al_r9_r10_3209"},
536     {{al, r0, r12, 2403}, false, al, "al r0 r12 2403", "al_r0_r12_2403"},
537     {{al, r12, r8, 3439}, false, al, "al r12 r8 3439", "al_r12_r8_3439"},
538     {{al, r1, r8, 850}, false, al, "al r1 r8 850", "al_r1_r8_850"},
539     {{al, r9, r10, 2710}, false, al, "al r9 r10 2710", "al_r9_r10_2710"},
540     {{al, r13, r3, 893}, false, al, "al r13 r3 893", "al_r13_r3_893"},
541     {{al, r1, r8, 2821}, false, al, "al r1 r8 2821", "al_r1_r8_2821"},
542     {{al, r0, r13, 2359}, false, al, "al r0 r13 2359", "al_r0_r13_2359"},
543     {{al, r0, r11, 3076}, false, al, "al r0 r11 3076", "al_r0_r11_3076"},
544     {{al, r13, r10, 2541}, false, al, "al r13 r10 2541", "al_r13_r10_2541"},
545     {{al, r12, r10, 2662}, false, al, "al r12 r10 2662", "al_r12_r10_2662"},
546     {{al, r1, r4, 2669}, false, al, "al r1 r4 2669", "al_r1_r4_2669"},
547     {{al, r11, r7, 3254}, false, al, "al r11 r7 3254", "al_r11_r7_3254"},
548     {{al, r10, r7, 1097}, false, al, "al r10 r7 1097", "al_r10_r7_1097"},
549     {{al, r2, r1, 582}, false, al, "al r2 r1 582", "al_r2_r1_582"},
550     {{al, r2, r2, 2532}, false, al, "al r2 r2 2532", "al_r2_r2_2532"},
551     {{al, r5, r0, 806}, false, al, "al r5 r0 806", "al_r5_r0_806"},
552     {{al, r1, r3, 794}, false, al, "al r1 r3 794", "al_r1_r3_794"},
553     {{al, r8, r9, 19}, false, al, "al r8 r9 19", "al_r8_r9_19"},
554     {{al, r7, r8, 875}, false, al, "al r7 r8 875", "al_r7_r8_875"},
555     {{al, r1, r3, 1017}, false, al, "al r1 r3 1017", "al_r1_r3_1017"},
556     {{al, r11, r3, 4090}, false, al, "al r11 r3 4090", "al_r11_r3_4090"},
557     {{al, r3, r3, 1660}, false, al, "al r3 r3 1660", "al_r3_r3_1660"},
558     {{al, r8, r3, 1848}, false, al, "al r8 r3 1848", "al_r8_r3_1848"},
559     {{al, r14, r13, 689}, false, al, "al r14 r13 689", "al_r14_r13_689"},
560     {{al, r11, r3, 1485}, false, al, "al r11 r3 1485", "al_r11_r3_1485"},
561     {{al, r12, r6, 1348}, false, al, "al r12 r6 1348", "al_r12_r6_1348"},
562     {{al, r8, r5, 2072}, false, al, "al r8 r5 2072", "al_r8_r5_2072"},
563     {{al, r6, r2, 4037}, false, al, "al r6 r2 4037", "al_r6_r2_4037"},
564     {{al, r4, r13, 3638}, false, al, "al r4 r13 3638", "al_r4_r13_3638"},
565     {{al, r1, r0, 915}, false, al, "al r1 r0 915", "al_r1_r0_915"},
566     {{al, r5, r6, 3771}, false, al, "al r5 r6 3771", "al_r5_r6_3771"},
567     {{al, r0, r4, 2535}, false, al, "al r0 r4 2535", "al_r0_r4_2535"},
568     {{al, r2, r7, 580}, false, al, "al r2 r7 580", "al_r2_r7_580"},
569     {{al, r12, r14, 1009}, false, al, "al r12 r14 1009", "al_r12_r14_1009"},
570     {{al, r4, r14, 1374}, false, al, "al r4 r14 1374", "al_r4_r14_1374"},
571     {{al, r0, r11, 2381}, false, al, "al r0 r11 2381", "al_r0_r11_2381"},
572     {{al, r9, r2, 1027}, false, al, "al r9 r2 1027", "al_r9_r2_1027"},
573     {{al, r6, r8, 2245}, false, al, "al r6 r8 2245", "al_r6_r8_2245"},
574     {{al, r5, r5, 2427}, false, al, "al r5 r5 2427", "al_r5_r5_2427"},
575     {{al, r11, r1, 2025}, false, al, "al r11 r1 2025", "al_r11_r1_2025"},
576     {{al, r1, r9, 3765}, false, al, "al r1 r9 3765", "al_r1_r9_3765"},
577     {{al, r8, r7, 2359}, false, al, "al r8 r7 2359", "al_r8_r7_2359"},
578     {{al, r7, r5, 2247}, false, al, "al r7 r5 2247", "al_r7_r5_2247"},
579     {{al, r9, r14, 2665}, false, al, "al r9 r14 2665", "al_r9_r14_2665"},
580     {{al, r1, r14, 3063}, false, al, "al r1 r14 3063", "al_r1_r14_3063"},
581     {{al, r2, r13, 3696}, false, al, "al r2 r13 3696", "al_r2_r13_3696"},
582     {{al, r5, r4, 3239}, false, al, "al r5 r4 3239", "al_r5_r4_3239"},
583     {{al, r9, r8, 3739}, false, al, "al r9 r8 3739", "al_r9_r8_3739"},
584     {{al, r12, r8, 513}, false, al, "al r12 r8 513", "al_r12_r8_513"},
585     {{al, r0, r1, 1043}, false, al, "al r0 r1 1043", "al_r0_r1_1043"},
586     {{al, r2, r4, 2999}, false, al, "al r2 r4 2999", "al_r2_r4_2999"},
587     {{al, r5, r6, 1660}, false, al, "al r5 r6 1660", "al_r5_r6_1660"},
588     {{al, r12, r11, 2976}, false, al, "al r12 r11 2976", "al_r12_r11_2976"},
589     {{al, r5, r2, 1652}, false, al, "al r5 r2 1652", "al_r5_r2_1652"},
590     {{al, r9, r2, 3660}, false, al, "al r9 r2 3660", "al_r9_r2_3660"},
591     {{al, r0, r8, 2929}, false, al, "al r0 r8 2929", "al_r0_r8_2929"},
592     {{al, r14, r13, 2012}, false, al, "al r14 r13 2012", "al_r14_r13_2012"},
593     {{al, r6, r1, 1651}, false, al, "al r6 r1 1651", "al_r6_r1_1651"},
594     {{al, r5, r9, 2796}, false, al, "al r5 r9 2796", "al_r5_r9_2796"},
595     {{al, r6, r0, 1459}, false, al, "al r6 r0 1459", "al_r6_r0_1459"},
596     {{al, r9, r12, 1655}, false, al, "al r9 r12 1655", "al_r9_r12_1655"},
597     {{al, r9, r7, 524}, false, al, "al r9 r7 524", "al_r9_r7_524"},
598     {{al, r0, r8, 2044}, false, al, "al r0 r8 2044", "al_r0_r8_2044"},
599     {{al, r0, r14, 1475}, false, al, "al r0 r14 1475", "al_r0_r14_1475"},
600     {{al, r13, r14, 282}, false, al, "al r13 r14 282", "al_r13_r14_282"},
601     {{al, r6, r14, 3266}, false, al, "al r6 r14 3266", "al_r6_r14_3266"},
602     {{al, r6, r7, 806}, false, al, "al r6 r7 806", "al_r6_r7_806"},
603     {{al, r3, r6, 811}, false, al, "al r3 r6 811", "al_r3_r6_811"},
604     {{al, r7, r3, 2590}, false, al, "al r7 r3 2590", "al_r7_r3_2590"},
605     {{al, r10, r6, 3399}, false, al, "al r10 r6 3399", "al_r10_r6_3399"},
606     {{al, r10, r4, 398}, false, al, "al r10 r4 398", "al_r10_r4_398"},
607     {{al, r10, r2, 2651}, false, al, "al r10 r2 2651", "al_r10_r2_2651"},
608     {{al, r3, r8, 1687}, false, al, "al r3 r8 1687", "al_r3_r8_1687"},
609     {{al, r6, r12, 2069}, false, al, "al r6 r12 2069", "al_r6_r12_2069"},
610     {{al, r1, r14, 3487}, false, al, "al r1 r14 3487", "al_r1_r14_3487"},
611     {{al, r5, r11, 322}, false, al, "al r5 r11 322", "al_r5_r11_322"},
612     {{al, r4, r13, 3662}, false, al, "al r4 r13 3662", "al_r4_r13_3662"},
613     {{al, r6, r11, 2119}, false, al, "al r6 r11 2119", "al_r6_r11_2119"},
614     {{al, r1, r9, 3659}, false, al, "al r1 r9 3659", "al_r1_r9_3659"},
615     {{al, r9, r14, 2999}, false, al, "al r9 r14 2999", "al_r9_r14_2999"},
616     {{al, r5, r0, 4076}, false, al, "al r5 r0 4076", "al_r5_r0_4076"},
617     {{al, r0, r10, 1635}, false, al, "al r0 r10 1635", "al_r0_r10_1635"},
618     {{al, r0, r9, 3583}, false, al, "al r0 r9 3583", "al_r0_r9_3583"},
619     {{al, r12, r12, 2381}, false, al, "al r12 r12 2381", "al_r12_r12_2381"},
620     {{al, r11, r11, 811}, false, al, "al r11 r11 811", "al_r11_r11_811"},
621     {{al, r4, r13, 2175}, false, al, "al r4 r13 2175", "al_r4_r13_2175"},
622     {{al, r14, r6, 2202}, false, al, "al r14 r6 2202", "al_r14_r6_2202"},
623     {{al, r7, r7, 778}, false, al, "al r7 r7 778", "al_r7_r7_778"},
624     {{al, r0, r7, 1485}, false, al, "al r0 r7 1485", "al_r0_r7_1485"},
625     {{al, r7, r3, 3472}, false, al, "al r7 r3 3472", "al_r7_r3_3472"},
626     {{al, r2, r0, 2545}, false, al, "al r2 r0 2545", "al_r2_r0_2545"},
627     {{al, r13, r3, 2098}, false, al, "al r13 r3 2098", "al_r13_r3_2098"},
628     {{al, r7, r3, 3002}, false, al, "al r7 r3 3002", "al_r7_r3_3002"},
629     {{al, r6, r9, 3195}, false, al, "al r6 r9 3195", "al_r6_r9_3195"},
630     {{al, r14, r13, 1642}, false, al, "al r14 r13 1642", "al_r14_r13_1642"},
631     {{al, r11, r0, 47}, false, al, "al r11 r0 47", "al_r11_r0_47"},
632     {{al, r6, r0, 3117}, false, al, "al r6 r0 3117", "al_r6_r0_3117"},
633     {{al, r3, r7, 1892}, false, al, "al r3 r7 1892", "al_r3_r7_1892"},
634     {{al, r10, r7, 719}, false, al, "al r10 r7 719", "al_r10_r7_719"},
635     {{al, r11, r14, 263}, false, al, "al r11 r14 263", "al_r11_r14_263"},
636     {{al, r8, r7, 4095}, false, al, "al r8 r7 4095", "al_r8_r7_4095"},
637     {{al, r6, r3, 2245}, false, al, "al r6 r3 2245", "al_r6_r3_2245"},
638     {{al, r10, r3, 19}, false, al, "al r10 r3 19", "al_r10_r3_19"},
639     {{al, r5, r5, 3949}, false, al, "al r5 r5 3949", "al_r5_r5_3949"},
640     {{al, r4, r12, 70}, false, al, "al r4 r12 70", "al_r4_r12_70"},
641     {{al, r6, r13, 3504}, false, al, "al r6 r13 3504", "al_r6_r13_3504"},
642     {{al, r3, r8, 2016}, false, al, "al r3 r8 2016", "al_r3_r8_2016"},
643     {{al, r2, r1, 2403}, false, al, "al r2 r1 2403", "al_r2_r1_2403"},
644     {{al, r13, r14, 797}, false, al, "al r13 r14 797", "al_r13_r14_797"},
645     {{al, r13, r0, 2792}, false, al, "al r13 r0 2792", "al_r13_r0_2792"},
646     {{al, r11, r9, 1526}, false, al, "al r11 r9 1526", "al_r11_r9_1526"},
647     {{al, r5, r6, 1872}, false, al, "al r5 r6 1872", "al_r5_r6_1872"},
648     {{al, r10, r3, 1896}, false, al, "al r10 r3 1896", "al_r10_r3_1896"},
649     {{al, r1, r3, 1099}, false, al, "al r1 r3 1099", "al_r1_r3_1099"},
650     {{al, r3, r7, 3610}, false, al, "al r3 r7 3610", "al_r3_r7_3610"},
651     {{al, r7, r8, 3963}, false, al, "al r7 r8 3963", "al_r7_r8_3963"},
652     {{al, r8, r5, 1458}, false, al, "al r8 r5 1458", "al_r8_r5_1458"},
653     {{al, r9, r1, 1732}, false, al, "al r9 r1 1732", "al_r9_r1_1732"},
654     {{al, r9, r11, 2036}, false, al, "al r9 r11 2036", "al_r9_r11_2036"},
655     {{al, r6, r9, 3625}, false, al, "al r6 r9 3625", "al_r6_r9_3625"},
656     {{al, r8, r2, 2892}, false, al, "al r8 r2 2892", "al_r8_r2_2892"},
657     {{al, r1, r5, 1458}, false, al, "al r1 r5 1458", "al_r1_r5_1458"},
658     {{al, r6, r6, 490}, false, al, "al r6 r6 490", "al_r6_r6_490"},
659     {{al, r14, r7, 2546}, false, al, "al r14 r7 2546", "al_r14_r7_2546"},
660     {{al, r11, r8, 3771}, false, al, "al r11 r8 3771", "al_r11_r8_3771"},
661     {{al, r5, r9, 1642}, false, al, "al r5 r9 1642", "al_r5_r9_1642"},
662     {{al, r7, r14, 3438}, false, al, "al r7 r14 3438", "al_r7_r14_3438"},
663     {{al, r7, r11, 663}, false, al, "al r7 r11 663", "al_r7_r11_663"},
664     {{al, r0, r10, 3865}, false, al, "al r0 r10 3865", "al_r0_r10_3865"},
665     {{al, r3, r4, 3008}, false, al, "al r3 r4 3008", "al_r3_r4_3008"},
666     {{al, r2, r7, 2701}, false, al, "al r2 r7 2701", "al_r2_r7_2701"},
667     {{al, r7, r7, 3660}, false, al, "al r7 r7 3660", "al_r7_r7_3660"},
668     {{al, r11, r12, 1186}, false, al, "al r11 r12 1186", "al_r11_r12_1186"},
669     {{al, r3, r3, 1567}, false, al, "al r3 r3 1567", "al_r3_r3_1567"},
670     {{al, r1, r3, 3636}, false, al, "al r1 r3 3636", "al_r1_r3_3636"},
671     {{al, r0, r5, 1750}, false, al, "al r0 r5 1750", "al_r0_r5_1750"},
672     {{al, r4, r9, 4082}, false, al, "al r4 r9 4082", "al_r4_r9_4082"},
673     {{al, r12, r9, 3660}, false, al, "al r12 r9 3660", "al_r12_r9_3660"},
674     {{al, r14, r7, 3136}, false, al, "al r14 r7 3136", "al_r14_r7_3136"},
675     {{al, r13, r9, 3914}, false, al, "al r13 r9 3914", "al_r13_r9_3914"},
676     {{al, r12, r13, 3899}, false, al, "al r12 r13 3899", "al_r12_r13_3899"},
677     {{al, r9, r2, 2451}, false, al, "al r9 r2 2451", "al_r9_r2_2451"},
678     {{al, r4, r5, 3728}, false, al, "al r4 r5 3728", "al_r4_r5_3728"},
679     {{al, r5, r3, 2208}, false, al, "al r5 r3 2208", "al_r5_r3_2208"},
680     {{al, r0, r12, 915}, false, al, "al r0 r12 915", "al_r0_r12_915"},
681     {{al, r3, r2, 2069}, false, al, "al r3 r2 2069", "al_r3_r2_2069"},
682     {{al, r3, r7, 2464}, false, al, "al r3 r7 2464", "al_r3_r7_2464"},
683     {{al, r10, r2, 2906}, false, al, "al r10 r2 2906", "al_r10_r2_2906"},
684     {{al, r13, r9, 48}, false, al, "al r13 r9 48", "al_r13_r9_48"},
685     {{al, r14, r8, 1948}, false, al, "al r14 r8 1948", "al_r14_r8_1948"},
686     {{al, r9, r11, 3405}, false, al, "al r9 r11 3405", "al_r9_r11_3405"},
687     {{al, r2, r0, 1099}, false, al, "al r2 r0 1099", "al_r2_r0_1099"},
688     {{al, r4, r6, 55}, false, al, "al r4 r6 55", "al_r4_r6_55"},
689     {{al, r3, r11, 3439}, false, al, "al r3 r11 3439", "al_r3_r11_3439"},
690     {{al, r13, r4, 2240}, false, al, "al r13 r4 2240", "al_r13_r4_2240"},
691     {{al, r8, r7, 2290}, false, al, "al r8 r7 2290", "al_r8_r7_2290"},
692     {{al, r12, r6, 1687}, false, al, "al r12 r6 1687", "al_r12_r6_1687"},
693     {{al, r4, r9, 3856}, false, al, "al r4 r9 3856", "al_r4_r9_3856"},
694     {{al, r7, r1, 2359}, false, al, "al r7 r1 2359", "al_r7_r1_2359"},
695     {{al, r5, r3, 3994}, false, al, "al r5 r3 3994", "al_r5_r3_3994"},
696     {{al, r3, r10, 3633}, false, al, "al r3 r10 3633", "al_r3_r10_3633"},
697     {{al, r11, r13, 2864}, false, al, "al r11 r13 2864", "al_r11_r13_2864"},
698     {{al, r12, r12, 2451}, false, al, "al r12 r12 2451", "al_r12_r12_2451"},
699     {{al, r7, r13, 3717}, false, al, "al r7 r13 3717", "al_r7_r13_3717"},
700     {{al, r2, r6, 1899}, false, al, "al r2 r6 1899", "al_r2_r6_1899"},
701     {{al, r10, r11, 525}, false, al, "al r10 r11 525", "al_r10_r11_525"},
702     {{al, r3, r7, 2427}, false, al, "al r3 r7 2427", "al_r3_r7_2427"},
703     {{al, r1, r2, 3003}, false, al, "al r1 r2 3003", "al_r1_r2_3003"},
704     {{al, r2, r10, 871}, false, al, "al r2 r10 871", "al_r2_r10_871"},
705     {{al, r10, r0, 2866}, false, al, "al r10 r0 2866", "al_r10_r0_2866"},
706     {{al, r1, r7, 2710}, false, al, "al r1 r7 2710", "al_r1_r7_2710"},
707     {{al, r5, r1, 704}, false, al, "al r5 r1 704", "al_r5_r1_704"},
708     {{al, r3, r7, 3076}, false, al, "al r3 r7 3076", "al_r3_r7_3076"},
709     {{al, r0, r6, 2311}, false, al, "al r0 r6 2311", "al_r0_r6_2311"},
710     {{al, r12, r13, 2665}, false, al, "al r12 r13 2665", "al_r12_r13_2665"},
711     {{al, r2, r13, 2464}, false, al, "al r2 r13 2464", "al_r2_r13_2464"},
712     {{al, r11, r9, 496}, false, al, "al r11 r9 496", "al_r11_r9_496"},
713     {{al, r10, r10, 2023}, false, al, "al r10 r10 2023", "al_r10_r10_2023"},
714     {{al, r0, r0, 3787}, false, al, "al r0 r0 3787", "al_r0_r0_3787"},
715     {{al, r2, r10, 2183}, false, al, "al r2 r10 2183", "al_r2_r10_2183"},
716     {{al, r10, r12, 3162}, false, al, "al r10 r12 3162", "al_r10_r12_3162"},
717     {{al, r0, r2, 2290}, false, al, "al r0 r2 2290", "al_r0_r2_2290"},
718     {{al, r9, r10, 4090}, false, al, "al r9 r10 4090", "al_r9_r10_4090"},
719     {{al, r1, r13, 2374}, false, al, "al r1 r13 2374", "al_r1_r13_2374"},
720     {{al, r1, r8, 3610}, false, al, "al r1 r8 3610", "al_r1_r8_3610"},
721     {{al, r6, r2, 1948}, false, al, "al r6 r2 1948", "al_r6_r2_1948"},
722     {{al, r9, r0, 3963}, false, al, "al r9 r0 3963", "al_r9_r0_3963"},
723     {{al, r6, r10, 3544}, false, al, "al r6 r10 3544", "al_r6_r10_3544"},
724     {{al, r3, r1, 429}, false, al, "al r3 r1 429", "al_r3_r1_429"},
725     {{al, r7, r8, 3449}, false, al, "al r7 r8 3449", "al_r7_r8_3449"},
726     {{al, r12, r2, 766}, false, al, "al r12 r2 766", "al_r12_r2_766"},
727     {{al, r0, r13, 264}, false, al, "al r0 r13 264", "al_r0_r13_264"},
728     {{al, r12, r5, 2098}, false, al, "al r12 r5 2098", "al_r12_r5_2098"},
729     {{al, r7, r5, 964}, false, al, "al r7 r5 964", "al_r7_r5_964"},
730     {{al, r3, r14, 251}, false, al, "al r3 r14 251", "al_r3_r14_251"},
731     {{al, r7, r10, 3002}, false, al, "al r7 r10 3002", "al_r7_r10_3002"},
732     {{al, r4, r12, 1699}, false, al, "al r4 r12 1699", "al_r4_r12_1699"},
733     {{al, r10, r10, 1135}, false, al, "al r10 r10 1135", "al_r10_r10_1135"},
734     {{al, r0, r1, 3063}, false, al, "al r0 r1 3063", "al_r0_r1_3063"},
735     {{al, r14, r4, 1295}, false, al, "al r14 r4 1295", "al_r14_r4_1295"},
736     {{al, r11, r12, 770}, false, al, "al r11 r12 770", "al_r11_r12_770"},
737     {{al, r14, r9, 523}, false, al, "al r14 r9 523", "al_r14_r9_523"},
738     {{al, r2, r9, 47}, false, al, "al r2 r9 47", "al_r2_r9_47"},
739     {{al, r11, r6, 704}, false, al, "al r11 r6 704", "al_r11_r6_704"},
740     {{al, r4, r12, 1536}, false, al, "al r4 r12 1536", "al_r4_r12_1536"},
741     {{al, r4, r13, 582}, false, al, "al r4 r13 582", "al_r4_r13_582"},
742     {{al, r14, r2, 1394}, false, al, "al r14 r2 1394", "al_r14_r2_1394"},
743     {{al, r3, r6, 3583}, false, al, "al r3 r6 3583", "al_r3_r6_3583"},
744     {{al, r7, r5, 3157}, false, al, "al r7 r5 3157", "al_r7_r5_3157"},
745     {{al, r14, r3, 3142}, false, al, "al r14 r3 3142", "al_r14_r3_3142"},
746     {{al, r7, r9, 1666}, false, al, "al r7 r9 1666", "al_r7_r9_1666"},
747     {{al, r9, r9, 180}, false, al, "al r9 r9 180", "al_r9_r9_180"},
748     {{al, r7, r9, 4037}, false, al, "al r7 r9 4037", "al_r7_r9_4037"},
749     {{al, r4, r1, 1445}, false, al, "al r4 r1 1445", "al_r4_r1_1445"},
750     {{al, r7, r9, 2202}, false, al, "al r7 r9 2202", "al_r7_r9_2202"},
751     {{al, r12, r7, 547}, false, al, "al r12 r7 547", "al_r12_r7_547"},
752     {{al, r1, r11, 2799}, false, al, "al r1 r11 2799", "al_r1_r11_2799"},
753     {{al, r4, r7, 679}, false, al, "al r4 r7 679", "al_r4_r7_679"},
754     {{al, r0, r9, 1135}, false, al, "al r0 r9 1135", "al_r0_r9_1135"},
755     {{al, r10, r2, 3139}, false, al, "al r10 r2 3139", "al_r10_r2_3139"},
756     {{al, r8, r11, 601}, false, al, "al r8 r11 601", "al_r8_r11_601"},
757     {{al, r8, r2, 3034}, false, al, "al r8 r2 3034", "al_r8_r2_3034"},
758     {{al, r10, r12, 4}, false, al, "al r10 r12 4", "al_r10_r12_4"},
759     {{al, r14, r2, 2119}, false, al, "al r14 r2 2119", "al_r14_r2_2119"},
760     {{al, r7, r10, 3597}, false, al, "al r7 r10 3597", "al_r7_r10_3597"},
761     {{al, r3, r11, 1567}, false, al, "al r3 r11 1567", "al_r3_r11_1567"},
762     {{al, r7, r0, 3397}, false, al, "al r7 r0 3397", "al_r7_r0_3397"},
763     {{al, r2, r6, 3491}, false, al, "al r2 r6 3491", "al_r2_r6_3491"},
764     {{al, r6, r13, 1266}, false, al, "al r6 r13 1266", "al_r6_r13_1266"},
765     {{al, r7, r2, 580}, false, al, "al r7 r2 580", "al_r7_r2_580"},
766     {{al, r1, r4, 2044}, false, al, "al r1 r4 2044", "al_r1_r4_2044"},
767     {{al, r14, r11, 3544}, false, al, "al r14 r11 3544", "al_r14_r11_3544"},
768     {{al, r11, r11, 2044}, false, al, "al r11 r11 2044", "al_r11_r11_2044"},
769     {{al, r3, r5, 180}, false, al, "al r3 r5 180", "al_r3_r5_180"},
770     {{al, r11, r1, 3491}, false, al, "al r11 r1 3491", "al_r11_r1_3491"},
771     {{al, r3, r11, 2792}, false, al, "al r3 r11 2792", "al_r3_r11_2792"},
772     {{al, r12, r1, 523}, false, al, "al r12 r1 523", "al_r12_r1_523"},
773     {{al, r2, r8, 72}, false, al, "al r2 r8 72", "al_r2_r8_72"},
774     {{al, r14, r7, 2619}, false, al, "al r14 r7 2619", "al_r14_r7_2619"},
775     {{al, r9, r14, 662}, false, al, "al r9 r14 662", "al_r9_r14_662"},
776     {{al, r12, r12, 932}, false, al, "al r12 r12 932", "al_r12_r12_932"},
777     {{al, r13, r11, 1750}, false, al, "al r13 r11 1750", "al_r13_r11_1750"},
778     {{al, r7, r2, 2451}, false, al, "al r7 r2 2451", "al_r7_r2_2451"},
779     {{al, r4, r0, 2710}, false, al, "al r4 r0 2710", "al_r4_r0_2710"},
780     {{al, r14, r14, 429}, false, al, "al r14 r14 429", "al_r14_r14_429"},
781     {{al, r9, r12, 2523}, false, al, "al r9 r12 2523", "al_r9_r12_2523"},
782     {{al, r3, r10, 362}, false, al, "al r3 r10 362", "al_r3_r10_362"},
783     {{al, r11, r7, 2588}, false, al, "al r11 r7 2588", "al_r11_r7_2588"},
784     {{al, r6, r13, 791}, false, al, "al r6 r13 791", "al_r6_r13_791"},
785     {{al, r12, r5, 1924}, false, al, "al r12 r5 1924", "al_r12_r5_1924"},
786     {{al, r9, r0, 2813}, false, al, "al r9 r0 2813", "al_r9_r0_2813"},
787     {{al, r0, r11, 2016}, false, al, "al r0 r11 2016", "al_r0_r11_2016"},
788     {{al, r9, r11, 2086}, false, al, "al r9 r11 2086", "al_r9_r11_2086"},
789     {{al, r1, r0, 3663}, false, al, "al r1 r0 3663", "al_r1_r0_3663"},
790     {{al, r6, r13, 3541}, false, al, "al r6 r13 3541", "al_r6_r13_3541"},
791     {{al, r3, r3, 774}, false, al, "al r3 r3 774", "al_r3_r3_774"},
792     {{al, r14, r2, 2072}, false, al, "al r14 r2 2072", "al_r14_r2_2072"},
793     {{al, r10, r3, 2718}, false, al, "al r10 r3 2718", "al_r10_r3_2718"},
794     {{al, r13, r2, 2224}, false, al, "al r13 r2 2224", "al_r13_r2_2224"},
795     {{al, r14, r0, 2026}, false, al, "al r14 r0 2026", "al_r14_r0_2026"},
796     {{al, r0, r8, 2978}, false, al, "al r0 r8 2978", "al_r0_r8_2978"},
797     {{al, r3, r12, 3870}, false, al, "al r3 r12 3870", "al_r3_r12_3870"},
798     {{al, r10, r12, 4092}, false, al, "al r10 r12 4092", "al_r10_r12_4092"},
799     {{al, r10, r3, 1261}, false, al, "al r10 r3 1261", "al_r10_r3_1261"},
800     {{al, r11, r14, 3652}, false, al, "al r11 r14 3652", "al_r11_r14_3652"},
801     {{al, r10, r7, 960}, false, al, "al r10 r7 960", "al_r10_r7_960"},
802     {{al, r11, r1, 4065}, false, al, "al r11 r1 4065", "al_r11_r1_4065"},
803     {{al, r5, r0, 2403}, false, al, "al r5 r0 2403", "al_r5_r0_2403"},
804     {{al, r5, r1, 479}, false, al, "al r5 r1 479", "al_r5_r1_479"},
805     {{al, r1, r8, 2710}, false, al, "al r1 r8 2710", "al_r1_r8_2710"},
806     {{al, r14, r6, 1981}, false, al, "al r14 r6 1981", "al_r14_r6_1981"},
807     {{al, r8, r1, 1027}, false, al, "al r8 r1 1027", "al_r8_r1_1027"},
808     {{al, r5, r5, 3138}, false, al, "al r5 r5 3138", "al_r5_r5_3138"},
809     {{al, r3, r14, 3541}, false, al, "al r3 r14 3541", "al_r3_r14_3541"},
810     {{al, r3, r9, 674}, false, al, "al r3 r9 674", "al_r3_r9_674"},
811     {{al, r3, r7, 997}, false, al, "al r3 r7 997", "al_r3_r7_997"},
812     {{al, r13, r13, 57}, false, al, "al r13 r13 57", "al_r13_r13_57"},
813     {{al, r3, r7, 662}, false, al, "al r3 r7 662", "al_r3_r7_662"},
814     {{al, r13, r2, 3918}, false, al, "al r13 r2 3918", "al_r13_r2_3918"},
815     {{al, r9, r9, 3517}, false, al, "al r9 r9 3517", "al_r9_r9_3517"},
816     {{al, r10, r1, 932}, false, al, "al r10 r1 932", "al_r10_r1_932"},
817     {{al, r9, r7, 251}, false, al, "al r9 r7 251", "al_r9_r7_251"},
818     {{al, r0, r11, 2507}, false, al, "al r0 r11 2507", "al_r0_r11_2507"},
819     {{al, r0, r3, 732}, false, al, "al r0 r3 732", "al_r0_r3_732"},
820     {{al, r3, r6, 997}, false, al, "al r3 r6 997", "al_r3_r6_997"},
821     {{al, r6, r5, 3529}, false, al, "al r6 r5 3529", "al_r6_r5_3529"},
822     {{al, r4, r1, 612}, false, al, "al r4 r1 612", "al_r4_r1_612"},
823     {{al, r1, r0, 4090}, false, al, "al r1 r0 4090", "al_r1_r0_4090"},
824     {{al, r13, r12, 3865}, false, al, "al r13 r12 3865", "al_r13_r12_3865"},
825     {{al, r9, r7, 1116}, false, al, "al r9 r7 1116", "al_r9_r7_1116"},
826     {{al, r6, r11, 1459}, false, al, "al r6 r11 1459", "al_r6_r11_1459"},
827     {{al, r8, r13, 1458}, false, al, "al r8 r13 1458", "al_r8_r13_1458"},
828     {{al, r11, r6, 1848}, false, al, "al r11 r6 1848", "al_r11_r6_1848"},
829     {{al, r6, r7, 3811}, false, al, "al r6 r7 3811", "al_r6_r7_3811"},
830     {{al, r12, r10, 3688}, false, al, "al r12 r10 3688", "al_r12_r10_3688"},
831     {{al, r1, r12, 2454}, false, al, "al r1 r12 2454", "al_r1_r12_2454"},
832     {{al, r10, r0, 2366}, false, al, "al r10 r0 2366", "al_r10_r0_2366"},
833     {{al, r14, r7, 3765}, false, al, "al r14 r7 3765", "al_r14_r7_3765"},
834     {{al, r5, r4, 3660}, false, al, "al r5 r4 3660", "al_r5_r4_3660"},
835     {{al, r2, r9, 3157}, false, al, "al r2 r9 3157", "al_r2_r9_3157"},
836     {{al, r3, r7, 1459}, false, al, "al r3 r7 1459", "al_r3_r7_1459"},
837     {{al, r3, r7, 4092}, false, al, "al r3 r7 4092", "al_r3_r7_4092"},
838     {{al, r8, r13, 1916}, false, al, "al r8 r13 1916", "al_r8_r13_1916"},
839     {{al, r3, r11, 672}, false, al, "al r3 r11 672", "al_r3_r11_672"},
840     {{al, r14, r12, 3343}, false, al, "al r14 r12 3343", "al_r14_r12_3343"},
841     {{al, r5, r0, 3880}, false, al, "al r5 r0 3880", "al_r5_r0_3880"},
842     {{al, r2, r3, 2839}, false, al, "al r2 r3 2839", "al_r2_r3_2839"},
843     {{al, r13, r13, 3413}, false, al, "al r13 r13 3413", "al_r13_r13_3413"},
844     {{al, r5, r6, 459}, false, al, "al r5 r6 459", "al_r5_r6_459"},
845     {{al, r9, r12, 1677}, false, al, "al r9 r12 1677", "al_r9_r12_1677"},
846     {{al, r13, r3, 3139}, false, al, "al r13 r3 3139", "al_r13_r3_3139"},
847     {{al, r5, r8, 365}, false, al, "al r5 r8 365", "al_r5_r8_365"},
848     {{al, r9, r1, 3003}, false, al, "al r9 r1 3003", "al_r9_r1_3003"},
849     {{al, r2, r4, 2701}, false, al, "al r2 r4 2701", "al_r2_r4_2701"},
850     {{al, r6, r3, 513}, false, al, "al r6 r3 513", "al_r6_r3_513"},
851     {{al, r0, r3, 2069}, false, al, "al r0 r3 2069", "al_r0_r3_2069"},
852     {{al, r14, r5, 342}, false, al, "al r14 r5 342", "al_r14_r5_342"},
853     {{al, r14, r6, 490}, false, al, "al r14 r6 490", "al_r14_r6_490"},
854     {{al, r2, r12, 3907}, false, al, "al r2 r12 3907", "al_r2_r12_3907"},
855     {{al, r5, r11, 2338}, false, al, "al r5 r11 2338", "al_r5_r11_2338"},
856     {{al, r6, r12, 2072}, false, al, "al r6 r12 2072", "al_r6_r12_2072"},
857     {{al, r4, r13, 2290}, false, al, "al r4 r13 2290", "al_r4_r13_2290"},
858     {{al, r12, r3, 459}, false, al, "al r12 r3 459", "al_r12_r3_459"},
859     {{al, r2, r3, 2427}, false, al, "al r2 r3 2427", "al_r2_r3_2427"},
860     {{al, r2, r14, 4058}, false, al, "al r2 r14 4058", "al_r2_r14_4058"},
861     {{al, r7, r0, 342}, false, al, "al r7 r0 342", "al_r7_r0_342"},
862     {{al, r12, r8, 4065}, false, al, "al r12 r8 4065", "al_r12_r8_4065"},
863     {{al, r5, r13, 688}, false, al, "al r5 r13 688", "al_r5_r13_688"},
864     {{al, r12, r2, 3344}, false, al, "al r12 r2 3344", "al_r12_r2_3344"},
865     {{al, r8, r14, 106}, false, al, "al r8 r14 106", "al_r8_r14_106"},
866     {{al, r8, r12, 791}, false, al, "al r8 r12 791", "al_r8_r12_791"},
867     {{al, r12, r1, 429}, false, al, "al r12 r1 429", "al_r12_r1_429"},
868     {{al, r12, r5, 3717}, false, al, "al r12 r5 3717", "al_r12_r5_3717"},
869     {{al, r11, r2, 3743}, false, al, "al r11 r2 3743", "al_r11_r2_3743"},
870     {{al, r5, r0, 1808}, false, al, "al r5 r0 1808", "al_r5_r0_1808"},
871     {{al, r7, r3, 2402}, false, al, "al r7 r3 2402", "al_r7_r3_2402"},
872     {{al, r0, r2, 1437}, false, al, "al r0 r2 1437", "al_r0_r2_1437"},
873     {{al, r3, r7, 3425}, false, al, "al r3 r7 3425", "al_r3_r7_3425"},
874     {{al, r12, r4, 3221}, false, al, "al r12 r4 3221", "al_r12_r4_3221"},
875     {{al, r12, r5, 3585}, false, al, "al r12 r5 3585", "al_r12_r5_3585"},
876     {{al, r11, r6, 3003}, false, al, "al r11 r6 3003", "al_r11_r6_3003"},
877     {{al, r4, r13, 3028}, false, al, "al r4 r13 3028", "al_r4_r13_3028"},
878     {{al, r1, r1, 4018}, false, al, "al r1 r1 4018", "al_r1_r1_4018"},
879     {{al, r6, r0, 3109}, false, al, "al r6 r0 3109", "al_r6_r0_3109"},
880     {{al, r11, r8, 3194}, false, al, "al r11 r8 3194", "al_r11_r8_3194"},
881     {{al, r14, r0, 2866}, false, al, "al r14 r0 2866", "al_r14_r0_2866"},
882     {{al, r5, r0, 1860}, false, al, "al r5 r0 1860", "al_r5_r0_1860"},
883     {{al, r14, r13, 1266}, false, al, "al r14 r13 1266", "al_r14_r13_1266"},
884     {{al, r0, r12, 2662}, false, al, "al r0 r12 2662", "al_r0_r12_2662"},
885     {{al, r12, r6, 3856}, false, al, "al r12 r6 3856", "al_r12_r6_3856"},
886     {{al, r14, r5, 251}, false, al, "al r14 r5 251", "al_r14_r5_251"},
887     {{al, r12, r7, 2427}, false, al, "al r12 r7 2427", "al_r12_r7_2427"},
888     {{al, r4, r9, 1934}, false, al, "al r4 r9 1934", "al_r4_r9_1934"},
889     {{al, r7, r4, 1458}, false, al, "al r7 r4 1458", "al_r7_r4_1458"},
890     {{al, r3, r13, 3633}, false, al, "al r3 r13 3633", "al_r3_r13_3633"},
891     {{al, r5, r3, 72}, false, al, "al r5 r3 72", "al_r5_r3_72"},
892     {{al, r2, r13, 783}, false, al, "al r2 r13 783", "al_r2_r13_783"},
893     {{al, r6, r2, 704}, false, al, "al r6 r2 704", "al_r6_r2_704"},
894     {{al, r4, r9, 22}, false, al, "al r4 r9 22", "al_r4_r9_22"},
895     {{al, r6, r8, 2047}, false, al, "al r6 r8 2047", "al_r6_r8_2047"},
896     {{al, r1, r0, 1407}, false, al, "al r1 r0 1407", "al_r1_r0_1407"},
897     {{al, r14, r10, 4095}, false, al, "al r14 r10 4095", "al_r14_r10_4095"},
898     {{al, r3, r11, 3313}, false, al, "al r3 r11 3313", "al_r3_r11_3313"},
899     {{al, r13, r1, 3449}, false, al, "al r13 r1 3449", "al_r13_r1_3449"},
900     {{al, r10, r11, 98}, false, al, "al r10 r11 98", "al_r10_r11_98"},
901     {{al, r5, r3, 1967}, false, al, "al r5 r3 1967", "al_r5_r3_1967"},
902     {{al, r13, r13, 2963}, false, al, "al r13 r13 2963", "al_r13_r13_2963"},
903     {{al, r10, r14, 2507}, false, al, "al r10 r14 2507", "al_r10_r14_2507"},
904     {{al, r0, r9, 542}, false, al, "al r0 r9 542", "al_r0_r9_542"},
905     {{al, r3, r1, 672}, false, al, "al r3 r1 672", "al_r3_r1_672"},
906     {{al, r2, r0, 669}, false, al, "al r2 r0 669", "al_r2_r0_669"},
907     {{al, r8, r13, 3439}, false, al, "al r8 r13 3439", "al_r8_r13_3439"},
908     {{al, r12, r5, 2901}, false, al, "al r12 r5 2901", "al_r12_r5_2901"},
909     {{al, r11, r4, 3921}, false, al, "al r11 r4 3921", "al_r11_r4_3921"},
910     {{al, r3, r4, 1804}, false, al, "al r3 r4 1804", "al_r3_r4_1804"},
911     {{al, r6, r2, 2963}, false, al, "al r6 r2 2963", "al_r6_r2_2963"},
912     {{al, r14, r14, 1872}, false, al, "al r14 r14 1872", "al_r14_r14_1872"},
913     {{al, r0, r3, 1999}, false, al, "al r0 r3 1999", "al_r0_r3_1999"},
914     {{al, r12, r12, 3870}, false, al, "al r12 r12 3870", "al_r12_r12_3870"},
915     {{al, r8, r6, 3209}, false, al, "al r8 r6 3209", "al_r8_r6_3209"},
916     {{al, r13, r10, 2247}, false, al, "al r13 r10 2247", "al_r13_r10_2247"},
917     {{al, r2, r7, 55}, false, al, "al r2 r7 55", "al_r2_r7_55"},
918     {{al, r14, r0, 198}, false, al, "al r14 r0 198", "al_r14_r0_198"},
919     {{al, r14, r12, 2546}, false, al, "al r14 r12 2546", "al_r14_r12_2546"},
920     {{al, r0, r12, 1459}, false, al, "al r0 r12 1459", "al_r0_r12_1459"},
921     {{al, r13, r9, 2541}, false, al, "al r13 r9 2541", "al_r13_r9_2541"},
922     {{al, r10, r11, 3450}, false, al, "al r10 r11 3450", "al_r10_r11_3450"},
923     {{al, r3, r5, 2591}, false, al, "al r3 r5 2591", "al_r3_r5_2591"},
924     {{al, r11, r13, 1687}, false, al, "al r11 r13 1687", "al_r11_r13_1687"},
925     {{al, r8, r5, 1899}, false, al, "al r8 r5 1899", "al_r8_r5_1899"},
926     {{al, r12, r4, 2046}, false, al, "al r12 r4 2046", "al_r12_r4_2046"},
927     {{al, r14, r7, 3541}, false, al, "al r14 r7 3541", "al_r14_r7_3541"},
928     {{al, r11, r1, 3685}, false, al, "al r11 r1 3685", "al_r11_r1_3685"},
929     {{al, r3, r10, 3921}, false, al, "al r3 r10 3921", "al_r3_r10_3921"},
930     {{al, r6, r5, 2208}, false, al, "al r6 r5 2208", "al_r6_r5_2208"},
931     {{al, r5, r9, 1372}, false, al, "al r5 r9 1372", "al_r5_r9_1372"},
932     {{al, r1, r3, 1542}, false, al, "al r1 r3 1542", "al_r1_r3_1542"},
933     {{al, r6, r3, 263}, false, al, "al r6 r3 263", "al_r6_r3_263"},
934     {{al, r13, r5, 3079}, false, al, "al r13 r5 3079", "al_r13_r5_3079"},
935     {{al, r14, r11, 3282}, false, al, "al r14 r11 3282", "al_r14_r11_3282"},
936     {{al, r8, r10, 1274}, false, al, "al r8 r10 1274", "al_r8_r10_1274"},
937     {{al, r10, r13, 2617}, false, al, "al r10 r13 2617", "al_r10_r13_2617"},
938     {{al, r4, r5, 2821}, false, al, "al r4 r5 2821", "al_r4_r5_2821"},
939     {{al, r8, r0, 2359}, false, al, "al r8 r0 2359", "al_r8_r0_2359"},
940     {{al, r1, r7, 2929}, false, al, "al r1 r7 2929", "al_r1_r7_2929"},
941     {{al, r0, r14, 481}, false, al, "al r0 r14 481", "al_r0_r14_481"},
942     {{al, r0, r13, 1135}, false, al, "al r0 r13 1135", "al_r0_r13_1135"},
943     {{al, r13, r10, 270}, false, al, "al r13 r10 270", "al_r13_r10_270"},
944     {{al, r3, r1, 958}, false, al, "al r3 r1 958", "al_r3_r1_958"},
945     {{al, r7, r10, 2402}, false, al, "al r7 r10 2402", "al_r7_r10_2402"},
946     {{al, r0, r1, 1428}, false, al, "al r0 r1 1428", "al_r0_r1_1428"},
947     {{al, r14, r9, 2710}, false, al, "al r14 r9 2710", "al_r14_r9_2710"},
948     {{al, r6, r4, 188}, false, al, "al r6 r4 188", "al_r6_r4_188"},
949     {{al, r7, r1, 3774}, false, al, "al r7 r1 3774", "al_r7_r1_3774"},
950     {{al, r13, r5, 386}, false, al, "al r13 r5 386", "al_r13_r5_386"},
951     {{al, r9, r5, 1377}, false, al, "al r9 r5 1377", "al_r9_r5_1377"},
952     {{al, r13, r14, 3079}, false, al, "al r13 r14 3079", "al_r13_r14_3079"},
953     {{al, r11, r4, 2119}, false, al, "al r11 r4 2119", "al_r11_r4_2119"},
954     {{al, r12, r0, 3566}, false, al, "al r12 r0 3566", "al_r12_r0_3566"},
955     {{al, r11, r13, 670}, false, al, "al r11 r13 670", "al_r11_r13_670"},
956     {{al, r14, r14, 1246}, false, al, "al r14 r14 1246", "al_r14_r14_1246"},
957     {{al, r5, r3, 3136}, false, al, "al r5 r3 3136", "al_r5_r3_3136"},
958     {{al, r9, r13, 421}, false, al, "al r9 r13 421", "al_r9_r13_421"},
959     {{al, r8, r11, 1359}, false, al, "al r8 r11 1359", "al_r8_r11_1359"},
960     {{al, r8, r12, 3989}, false, al, "al r8 r12 3989", "al_r8_r12_3989"},
961     {{al, r4, r5, 4091}, false, al, "al r4 r5 4091", "al_r4_r5_4091"},
962     {{al, r14, r1, 3867}, false, al, "al r14 r1 3867", "al_r14_r1_3867"},
963     {{al, r11, r14, 2451}, false, al, "al r11 r14 2451", "al_r11_r14_2451"},
964     {{al, r12, r4, 2069}, false, al, "al r12 r4 2069", "al_r12_r4_2069"},
965     {{al, r7, r11, 2617}, false, al, "al r7 r11 2617", "al_r7_r11_2617"},
966     {{al, r3, r13, 1377}, false, al, "al r3 r13 1377", "al_r3_r13_1377"},
967     {{al, r7, r10, 1472}, false, al, "al r7 r10 1472", "al_r7_r10_1472"},
968     {{al, r13, r1, 2813}, false, al, "al r13 r1 2813", "al_r13_r1_2813"},
969     {{al, r14, r11, 192}, false, al, "al r14 r11 192", "al_r14_r11_192"},
970     {{al, r9, r0, 1407}, false, al, "al r9 r0 1407", "al_r9_r0_1407"},
971     {{al, r0, r8, 3685}, false, al, "al r0 r8 3685", "al_r0_r8_3685"},
972     {{al, r5, r14, 1505}, false, al, "al r5 r14 1505", "al_r5_r14_1505"},
973     {{al, r11, r2, 672}, false, al, "al r11 r2 672", "al_r11_r2_672"},
974     {{al, r2, r11, 1740}, false, al, "al r2 r11 1740", "al_r2_r11_1740"},
975     {{al, r6, r8, 1323}, false, al, "al r6 r8 1323", "al_r6_r8_1323"},
976     {{al, r6, r2, 837}, false, al, "al r6 r2 837", "al_r6_r2_837"},
977     {{al, r7, r10, 1934}, false, al, "al r7 r10 1934", "al_r7_r10_1934"},
978     {{al, r4, r13, 618}, false, al, "al r4 r13 618", "al_r4_r13_618"},
979     {{al, r8, r8, 3063}, false, al, "al r8 r8 3063", "al_r8_r8_3063"},
980     {{al, r10, r0, 988}, false, al, "al r10 r0 988", "al_r10_r0_988"},
981     {{al, r2, r8, 2044}, false, al, "al r2 r8 2044", "al_r2_r8_2044"},
982     {{al, r5, r7, 850}, false, al, "al r5 r7 850", "al_r5_r7_850"},
983     {{al, r6, r6, 3015}, false, al, "al r6 r6 3015", "al_r6_r6_3015"},
984     {{al, r0, r2, 2768}, false, al, "al r0 r2 2768", "al_r0_r2_2768"},
985     {{al, r6, r8, 1498}, false, al, "al r6 r8 1498", "al_r6_r8_1498"},
986     {{al, r9, r4, 1097}, false, al, "al r9 r4 1097", "al_r9_r4_1097"},
987     {{al, r2, r5, 525}, false, al, "al r2 r5 525", "al_r2_r5_525"},
988     {{al, r6, r3, 470}, false, al, "al r6 r3 470", "al_r6_r3_470"},
989     {{al, r2, r9, 1655}, false, al, "al r2 r9 1655", "al_r2_r9_1655"},
990     {{al, r0, r5, 2026}, false, al, "al r0 r5 2026", "al_r0_r5_2026"},
991     {{al, r7, r8, 348}, false, al, "al r7 r8 348", "al_r7_r8_348"},
992     {{al, r12, r5, 342}, false, al, "al r12 r5 342", "al_r12_r5_342"},
993     {{al, r1, r8, 1860}, false, al, "al r1 r8 1860", "al_r1_r8_1860"},
994     {{al, r0, r6, 2314}, false, al, "al r0 r6 2314", "al_r0_r6_2314"},
995     {{al, r3, r13, 2726}, false, al, "al r3 r13 2726", "al_r3_r13_2726"},
996     {{al, r4, r8, 2098}, false, al, "al r4 r8 2098", "al_r4_r8_2098"},
997     {{al, r1, r10, 3239}, false, al, "al r1 r10 3239", "al_r1_r10_3239"},
998     {{al, r8, r10, 3585}, false, al, "al r8 r10 3585", "al_r8_r10_3585"},
999     {{al, r3, r5, 1642}, false, al, "al r3 r5 1642", "al_r3_r5_1642"},
1000     {{al, r9, r11, 138}, false, al, "al r9 r11 138", "al_r9_r11_138"},
1001     {{al, r0, r8, 4076}, false, al, "al r0 r8 4076", "al_r0_r8_4076"},
1002     {{al, r0, r12, 3994}, false, al, "al r0 r12 3994", "al_r0_r12_3994"},
1003     {{al, r11, r3, 3041}, false, al, "al r11 r3 3041", "al_r11_r3_3041"},
1004     {{al, r8, r1, 1732}, false, al, "al r8 r1 1732", "al_r8_r1_1732"},
1005     {{al, r10, r9, 2091}, false, al, "al r10 r9 2091", "al_r10_r9_2091"},
1006     {{al, r2, r2, 3072}, false, al, "al r2 r2 3072", "al_r2_r2_3072"},
1007     {{al, r10, r12, 3391}, false, al, "al r10 r12 3391", "al_r10_r12_3391"},
1008     {{al, r8, r6, 774}, false, al, "al r8 r6 774", "al_r8_r6_774"},
1009     {{al, r8, r13, 136}, false, al, "al r8 r13 136", "al_r8_r13_136"},
1010     {{al, r4, r7, 1712}, false, al, "al r4 r7 1712", "al_r4_r7_1712"},
1011     {{al, r4, r14, 3254}, false, al, "al r4 r14 3254", "al_r4_r14_3254"},
1012     {{al, r7, r7, 496}, false, al, "al r7 r7 496", "al_r7_r7_496"},
1013     {{al, r0, r14, 1458}, false, al, "al r0 r14 1458", "al_r0_r14_1458"},
1014     {{al, r10, r13, 669}, false, al, "al r10 r13 669", "al_r10_r13_669"},
1015     {{al, r9, r7, 2374}, false, al, "al r9 r7 2374", "al_r9_r7_2374"},
1016     {{al, r12, r5, 2628}, false, al, "al r12 r5 2628", "al_r12_r5_2628"},
1017     {{al, r5, r8, 188}, false, al, "al r5 r8 188", "al_r5_r8_188"},
1018     {{al, r11, r4, 0}, false, al, "al r11 r4 0", "al_r11_r4_0"},
1019     {{al, r13, r1, 3504}, false, al, "al r13 r1 3504", "al_r13_r1_3504"},
1020     {{al, r8, r6, 2617}, false, al, "al r8 r6 2617", "al_r8_r6_2617"},
1021     {{al, r6, r6, 3652}, false, al, "al r6 r6 3652", "al_r6_r6_3652"},
1022     {{al, r8, r14, 1526}, false, al, "al r8 r14 1526", "al_r8_r14_1526"},
1023     {{al, r6, r0, 2662}, false, al, "al r6 r0 2662", "al_r6_r0_2662"},
1024     {{al, r12, r9, 3015}, false, al, "al r12 r9 3015", "al_r12_r9_3015"},
1025     {{al, r1, r2, 2718}, false, al, "al r1 r2 2718", "al_r1_r2_2718"},
1026     {{al, r10, r0, 4056}, false, al, "al r10 r0 4056", "al_r10_r0_4056"},
1027     {{al, r14, r11, 3522}, false, al, "al r14 r11 3522", "al_r14_r11_3522"},
1028     {{al, r10, r9, 3774}, false, al, "al r10 r9 3774", "al_r10_r9_3774"},
1029     {{al, r2, r3, 263}, false, al, "al r2 r3 263", "al_r2_r3_263"},
1030     {{al, r9, r11, 1459}, false, al, "al r9 r11 1459", "al_r9_r11_1459"},
1031     {{al, r0, r9, 3449}, false, al, "al r0 r9 3449", "al_r0_r9_3449"},
1032     {{al, r14, r12, 3702}, false, al, "al r14 r12 3702", "al_r14_r12_3702"},
1033     {{al, r2, r14, 2695}, false, al, "al r2 r14 2695", "al_r2_r14_2695"},
1034     {{al, r13, r1, 470}, false, al, "al r13 r1 470", "al_r13_r1_470"},
1035     {{al, r11, r1, 977}, false, al, "al r11 r1 977", "al_r11_r1_977"},
1036     {{al, r12, r4, 2799}, false, al, "al r12 r4 2799", "al_r12_r4_2799"},
1037     {{al, r14, r2, 2794}, false, al, "al r14 r2 2794", "al_r14_r2_2794"},
1038     {{al, r14, r5, 794}, false, al, "al r14 r5 794", "al_r14_r5_794"},
1039     {{al, r4, r6, 831}, false, al, "al r4 r6 831", "al_r4_r6_831"},
1040     {{al, r6, r10, 3517}, false, al, "al r6 r10 3517", "al_r6_r10_3517"},
1041     {{al, r1, r10, 1556}, false, al, "al r1 r10 1556", "al_r1_r10_1556"},
1042     {{al, r9, r9, 2374}, false, al, "al r9 r9 2374", "al_r9_r9_2374"},
1043     {{al, r13, r6, 1261}, false, al, "al r13 r6 1261", "al_r13_r6_1261"},
1044     {{al, r6, r10, 2976}, false, al, "al r6 r10 2976", "al_r6_r10_2976"},
1045     {{al, r0, r7, 1536}, false, al, "al r0 r7 1536", "al_r0_r7_1536"},
1046     {{al, r6, r6, 1043}, false, al, "al r6 r6 1043", "al_r6_r6_1043"},
1047     {{al, r13, r1, 3344}, false, al, "al r13 r1 3344", "al_r13_r1_3344"},
1048     {{al, r11, r9, 4090}, false, al, "al r11 r9 4090", "al_r11_r9_4090"},
1049     {{al, r6, r14, 2247}, false, al, "al r6 r14 2247", "al_r6_r14_2247"},
1050     {{al, r14, r2, 3918}, false, al, "al r14 r2 3918", "al_r14_r2_3918"},
1051     {{al, r0, r14, 3487}, false, al, "al r0 r14 3487", "al_r0_r14_3487"},
1052     {{al, r5, r8, 796}, false, al, "al r5 r8 796", "al_r5_r8_796"},
1053     {{al, r2, r5, 2662}, false, al, "al r2 r5 2662", "al_r2_r5_2662"},
1054     {{al, r8, r2, 1967}, false, al, "al r8 r2 1967", "al_r8_r2_1967"},
1055     {{al, r9, r1, 3344}, false, al, "al r9 r1 3344", "al_r9_r1_3344"},
1056     {{al, r6, r3, 2945}, false, al, "al r6 r3 2945", "al_r6_r3_2945"},
1057     {{al, r3, r5, 2453}, false, al, "al r3 r5 2453", "al_r3_r5_2453"},
1058     {{al, r6, r14, 3975}, false, al, "al r6 r14 3975", "al_r6_r14_3975"},
1059     {{al, r2, r8, 2976}, false, al, "al r2 r8 2976", "al_r2_r8_2976"},
1060     {{al, r7, r5, 1097}, false, al, "al r7 r5 1097", "al_r7_r5_1097"},
1061     {{al, r14, r14, 3564}, false, al, "al r14 r14 3564", "al_r14_r14_3564"},
1062     {{al, r0, r8, 2183}, false, al, "al r0 r8 2183", "al_r0_r8_2183"},
1063     {{al, r11, r11, 612}, false, al, "al r11 r11 612", "al_r11_r11_612"},
1064     {{al, r0, r8, 48}, false, al, "al r0 r8 48", "al_r0_r8_48"},
1065     {{al, r1, r1, 1168}, false, al, "al r1 r1 1168", "al_r1_r1_1168"},
1066     {{al, r11, r4, 1526}, false, al, "al r11 r4 1526", "al_r11_r4_1526"},
1067     {{al, r13, r6, 3157}, false, al, "al r13 r6 3157", "al_r13_r6_3157"},
1068     {{al, r1, r9, 3195}, false, al, "al r1 r9 3195", "al_r1_r9_3195"},
1069     {{al, r10, r11, 850}, false, al, "al r10 r11 850", "al_r10_r11_850"},
1070     {{al, r9, r9, 1374}, false, al, "al r9 r9 1374", "al_r9_r9_1374"},
1071     {{al, r4, r0, 2651}, false, al, "al r4 r0 2651", "al_r4_r0_2651"},
1072     {{al, r6, r14, 490}, false, al, "al r6 r14 490", "al_r6_r14_490"},
1073     {{al, r1, r2, 3702}, false, al, "al r1 r2 3702", "al_r1_r2_3702"},
1074     {{al, r2, r1, 2098}, false, al, "al r2 r1 2098", "al_r2_r1_2098"},
1075     {{al, r4, r3, 3256}, false, al, "al r4 r3 3256", "al_r4_r3_3256"},
1076     {{al, r0, r10, 132}, false, al, "al r0 r10 132", "al_r0_r10_132"},
1077     {{al, r3, r6, 2703}, false, al, "al r3 r6 2703", "al_r3_r6_2703"},
1078     {{al, r3, r10, 844}, false, al, "al r3 r10 844", "al_r3_r10_844"},
1079     {{al, r10, r9, 513}, false, al, "al r10 r9 513", "al_r10_r9_513"},
1080     {{al, r6, r7, 3308}, false, al, "al r6 r7 3308", "al_r6_r7_3308"},
1081     {{al, r12, r10, 3978}, false, al, "al r12 r10 3978", "al_r12_r10_3978"},
1082     {{al, r10, r3, 1407}, false, al, "al r10 r3 1407", "al_r10_r3_1407"},
1083     {{al, r5, r1, 2358}, false, al, "al r5 r1 2358", "al_r5_r1_2358"},
1084     {{al, r13, r13, 322}, false, al, "al r13 r13 322", "al_r13_r13_322"},
1085     {{al, r7, r10, 2403}, false, al, "al r7 r10 2403", "al_r7_r10_2403"},
1086     {{al, r14, r4, 198}, false, al, "al r14 r4 198", "al_r14_r4_198"},
1087     {{al, r3, r2, 3774}, false, al, "al r3 r2 3774", "al_r3_r2_3774"},
1088     {{al, r4, r5, 1899}, false, al, "al r4 r5 1899", "al_r4_r5_1899"},
1089     {{al, r14, r14, 2183}, false, al, "al r14 r14 2183", "al_r14_r14_2183"},
1090     {{al, r3, r9, 3636}, false, al, "al r3 r9 3636", "al_r3_r9_3636"},
1091     {{al, r6, r13, 774}, false, al, "al r6 r13 774", "al_r6_r13_774"},
1092     {{al, r3, r7, 791}, false, al, "al r3 r7 791", "al_r3_r7_791"},
1093     {{al, r1, r13, 2202}, false, al, "al r1 r13 2202", "al_r1_r13_2202"},
1094     {{al, r0, r0, 580}, false, al, "al r0 r0 580", "al_r0_r0_580"},
1095     {{al, r4, r0, 1848}, false, al, "al r4 r0 1848", "al_r4_r0_1848"},
1096     {{al, r4, r6, 2464}, false, al, "al r4 r6 2464", "al_r4_r6_2464"},
1097     {{al, r9, r0, 997}, false, al, "al r9 r0 997", "al_r9_r0_997"},
1098     {{al, r0, r4, 2866}, false, al, "al r0 r4 2866", "al_r0_r4_2866"}};
1099
1100// These headers each contain an array of `TestResult` with the reference output
1101// values. The reference arrays are names `kReference{mnemonic}`.
1102#include "aarch32/traces/assembler-cond-rd-rn-operand-imm12-add-t32.h"
1103#include "aarch32/traces/assembler-cond-rd-rn-operand-imm12-addw-t32.h"
1104#include "aarch32/traces/assembler-cond-rd-rn-operand-imm12-sub-t32.h"
1105#include "aarch32/traces/assembler-cond-rd-rn-operand-imm12-subw-t32.h"
1106
1107
1108// The maximum number of errors to report in detail for each test.
1109const unsigned kErrorReportLimit = 8;
1110
1111typedef void (MacroAssembler::*Fn)(Condition cond,
1112                                   Register rd,
1113                                   Register rn,
1114                                   const Operand& op);
1115
1116void TestHelper(Fn instruction,
1117                const char* mnemonic,
1118                const TestResult reference[]) {
1119  unsigned total_error_count = 0;
1120  MacroAssembler masm(BUF_SIZE);
1121
1122  masm.UseT32();
1123
1124  for (unsigned i = 0; i < ARRAY_SIZE(kTests); i++) {
1125    // Values to pass to the macro-assembler.
1126    Condition cond = kTests[i].operands.cond;
1127    Register rd = kTests[i].operands.rd;
1128    Register rn = kTests[i].operands.rn;
1129    int32_t immediate = kTests[i].operands.immediate;
1130    Operand op(immediate);
1131
1132    int32_t start = masm.GetCursorOffset();
1133    {
1134      // We never generate more that 4 bytes, as IT instructions are only
1135      // allowed for narrow encodings.
1136      ExactAssemblyScope scope(&masm, 4, ExactAssemblyScope::kMaximumSize);
1137      if (kTests[i].in_it_block) {
1138        masm.it(kTests[i].it_condition);
1139      }
1140      (masm.*instruction)(cond, rd, rn, op);
1141    }
1142    int32_t end = masm.GetCursorOffset();
1143
1144    const byte* result_ptr =
1145        masm.GetBuffer()->GetOffsetAddress<const byte*>(start);
1146    VIXL_ASSERT(start < end);
1147    uint32_t result_size = end - start;
1148
1149    if (Test::generate_test_trace()) {
1150      // Print the result bytes.
1151      printf("const byte kInstruction_%s_%s[] = {\n",
1152             mnemonic,
1153             kTests[i].identifier);
1154      for (uint32_t j = 0; j < result_size; j++) {
1155        if (j == 0) {
1156          printf("  0x%02" PRIx8, result_ptr[j]);
1157        } else {
1158          printf(", 0x%02" PRIx8, result_ptr[j]);
1159        }
1160      }
1161      // This comment is meant to be used by external tools to validate
1162      // the encoding. We can parse the comment to figure out what
1163      // instruction this corresponds to.
1164      if (kTests[i].in_it_block) {
1165        printf(" // It %s; %s %s\n};\n",
1166               kTests[i].it_condition.GetName(),
1167               mnemonic,
1168               kTests[i].operands_description);
1169      } else {
1170        printf(" // %s %s\n};\n", mnemonic, kTests[i].operands_description);
1171      }
1172    } else {
1173      // Check we've emitted the exact same encoding as present in the
1174      // trace file. Only print up to `kErrorReportLimit` errors.
1175      if (((result_size != reference[i].size) ||
1176           (memcmp(result_ptr, reference[i].encoding, reference[i].size) !=
1177            0)) &&
1178          (++total_error_count <= kErrorReportLimit)) {
1179        printf("Error when testing \"%s\" with operands \"%s\":\n",
1180               mnemonic,
1181               kTests[i].operands_description);
1182        printf("  Expected: ");
1183        for (uint32_t j = 0; j < reference[i].size; j++) {
1184          if (j == 0) {
1185            printf("0x%02" PRIx8, reference[i].encoding[j]);
1186          } else {
1187            printf(", 0x%02" PRIx8, reference[i].encoding[j]);
1188          }
1189        }
1190        printf("\n");
1191        printf("  Found:    ");
1192        for (uint32_t j = 0; j < result_size; j++) {
1193          if (j == 0) {
1194            printf("0x%02" PRIx8, result_ptr[j]);
1195          } else {
1196            printf(", 0x%02" PRIx8, result_ptr[j]);
1197          }
1198        }
1199        printf("\n");
1200      }
1201    }
1202  }
1203
1204  masm.FinalizeCode();
1205
1206  if (Test::generate_test_trace()) {
1207    // Finalize the trace file by writing the final `TestResult` array
1208    // which links all generated instruction encodings.
1209    printf("const TestResult kReference%s[] = {\n", mnemonic);
1210    for (unsigned i = 0; i < ARRAY_SIZE(kTests); i++) {
1211      printf("  {\n");
1212      printf("    ARRAY_SIZE(kInstruction_%s_%s),\n",
1213             mnemonic,
1214             kTests[i].identifier);
1215      printf("    kInstruction_%s_%s,\n", mnemonic, kTests[i].identifier);
1216      printf("  },\n");
1217    }
1218    printf("};\n");
1219  } else {
1220    if (total_error_count > kErrorReportLimit) {
1221      printf("%u other errors follow.\n",
1222             total_error_count - kErrorReportLimit);
1223    }
1224    // Crash if the test failed.
1225    VIXL_CHECK(total_error_count == 0);
1226  }
1227}
1228
1229// Instantiate tests for each instruction in the list.
1230#define TEST(mnemonic)                                                         \
1231  void Test_##mnemonic() {                                                     \
1232    TestHelper(&MacroAssembler::mnemonic, #mnemonic, kReference##mnemonic);    \
1233  }                                                                            \
1234  Test test_##mnemonic("AARCH32_ASSEMBLER_COND_RD_RN_OPERAND_IMM12_" #mnemonic \
1235                       "_T32",                                                 \
1236                       &Test_##mnemonic);
1237FOREACH_INSTRUCTION(TEST)
1238#undef TEST
1239
1240}  // namespace
1241#endif
1242
1243}  // namespace aarch32
1244}  // namespace vixl
1245