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