1 /// @file xed-encoder-0.c
2 
3 // This file was automatically generated.
4 // Do not edit this file.
5 
6 /*BEGIN_LEGAL
7 
8 Copyright (c) 2018 Intel Corporation
9 
10   Licensed under the Apache License, Version 2.0 (the "License");
11   you may not use this file except in compliance with the License.
12   You may obtain a copy of the License at
13 
14       http://www.apache.org/licenses/LICENSE-2.0
15 
16   Unless required by applicable law or agreed to in writing, software
17   distributed under the License is distributed on an "AS IS" BASIS,
18   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19   See the License for the specific language governing permissions and
20   limitations under the License.
21 
22 END_LEGAL */
23 #include "xed-internal-header.h"
24 #include "xed-encoder.h"
25 #include "xed-encode-private.h"
26 #include "xed-enc-operand-lu.h"
27 #include "xed-operand-accessors.h"
xed_encode_nonterminal_VMODRM_XMM_EMIT(xed_encoder_request_t * xes)28 xed_bool_t xed_encode_nonterminal_VMODRM_XMM_EMIT(xed_encoder_request_t* xes)
29 {
30 xed_bool_t okay;
31 okay = xed_encode_nonterminal_VSIB_ENC_EMIT(xes);
32 if (!okay) return 0;
33 okay = xed_encode_nonterminal_DISP_NT_EMIT(xes);
34 if (!okay) return 0;
35 return 1;
36 }
xed_encode_nonterminal_UISA_VMODRM_ZMM_EMIT(xed_encoder_request_t * xes)37 xed_bool_t xed_encode_nonterminal_UISA_VMODRM_ZMM_EMIT(xed_encoder_request_t* xes)
38 {
39 xed_bool_t okay;
40 okay = xed_encode_nonterminal_VSIB_ENC_EMIT(xes);
41 if (!okay) return 0;
42 okay = xed_encode_nonterminal_DISP_NT_EMIT(xes);
43 if (!okay) return 0;
44 return 1;
45 }
xed_encode_nonterminal_NEWVEX3_ENC_EMIT(xed_encoder_request_t * xes)46 xed_bool_t xed_encode_nonterminal_NEWVEX3_ENC_EMIT(xed_encoder_request_t* xes)
47 {
48 xed_bool_t okay;
49 okay = xed_encode_nonterminal_VEX_TYPE_ENC_EMIT(xes);
50 if (!okay) return 0;
51 okay = xed_encode_nonterminal_VEX_REXR_ENC_EMIT(xes);
52 if (!okay) return 0;
53 okay = xed_encode_nonterminal_VEX_REXXB_ENC_EMIT(xes);
54 if (!okay) return 0;
55 okay = xed_encode_nonterminal_VEX_MAP_ENC_EMIT(xes);
56 if (!okay) return 0;
57 okay = xed_encode_nonterminal_VEX_REG_ENC_EMIT(xes);
58 if (!okay) return 0;
59 okay = xed_encode_nonterminal_VEX_ESCVL_ENC_EMIT(xes);
60 if (!okay) return 0;
61 return 1;
62 }
xed_encode_nonterminal_XOP_ENC_BIND(xed_encoder_request_t * xes)63 xed_bool_t xed_encode_nonterminal_XOP_ENC_BIND(xed_encoder_request_t* xes)
64 {
65 xed_bool_t okay;
66 okay = xed_encode_nonterminal_XOP_TYPE_ENC_BIND(xes);
67 if (!okay) return 0;
68 okay = xed_encode_nonterminal_VEX_REXR_ENC_BIND(xes);
69 if (!okay) return 0;
70 okay = xed_encode_nonterminal_XOP_REXXB_ENC_BIND(xes);
71 if (!okay) return 0;
72 okay = xed_encode_nonterminal_XOP_MAP_ENC_BIND(xes);
73 if (!okay) return 0;
74 okay = xed_encode_nonterminal_VEX_REG_ENC_BIND(xes);
75 if (!okay) return 0;
76 okay = xed_encode_nonterminal_VEX_ESCVL_ENC_BIND(xes);
77 if (!okay) return 0;
78 return 1;
79 }
xed_encode_nonterminal_MODRM_BIND(xed_encoder_request_t * xes)80 xed_bool_t xed_encode_nonterminal_MODRM_BIND(xed_encoder_request_t* xes)
81 {
82 xed_bool_t okay;
83 okay = xed_encode_nonterminal_SIB_REQUIRED_ENCODE_BIND(xes);
84 if (!okay) return 0;
85 okay = xed_encode_nonterminal_SIBSCALE_ENCODE_BIND(xes);
86 if (!okay) return 0;
87 okay = xed_encode_nonterminal_SIBINDEX_ENCODE_BIND(xes);
88 if (!okay) return 0;
89 okay = xed_encode_nonterminal_SIBBASE_ENCODE_BIND(xes);
90 if (!okay) return 0;
91 okay = xed_encode_nonterminal_MODRM_RM_ENCODE_BIND(xes);
92 if (!okay) return 0;
93 okay = xed_encode_nonterminal_MODRM_MOD_ENCODE_BIND(xes);
94 if (!okay) return 0;
95 okay = xed_encode_nonterminal_SEGMENT_DEFAULT_ENCODE_BIND(xes);
96 if (!okay) return 0;
97 okay = xed_encode_nonterminal_SEGMENT_ENCODE_BIND(xes);
98 if (!okay) return 0;
99 okay = xed_encode_nonterminal_SIB_NT_BIND(xes);
100 if (!okay) return 0;
101 okay = xed_encode_nonterminal_DISP_NT_BIND(xes);
102 if (!okay) return 0;
103 return 1;
104 }
xed_encode_nonterminal_UISA_VMODRM_ZMM_BIND(xed_encoder_request_t * xes)105 xed_bool_t xed_encode_nonterminal_UISA_VMODRM_ZMM_BIND(xed_encoder_request_t* xes)
106 {
107 xed_bool_t okay;
108 okay = xed_encode_nonterminal_VMODRM_MOD_ENCODE_BIND(xes);
109 if (!okay) return 0;
110 okay = xed_encode_nonterminal_VSIB_ENC_BASE_BIND(xes);
111 if (!okay) return 0;
112 okay = xed_encode_nonterminal_UISA_ENC_INDEX_ZMM_BIND(xes);
113 if (!okay) return 0;
114 okay = xed_encode_nonterminal_VSIB_ENC_SCALE_BIND(xes);
115 if (!okay) return 0;
116 okay = xed_encode_nonterminal_VSIB_ENC_BIND(xes);
117 if (!okay) return 0;
118 okay = xed_encode_nonterminal_SEGMENT_DEFAULT_ENCODE_BIND(xes);
119 if (!okay) return 0;
120 okay = xed_encode_nonterminal_SEGMENT_ENCODE_BIND(xes);
121 if (!okay) return 0;
122 okay = xed_encode_nonterminal_DISP_NT_BIND(xes);
123 if (!okay) return 0;
124 return 1;
125 }
xed_encode_nonterminal_NEWVEX_ENC_EMIT(xed_encoder_request_t * xes)126 xed_bool_t xed_encode_nonterminal_NEWVEX_ENC_EMIT(xed_encoder_request_t* xes)
127 {
128 xed_bool_t okay;
129 okay = xed_encode_nonterminal_VEX_TYPE_ENC_EMIT(xes);
130 if (!okay) return 0;
131 okay = xed_encode_nonterminal_VEX_REXR_ENC_EMIT(xes);
132 if (!okay) return 0;
133 okay = xed_encode_nonterminal_VEX_REXXB_ENC_EMIT(xes);
134 if (!okay) return 0;
135 okay = xed_encode_nonterminal_VEX_MAP_ENC_EMIT(xes);
136 if (!okay) return 0;
137 okay = xed_encode_nonterminal_VEX_REG_ENC_EMIT(xes);
138 if (!okay) return 0;
139 okay = xed_encode_nonterminal_VEX_ESCVL_ENC_EMIT(xes);
140 if (!okay) return 0;
141 return 1;
142 }
xed_encode_nonterminal_UISA_VMODRM_YMM_BIND(xed_encoder_request_t * xes)143 xed_bool_t xed_encode_nonterminal_UISA_VMODRM_YMM_BIND(xed_encoder_request_t* xes)
144 {
145 xed_bool_t okay;
146 okay = xed_encode_nonterminal_VMODRM_MOD_ENCODE_BIND(xes);
147 if (!okay) return 0;
148 okay = xed_encode_nonterminal_VSIB_ENC_BASE_BIND(xes);
149 if (!okay) return 0;
150 okay = xed_encode_nonterminal_UISA_ENC_INDEX_YMM_BIND(xes);
151 if (!okay) return 0;
152 okay = xed_encode_nonterminal_VSIB_ENC_SCALE_BIND(xes);
153 if (!okay) return 0;
154 okay = xed_encode_nonterminal_VSIB_ENC_BIND(xes);
155 if (!okay) return 0;
156 okay = xed_encode_nonterminal_SEGMENT_DEFAULT_ENCODE_BIND(xes);
157 if (!okay) return 0;
158 okay = xed_encode_nonterminal_SEGMENT_ENCODE_BIND(xes);
159 if (!okay) return 0;
160 okay = xed_encode_nonterminal_DISP_NT_BIND(xes);
161 if (!okay) return 0;
162 return 1;
163 }
xed_encode_nonterminal_VMODRM_YMM_EMIT(xed_encoder_request_t * xes)164 xed_bool_t xed_encode_nonterminal_VMODRM_YMM_EMIT(xed_encoder_request_t* xes)
165 {
166 xed_bool_t okay;
167 okay = xed_encode_nonterminal_VSIB_ENC_EMIT(xes);
168 if (!okay) return 0;
169 okay = xed_encode_nonterminal_DISP_NT_EMIT(xes);
170 if (!okay) return 0;
171 return 1;
172 }
xed_encode_nonterminal_XOP_ENC_EMIT(xed_encoder_request_t * xes)173 xed_bool_t xed_encode_nonterminal_XOP_ENC_EMIT(xed_encoder_request_t* xes)
174 {
175 xed_bool_t okay;
176 okay = xed_encode_nonterminal_XOP_TYPE_ENC_EMIT(xes);
177 if (!okay) return 0;
178 okay = xed_encode_nonterminal_VEX_REXR_ENC_EMIT(xes);
179 if (!okay) return 0;
180 okay = xed_encode_nonterminal_XOP_REXXB_ENC_EMIT(xes);
181 if (!okay) return 0;
182 okay = xed_encode_nonterminal_XOP_MAP_ENC_EMIT(xes);
183 if (!okay) return 0;
184 okay = xed_encode_nonterminal_VEX_REG_ENC_EMIT(xes);
185 if (!okay) return 0;
186 okay = xed_encode_nonterminal_VEX_ESCVL_ENC_EMIT(xes);
187 if (!okay) return 0;
188 return 1;
189 }
xed_encode_nonterminal_UISA_VMODRM_XMM_BIND(xed_encoder_request_t * xes)190 xed_bool_t xed_encode_nonterminal_UISA_VMODRM_XMM_BIND(xed_encoder_request_t* xes)
191 {
192 xed_bool_t okay;
193 okay = xed_encode_nonterminal_VMODRM_MOD_ENCODE_BIND(xes);
194 if (!okay) return 0;
195 okay = xed_encode_nonterminal_VSIB_ENC_BASE_BIND(xes);
196 if (!okay) return 0;
197 okay = xed_encode_nonterminal_UISA_ENC_INDEX_XMM_BIND(xes);
198 if (!okay) return 0;
199 okay = xed_encode_nonterminal_VSIB_ENC_SCALE_BIND(xes);
200 if (!okay) return 0;
201 okay = xed_encode_nonterminal_VSIB_ENC_BIND(xes);
202 if (!okay) return 0;
203 okay = xed_encode_nonterminal_SEGMENT_DEFAULT_ENCODE_BIND(xes);
204 if (!okay) return 0;
205 okay = xed_encode_nonterminal_SEGMENT_ENCODE_BIND(xes);
206 if (!okay) return 0;
207 okay = xed_encode_nonterminal_DISP_NT_BIND(xes);
208 if (!okay) return 0;
209 return 1;
210 }
xed_encode_nonterminal_ISA_ENCODE(xed_encoder_request_t * xes)211 xed_bool_t xed_encode_nonterminal_ISA_ENCODE(xed_encoder_request_t* xes)
212 {
213 xed_bool_t okay;
214 okay = xed_encode_nonterminal_ISA_BINDINGS(xes);
215 if (!okay) return 0;
216 okay = xed_encode_nonterminal_ISA_EMIT(xes);
217 if (!okay) return 0;
218 return 1;
219 }
xed_encode_nonterminal_UISA_VMODRM_YMM_EMIT(xed_encoder_request_t * xes)220 xed_bool_t xed_encode_nonterminal_UISA_VMODRM_YMM_EMIT(xed_encoder_request_t* xes)
221 {
222 xed_bool_t okay;
223 okay = xed_encode_nonterminal_VSIB_ENC_EMIT(xes);
224 if (!okay) return 0;
225 okay = xed_encode_nonterminal_DISP_NT_EMIT(xes);
226 if (!okay) return 0;
227 return 1;
228 }
xed_encode_nonterminal_EVEX_ENC_BIND(xed_encoder_request_t * xes)229 xed_bool_t xed_encode_nonterminal_EVEX_ENC_BIND(xed_encoder_request_t* xes)
230 {
231 xed_bool_t okay;
232 okay = xed_encode_nonterminal_EVEX_62_REXR_ENC_BIND(xes);
233 if (!okay) return 0;
234 okay = xed_encode_nonterminal_EVEX_REXX_ENC_BIND(xes);
235 if (!okay) return 0;
236 okay = xed_encode_nonterminal_EVEX_REXB_ENC_BIND(xes);
237 if (!okay) return 0;
238 okay = xed_encode_nonterminal_EVEX_REXRR_ENC_BIND(xes);
239 if (!okay) return 0;
240 okay = xed_encode_nonterminal_EVEX_MAP_ENC_BIND(xes);
241 if (!okay) return 0;
242 okay = xed_encode_nonterminal_EVEX_REXW_VVVV_ENC_BIND(xes);
243 if (!okay) return 0;
244 okay = xed_encode_nonterminal_EVEX_UPP_ENC_BIND(xes);
245 if (!okay) return 0;
246 okay = xed_encode_nonterminal_EVEX_LL_ENC_BIND(xes);
247 if (!okay) return 0;
248 okay = xed_encode_nonterminal_AVX512_EVEX_BYTE3_ENC_BIND(xes);
249 if (!okay) return 0;
250 return 1;
251 }
xed_encode_nonterminal_NEWVEX3_ENC_BIND(xed_encoder_request_t * xes)252 xed_bool_t xed_encode_nonterminal_NEWVEX3_ENC_BIND(xed_encoder_request_t* xes)
253 {
254 xed_bool_t okay;
255 okay = xed_encode_nonterminal_VEX_TYPE_ENC_BIND(xes);
256 if (!okay) return 0;
257 okay = xed_encode_nonterminal_VEX_REXR_ENC_BIND(xes);
258 if (!okay) return 0;
259 okay = xed_encode_nonterminal_VEX_REXXB_ENC_BIND(xes);
260 if (!okay) return 0;
261 okay = xed_encode_nonterminal_VEX_MAP_ENC_BIND(xes);
262 if (!okay) return 0;
263 okay = xed_encode_nonterminal_VEX_REG_ENC_BIND(xes);
264 if (!okay) return 0;
265 okay = xed_encode_nonterminal_VEX_ESCVL_ENC_BIND(xes);
266 if (!okay) return 0;
267 return 1;
268 }
xed_encode_nonterminal_ISA_EMIT(xed_encoder_request_t * xes)269 xed_bool_t xed_encode_nonterminal_ISA_EMIT(xed_encoder_request_t* xes)
270 {
271 xed_bool_t okay;
272 okay = xed_encode_nonterminal_PREFIX_ENC_EMIT(xes);
273 if (!okay) return 0;
274 okay = xed_encode_nonterminal_VEXED_REX_EMIT(xes);
275 if (!okay) return 0;
276 okay = xed_encode_nonterminal_INSTRUCTIONS_EMIT(xes);
277 if (!okay) return 0;
278 return 1;
279 }
xed_encode_nonterminal_NEWVEX_ENC_BIND(xed_encoder_request_t * xes)280 xed_bool_t xed_encode_nonterminal_NEWVEX_ENC_BIND(xed_encoder_request_t* xes)
281 {
282 xed_bool_t okay;
283 okay = xed_encode_nonterminal_VEX_TYPE_ENC_BIND(xes);
284 if (!okay) return 0;
285 okay = xed_encode_nonterminal_VEX_REXR_ENC_BIND(xes);
286 if (!okay) return 0;
287 okay = xed_encode_nonterminal_VEX_REXXB_ENC_BIND(xes);
288 if (!okay) return 0;
289 okay = xed_encode_nonterminal_VEX_MAP_ENC_BIND(xes);
290 if (!okay) return 0;
291 okay = xed_encode_nonterminal_VEX_REG_ENC_BIND(xes);
292 if (!okay) return 0;
293 okay = xed_encode_nonterminal_VEX_ESCVL_ENC_BIND(xes);
294 if (!okay) return 0;
295 return 1;
296 }
xed_encode_nonterminal_MODRM_EMIT(xed_encoder_request_t * xes)297 xed_bool_t xed_encode_nonterminal_MODRM_EMIT(xed_encoder_request_t* xes)
298 {
299 xed_bool_t okay;
300 okay = xed_encode_nonterminal_SIB_NT_EMIT(xes);
301 if (!okay) return 0;
302 okay = xed_encode_nonterminal_DISP_NT_EMIT(xes);
303 if (!okay) return 0;
304 return 1;
305 }
xed_encode_nonterminal_UISA_VMODRM_XMM_EMIT(xed_encoder_request_t * xes)306 xed_bool_t xed_encode_nonterminal_UISA_VMODRM_XMM_EMIT(xed_encoder_request_t* xes)
307 {
308 xed_bool_t okay;
309 okay = xed_encode_nonterminal_VSIB_ENC_EMIT(xes);
310 if (!okay) return 0;
311 okay = xed_encode_nonterminal_DISP_NT_EMIT(xes);
312 if (!okay) return 0;
313 return 1;
314 }
xed_encode_nonterminal_VMODRM_YMM_BIND(xed_encoder_request_t * xes)315 xed_bool_t xed_encode_nonterminal_VMODRM_YMM_BIND(xed_encoder_request_t* xes)
316 {
317 xed_bool_t okay;
318 okay = xed_encode_nonterminal_VMODRM_MOD_ENCODE_BIND(xes);
319 if (!okay) return 0;
320 okay = xed_encode_nonterminal_VSIB_ENC_BASE_BIND(xes);
321 if (!okay) return 0;
322 okay = xed_encode_nonterminal_VSIB_ENC_INDEX_YMM_BIND(xes);
323 if (!okay) return 0;
324 okay = xed_encode_nonterminal_VSIB_ENC_SCALE_BIND(xes);
325 if (!okay) return 0;
326 okay = xed_encode_nonterminal_VSIB_ENC_BIND(xes);
327 if (!okay) return 0;
328 okay = xed_encode_nonterminal_SEGMENT_DEFAULT_ENCODE_BIND(xes);
329 if (!okay) return 0;
330 okay = xed_encode_nonterminal_SEGMENT_ENCODE_BIND(xes);
331 if (!okay) return 0;
332 okay = xed_encode_nonterminal_DISP_NT_BIND(xes);
333 if (!okay) return 0;
334 return 1;
335 }
xed_encode_nonterminal_EVEX_ENC_EMIT(xed_encoder_request_t * xes)336 xed_bool_t xed_encode_nonterminal_EVEX_ENC_EMIT(xed_encoder_request_t* xes)
337 {
338 xed_bool_t okay;
339 okay = xed_encode_nonterminal_EVEX_62_REXR_ENC_EMIT(xes);
340 if (!okay) return 0;
341 okay = xed_encode_nonterminal_EVEX_REXX_ENC_EMIT(xes);
342 if (!okay) return 0;
343 okay = xed_encode_nonterminal_EVEX_REXB_ENC_EMIT(xes);
344 if (!okay) return 0;
345 okay = xed_encode_nonterminal_EVEX_REXRR_ENC_EMIT(xes);
346 if (!okay) return 0;
347 okay = xed_encode_nonterminal_EVEX_MAP_ENC_EMIT(xes);
348 if (!okay) return 0;
349 okay = xed_encode_nonterminal_EVEX_REXW_VVVV_ENC_EMIT(xes);
350 if (!okay) return 0;
351 okay = xed_encode_nonterminal_EVEX_UPP_ENC_EMIT(xes);
352 if (!okay) return 0;
353 okay = xed_encode_nonterminal_EVEX_LL_ENC_EMIT(xes);
354 if (!okay) return 0;
355 okay = xed_encode_nonterminal_AVX512_EVEX_BYTE3_ENC_EMIT(xes);
356 if (!okay) return 0;
357 return 1;
358 }
xed_encode_nonterminal_ISA_BINDINGS(xed_encoder_request_t * xes)359 xed_bool_t xed_encode_nonterminal_ISA_BINDINGS(xed_encoder_request_t* xes)
360 {
361 xed_bool_t okay;
362 okay = xed_encode_nonterminal_FIXUP_EOSZ_ENC_BIND(xes);
363 if (!okay) return 0;
364 okay = xed_encode_nonterminal_FIXUP_EASZ_ENC_BIND(xes);
365 if (!okay) return 0;
366 okay = xed_encode_nonterminal_ASZ_NONTERM_BIND(xes);
367 if (!okay) return 0;
368 okay = xed_encode_nonterminal_INSTRUCTIONS_BIND(xes);
369 if (!okay) return 0;
370 okay = xed_encode_nonterminal_OSZ_NONTERM_ENC_BIND(xes);
371 if (!okay) return 0;
372 okay = xed_encode_nonterminal_PREFIX_ENC_BIND(xes);
373 if (!okay) return 0;
374 okay = xed_encode_nonterminal_VEXED_REX_BIND(xes);
375 if (!okay) return 0;
376 return 1;
377 }
xed_encode_nonterminal_VMODRM_XMM_BIND(xed_encoder_request_t * xes)378 xed_bool_t xed_encode_nonterminal_VMODRM_XMM_BIND(xed_encoder_request_t* xes)
379 {
380 xed_bool_t okay;
381 okay = xed_encode_nonterminal_VMODRM_MOD_ENCODE_BIND(xes);
382 if (!okay) return 0;
383 okay = xed_encode_nonterminal_VSIB_ENC_BASE_BIND(xes);
384 if (!okay) return 0;
385 okay = xed_encode_nonterminal_VSIB_ENC_INDEX_XMM_BIND(xes);
386 if (!okay) return 0;
387 okay = xed_encode_nonterminal_VSIB_ENC_SCALE_BIND(xes);
388 if (!okay) return 0;
389 okay = xed_encode_nonterminal_VSIB_ENC_BIND(xes);
390 if (!okay) return 0;
391 okay = xed_encode_nonterminal_SEGMENT_DEFAULT_ENCODE_BIND(xes);
392 if (!okay) return 0;
393 okay = xed_encode_nonterminal_SEGMENT_ENCODE_BIND(xes);
394 if (!okay) return 0;
395 okay = xed_encode_nonterminal_DISP_NT_BIND(xes);
396 if (!okay) return 0;
397 return 1;
398 }
xed_encode_nonterminal_NELEM_TUPLE1_SUBDWORD_BIND(xed_encoder_request_t * xes)399 xed_uint32_t xed_encode_nonterminal_NELEM_TUPLE1_SUBDWORD_BIND(xed_encoder_request_t* xes)
400 {
401 return 1;
402 (void)xes;
403 return 1;
404 }
xed_encode_nonterminal_UISA_ENC_INDEX_XMM_BIND(xed_encoder_request_t * xes)405 xed_uint32_t xed_encode_nonterminal_UISA_ENC_INDEX_XMM_BIND(xed_encoder_request_t* xes)
406 {
407 typedef struct { xed_int8_t rexx ;xed_int8_t sibindex ;xed_int8_t vexdest4;} lu_entry_t;
408 static const lu_entry_t lu_table[32] = {
409 /*h(178)=0 INDEX=XED_REG_XMM0  ->	FB VEXDEST4=0 value=0x0 	FB REXX=0 value=0x0 	FB SIBINDEX=0 value=0x0*/ {0,0,0},
410 /*h(179)=1 INDEX=XED_REG_XMM1  ->	FB VEXDEST4=0 value=0x0 	FB REXX=0 value=0x0 	FB SIBINDEX=1 value=0x1*/ {0,1,0},
411 /*h(180)=2 INDEX=XED_REG_XMM2  ->	FB VEXDEST4=0 value=0x0 	FB REXX=0 value=0x0 	FB SIBINDEX=2 value=0x2*/ {0,2,0},
412 /*h(181)=3 INDEX=XED_REG_XMM3  ->	FB VEXDEST4=0 value=0x0 	FB REXX=0 value=0x0 	FB SIBINDEX=3 value=0x3*/ {0,3,0},
413 /*h(182)=4 INDEX=XED_REG_XMM4  ->	FB VEXDEST4=0 value=0x0 	FB REXX=0 value=0x0 	FB SIBINDEX=4 value=0x4*/ {0,4,0},
414 /*h(183)=5 INDEX=XED_REG_XMM5  ->	FB VEXDEST4=0 value=0x0 	FB REXX=0 value=0x0 	FB SIBINDEX=5 value=0x5*/ {0,5,0},
415 /*h(184)=6 INDEX=XED_REG_XMM6  ->	FB VEXDEST4=0 value=0x0 	FB REXX=0 value=0x0 	FB SIBINDEX=6 value=0x6*/ {0,6,0},
416 /*h(185)=7 INDEX=XED_REG_XMM7  ->	FB VEXDEST4=0 value=0x0 	FB REXX=0 value=0x0 	FB SIBINDEX=7 value=0x7*/ {0,7,0},
417 /*h(186)=8 INDEX=XED_REG_XMM8  ->	FB VEXDEST4=0 value=0x0 	FB REXX=1 value=0x1 	FB SIBINDEX=0 value=0x0*/ {1,0,0},
418 /*h(187)=9 INDEX=XED_REG_XMM9  ->	FB VEXDEST4=0 value=0x0 	FB REXX=1 value=0x1 	FB SIBINDEX=1 value=0x1*/ {1,1,0},
419 /*h(188)=10 INDEX=XED_REG_XMM10  ->	FB VEXDEST4=0 value=0x0 	FB REXX=1 value=0x1 	FB SIBINDEX=2 value=0x2*/ {1,2,0},
420 /*h(189)=11 INDEX=XED_REG_XMM11  ->	FB VEXDEST4=0 value=0x0 	FB REXX=1 value=0x1 	FB SIBINDEX=3 value=0x3*/ {1,3,0},
421 /*h(190)=12 INDEX=XED_REG_XMM12  ->	FB VEXDEST4=0 value=0x0 	FB REXX=1 value=0x1 	FB SIBINDEX=4 value=0x4*/ {1,4,0},
422 /*h(191)=13 INDEX=XED_REG_XMM13  ->	FB VEXDEST4=0 value=0x0 	FB REXX=1 value=0x1 	FB SIBINDEX=5 value=0x5*/ {1,5,0},
423 /*h(192)=14 INDEX=XED_REG_XMM14  ->	FB VEXDEST4=0 value=0x0 	FB REXX=1 value=0x1 	FB SIBINDEX=6 value=0x6*/ {1,6,0},
424 /*h(193)=15 INDEX=XED_REG_XMM15  ->	FB VEXDEST4=0 value=0x0 	FB REXX=1 value=0x1 	FB SIBINDEX=7 value=0x7*/ {1,7,0},
425 /*h(194)=16 INDEX=XED_REG_XMM16  ->	FB VEXDEST4=1 value=0x1 	FB REXX=0 value=0x0 	FB SIBINDEX=0 value=0x0*/ {0,0,1},
426 /*h(195)=17 INDEX=XED_REG_XMM17  ->	FB VEXDEST4=1 value=0x1 	FB REXX=0 value=0x0 	FB SIBINDEX=1 value=0x1*/ {0,1,1},
427 /*h(196)=18 INDEX=XED_REG_XMM18  ->	FB VEXDEST4=1 value=0x1 	FB REXX=0 value=0x0 	FB SIBINDEX=2 value=0x2*/ {0,2,1},
428 /*h(197)=19 INDEX=XED_REG_XMM19  ->	FB VEXDEST4=1 value=0x1 	FB REXX=0 value=0x0 	FB SIBINDEX=3 value=0x3*/ {0,3,1},
429 /*h(198)=20 INDEX=XED_REG_XMM20  ->	FB VEXDEST4=1 value=0x1 	FB REXX=0 value=0x0 	FB SIBINDEX=4 value=0x4*/ {0,4,1},
430 /*h(199)=21 INDEX=XED_REG_XMM21  ->	FB VEXDEST4=1 value=0x1 	FB REXX=0 value=0x0 	FB SIBINDEX=5 value=0x5*/ {0,5,1},
431 /*h(200)=22 INDEX=XED_REG_XMM22  ->	FB VEXDEST4=1 value=0x1 	FB REXX=0 value=0x0 	FB SIBINDEX=6 value=0x6*/ {0,6,1},
432 /*h(201)=23 INDEX=XED_REG_XMM23  ->	FB VEXDEST4=1 value=0x1 	FB REXX=0 value=0x0 	FB SIBINDEX=7 value=0x7*/ {0,7,1},
433 /*h(202)=24 INDEX=XED_REG_XMM24  ->	FB VEXDEST4=1 value=0x1 	FB REXX=1 value=0x1 	FB SIBINDEX=0 value=0x0*/ {1,0,1},
434 /*h(203)=25 INDEX=XED_REG_XMM25  ->	FB VEXDEST4=1 value=0x1 	FB REXX=1 value=0x1 	FB SIBINDEX=1 value=0x1*/ {1,1,1},
435 /*h(204)=26 INDEX=XED_REG_XMM26  ->	FB VEXDEST4=1 value=0x1 	FB REXX=1 value=0x1 	FB SIBINDEX=2 value=0x2*/ {1,2,1},
436 /*h(205)=27 INDEX=XED_REG_XMM27  ->	FB VEXDEST4=1 value=0x1 	FB REXX=1 value=0x1 	FB SIBINDEX=3 value=0x3*/ {1,3,1},
437 /*h(206)=28 INDEX=XED_REG_XMM28  ->	FB VEXDEST4=1 value=0x1 	FB REXX=1 value=0x1 	FB SIBINDEX=4 value=0x4*/ {1,4,1},
438 /*h(207)=29 INDEX=XED_REG_XMM29  ->	FB VEXDEST4=1 value=0x1 	FB REXX=1 value=0x1 	FB SIBINDEX=5 value=0x5*/ {1,5,1},
439 /*h(208)=30 INDEX=XED_REG_XMM30  ->	FB VEXDEST4=1 value=0x1 	FB REXX=1 value=0x1 	FB SIBINDEX=6 value=0x6*/ {1,6,1},
440 /*h(209)=31 INDEX=XED_REG_XMM31  ->	FB VEXDEST4=1 value=0x1 	FB REXX=1 value=0x1 	FB SIBINDEX=7 value=0x7*/ {1,7,1}
441 };
442 xed_uint64_t key = 0;
443 xed_uint64_t hidx = 0;
444 key = xed_enc_lu_INDEX(xes);
445 hidx = key - 178;
446 if(hidx <= 31) {
447     xed3_operand_set_rexx(xes,lu_table[hidx].rexx);
448     xed3_operand_set_sibindex(xes,lu_table[hidx].sibindex);
449     xed3_operand_set_vexdest4(xes,lu_table[hidx].vexdest4);
450     return 1;
451 }
452 else{
453     return 0;
454 }
455 }
xed_encode_nonterminal_SIB_NT_BIND(xed_encoder_request_t * xes)456 xed_uint32_t xed_encode_nonterminal_SIB_NT_BIND(xed_encoder_request_t* xes)
457 {
458 typedef struct { xed_uint32_t emit;} lu_entry_t;
459 static const lu_entry_t lu_table[2] = {
460 /*h(0)=0 SIB=0  ->	nothing*/ {0},
461 /*h(1)=1 SIB=1 SIBBASE[bbb]=* SIBSCALE[ss]=* SIBINDEX[iii]=*  ->	emit ss_iii_bbb emit_type=letters nbits=8*/ {2}
462 };
463 xed_uint64_t key = 0;
464 xed_uint64_t hidx = 0;
465 key = xed_enc_lu_SIB(xes);
466 hidx = key - 0;
467 if(hidx <= 1) {
468     xed_encoder_request_iforms(xes)->x_SIB_NT=lu_table[hidx].emit;
469     return 1;
470 }
471 else{
472     return 0;
473 }
474 }
xed_encode_nonterminal_NELEM_EIGHTHMEM_BIND(xed_encoder_request_t * xes)475 xed_uint32_t xed_encode_nonterminal_NELEM_EIGHTHMEM_BIND(xed_encoder_request_t* xes)
476 {
477 return 1;
478 (void)xes;
479 return 1;
480 }
xed_encode_nonterminal_MODRM_MOD_EA32_DISP0_BIND(xed_encoder_request_t * xes)481 xed_uint32_t xed_encode_nonterminal_MODRM_MOD_EA32_DISP0_BIND(xed_encoder_request_t* xes)
482 {
483 typedef struct {xed_uint32_t key; xed_int8_t disp ;xed_int8_t disp_width ;xed_int8_t mod;} lu_entry_t;
484 static const lu_entry_t lu_table[24] = {
485 /*h(566)=0 BASE0=XED_REG_ESP MODE=1  ->	FB MOD=0 value=0x0*/ {566, -1,-1,0},
486 /*h(1075)=1 BASE0=XED_REG_ECX MODE=2  ->	FB MOD=0 value=0x0*/ {1075, -1,-1,0},
487 /*h(1080)=2 BASE0=XED_REG_ESI MODE=2  ->	FB MOD=0 value=0x0*/ {1080, -1,-1,0},
488 /*h(1085)=3 BASE0=XED_REG_R11D MODE=2  ->	FB MOD=0 value=0x0*/ {1085, -1,-1,0},
489 /*h(562)=4 BASE0=XED_REG_EAX MODE=1  ->	FB MOD=0 value=0x0*/ {562, -1,-1,0},
490 /*h(567)=5 BASE0=XED_REG_EBP MODE=1  ->	FB MOD=1 value=0x1 	FB DISP_WIDTH=8 value=0x8 	FB DISP=0 value=0x0*/ {567, 0,8,1},
491 /*h(1076)=6 BASE0=XED_REG_EDX MODE=2  ->	FB MOD=0 value=0x0*/ {1076, -1,-1,0},
492 /*h(1081)=7 BASE0=XED_REG_EDI MODE=2  ->	FB MOD=0 value=0x0*/ {1081, -1,-1,0},
493 /*h(1086)=8 BASE0=XED_REG_R12D MODE=2  ->	FB MOD=0 value=0x0*/ {1086, -1,-1,0},
494 /*h(563)=9 BASE0=XED_REG_ECX MODE=1  ->	FB MOD=0 value=0x0*/ {563, -1,-1,0},
495 /*h(568)=10 BASE0=XED_REG_ESI MODE=1  ->	FB MOD=0 value=0x0*/ {568, -1,-1,0},
496 /*h(1077)=11 BASE0=XED_REG_EBX MODE=2  ->	FB MOD=0 value=0x0*/ {1077, -1,-1,0},
497 /*h(1082)=12 BASE0=XED_REG_R8D MODE=2  ->	FB MOD=0 value=0x0*/ {1082, -1,-1,0},
498 /*h(1087)=13 BASE0=XED_REG_R13D MODE=2  ->	FB MOD=1 value=0x1 	FB DISP_WIDTH=8 value=0x8 	FB DISP=0 value=0x0*/ {1087, 0,8,1},
499 /*h(564)=14 BASE0=XED_REG_EDX MODE=1  ->	FB MOD=0 value=0x0*/ {564, -1,-1,0},
500 /*h(569)=15 BASE0=XED_REG_EDI MODE=1  ->	FB MOD=0 value=0x0*/ {569, -1,-1,0},
501 /*h(1078)=16 BASE0=XED_REG_ESP MODE=2  ->	FB MOD=0 value=0x0*/ {1078, -1,-1,0},
502 /*h(1083)=17 BASE0=XED_REG_R9D MODE=2  ->	FB MOD=0 value=0x0*/ {1083, -1,-1,0},
503 /*h(1088)=18 BASE0=XED_REG_R14D MODE=2  ->	FB MOD=0 value=0x0*/ {1088, -1,-1,0},
504 /*h(565)=19 BASE0=XED_REG_EBX MODE=1  ->	FB MOD=0 value=0x0*/ {565, -1,-1,0},
505 /*h(1074)=20 BASE0=XED_REG_EAX MODE=2  ->	FB MOD=0 value=0x0*/ {1074, -1,-1,0},
506 /*h(1079)=21 BASE0=XED_REG_EBP MODE=2  ->	FB MOD=1 value=0x1 	FB DISP_WIDTH=8 value=0x8 	FB DISP=0 value=0x0*/ {1079, 0,8,1},
507 /*h(1084)=22 BASE0=XED_REG_R10D MODE=2  ->	FB MOD=0 value=0x0*/ {1084, -1,-1,0},
508 /*h(1089)=23 BASE0=XED_REG_R15D MODE=2  ->	FB MOD=0 value=0x0*/ {1089, -1,-1,0}
509 };
510 xed_uint64_t key = 0;
511 xed_uint64_t hidx = 0;
512 key = xed_enc_lu_BASE0_MODE(xes);
513 hidx = ((5*key % 107) % 24);
514 if(lu_table[hidx].key == key) {
515     if(lu_table[hidx].disp >= 0) xed3_operand_set_disp(xes,lu_table[hidx].disp);
516     if(lu_table[hidx].disp_width >= 0) xed3_operand_set_disp_width(xes,lu_table[hidx].disp_width);
517     xed3_operand_set_mod(xes,lu_table[hidx].mod);
518     return 1;
519 }
520 else{
521     return 0;
522 }
523 }
xed_encode_nonterminal_OVERRIDE_SEG1_BIND(xed_encoder_request_t * xes)524 xed_uint32_t xed_encode_nonterminal_OVERRIDE_SEG1_BIND(xed_encoder_request_t* xes)
525 {
526 typedef struct {xed_uint32_t key; xed_int8_t seg_ovd;} lu_entry_t;
527 static const lu_entry_t lu_table[12] = {
528 /*h(0)=0 SEG1=@  ->	FB SEG_OVD=0 value=0x0*/ {0, 0},
529 /*h(149)=1 SEG1=XED_REG_ES  ->	FB SEG_OVD=3 value=0x3*/ {149, 3},
530 /*empty slot1 */ {0,0},
531 /*h(151)=3 SEG1=XED_REG_FS  ->	FB SEG_OVD=4 value=0x4*/ {151, 4},
532 /*empty slot1 */ {0,0},
533 /*h(148)=5 SEG1=XED_REG_DS  ->	FB SEG_OVD=0 value=0x0*/ {148, 0},
534 /*empty slot1 */ {0,0},
535 /*empty slot1 */ {0,0},
536 /*h(150)=8 SEG1=XED_REG_SS  ->	FB SEG_OVD=6 value=0x6*/ {150, 6},
537 /*empty slot1 */ {0,0},
538 /*h(147)=10 SEG1=XED_REG_CS  ->	FB SEG_OVD=1 value=0x1*/ {147, 1},
539 /*h(152)=11 SEG1=XED_REG_GS  ->	FB SEG_OVD=5 value=0x5*/ {152, 5}
540 };
541 xed_union64_t t, u;
542 xed_uint64_t key = 0;
543 xed_uint64_t hidx = 0;
544 key = xed_enc_lu_SEG1(xes);
545 hidx = (t.u64 = 2654435769  * key, u.u64 = t.s.lo32 * 12ULL, u.s.hi32);
546 if(lu_table[hidx].key == key) {
547     xed3_operand_set_seg_ovd(xes,lu_table[hidx].seg_ovd);
548     return 1;
549 }
550 else{
551     return 0;
552 }
553 }
xed_encode_nonterminal_OVERRIDE_SEG0_BIND(xed_encoder_request_t * xes)554 xed_uint32_t xed_encode_nonterminal_OVERRIDE_SEG0_BIND(xed_encoder_request_t* xes)
555 {
556 typedef struct {xed_uint32_t key; xed_int8_t seg_ovd;} lu_entry_t;
557 static const lu_entry_t lu_table[12] = {
558 /*h(0)=0 SEG0=@  ->	FB SEG_OVD=0 value=0x0*/ {0, 0},
559 /*h(149)=1 SEG0=XED_REG_ES  ->	FB SEG_OVD=3 value=0x3*/ {149, 3},
560 /*empty slot1 */ {0,0},
561 /*h(151)=3 SEG0=XED_REG_FS  ->	FB SEG_OVD=4 value=0x4*/ {151, 4},
562 /*empty slot1 */ {0,0},
563 /*h(148)=5 SEG0=XED_REG_DS  ->	FB SEG_OVD=0 value=0x0*/ {148, 0},
564 /*empty slot1 */ {0,0},
565 /*empty slot1 */ {0,0},
566 /*h(150)=8 SEG0=XED_REG_SS  ->	FB SEG_OVD=6 value=0x6*/ {150, 6},
567 /*empty slot1 */ {0,0},
568 /*h(147)=10 SEG0=XED_REG_CS  ->	FB SEG_OVD=1 value=0x1*/ {147, 1},
569 /*h(152)=11 SEG0=XED_REG_GS  ->	FB SEG_OVD=5 value=0x5*/ {152, 5}
570 };
571 xed_union64_t t, u;
572 xed_uint64_t key = 0;
573 xed_uint64_t hidx = 0;
574 key = xed_enc_lu_SEG0(xes);
575 hidx = (t.u64 = 2654435769  * key, u.u64 = t.s.lo32 * 12ULL, u.s.hi32);
576 if(lu_table[hidx].key == key) {
577     xed3_operand_set_seg_ovd(xes,lu_table[hidx].seg_ovd);
578     return 1;
579 }
580 else{
581     return 0;
582 }
583 }
xed_encode_nonterminal_SIBBASE_ENCODE_BIND(xed_encoder_request_t * xes)584 xed_uint32_t xed_encode_nonterminal_SIBBASE_ENCODE_BIND(xed_encoder_request_t* xes)
585 {
586 typedef struct { xed_nt_func_ptr_t ntptr0;} lu_entry_t;
587 static const lu_entry_t lu_table[2] = {
588 /*h(0)=0 SIB=0  ->	nothing*/ {0},
589 /*h(1)=1 SIB=1  ->	nt NT[SIBBASE_ENCODE_SIB1]*/ {xed_encode_nonterminal_SIBBASE_ENCODE_SIB1_BIND}
590 };
591 xed_uint64_t key = 0;
592 xed_uint64_t hidx = 0;
593 xed_uint64_t res = 1;
594 key = xed_enc_lu_SIB(xes);
595 hidx = key - 0;
596 if(hidx <= 1) {
597     if(lu_table[hidx].ntptr0 != 0) res=(*lu_table[hidx].ntptr0)(xes);
598     xed_encoder_request_iforms(xes)->x_SIBBASE_ENCODE=hidx+1;
599     return res;
600     return 1;
601 }
602 else{
603     return 0;
604 }
605 }
xed_encode_nonterminal_VEX_ESCVL_ENC_BIND(xed_encoder_request_t * xes)606 xed_uint32_t xed_encode_nonterminal_VEX_ESCVL_ENC_BIND(xed_encoder_request_t* xes)
607 {
608 typedef struct { xed_uint32_t emit;} lu_entry_t;
609 static const lu_entry_t lu_table[8] = {
610 /*h(0)=0 VL=0 VEX_PREFIX=0  ->	emit 0b000 emit_type=numeric value=0x0 nbits=3*/ {1},
611 /*h(1)=1 VL=0 VEX_PREFIX=1  ->	emit 0b001 emit_type=numeric value=0x1 nbits=3*/ {2},
612 /*h(2)=2 VL=0 VEX_PREFIX=2  ->	emit 0b011 emit_type=numeric value=0x3 nbits=3*/ {3},
613 /*h(3)=3 VL=0 VEX_PREFIX=3  ->	emit 0b010 emit_type=numeric value=0x2 nbits=3*/ {4},
614 /*h(4)=4 VL=1 VEX_PREFIX=0  ->	emit 0b100 emit_type=numeric value=0x4 nbits=3*/ {5},
615 /*h(5)=5 VL=1 VEX_PREFIX=1  ->	emit 0b101 emit_type=numeric value=0x5 nbits=3*/ {6},
616 /*h(6)=6 VL=1 VEX_PREFIX=2  ->	emit 0b111 emit_type=numeric value=0x7 nbits=3*/ {7},
617 /*h(7)=7 VL=1 VEX_PREFIX=3  ->	emit 0b110 emit_type=numeric value=0x6 nbits=3*/ {8}
618 };
619 xed_uint64_t key = 0;
620 xed_uint64_t hidx = 0;
621 key = xed_enc_lu_VEX_PREFIX_VL(xes);
622 hidx = key - 0;
623 if(hidx <= 7) {
624     xed_encoder_request_iforms(xes)->x_VEX_ESCVL_ENC=lu_table[hidx].emit;
625     return 1;
626 }
627 else{
628     return 0;
629 }
630 }
xed_encode_nonterminal_SIBSCALE_ENCODE_BIND(xed_encoder_request_t * xes)631 xed_uint32_t xed_encode_nonterminal_SIBSCALE_ENCODE_BIND(xed_encoder_request_t* xes)
632 {
633 typedef struct {xed_uint32_t key; xed_int8_t sibscale;} lu_entry_t;
634 static const lu_entry_t lu_table[30] = {
635 /*h(0)=0 SIB=0  ->	nothing*/ {0, -1},
636 /*h(13)=1 SIB=0  ->	nothing*/ {13, -1},
637 /*h(5)=2 SIB=0  ->	nothing*/ {5, -1},
638 /*h(18)=3 SIB=1 SCALE=2  ->	FB SIBSCALE=1 value=0x1*/ {18, 1},
639 /*empty slot1 */ {0,0},
640 /*h(10)=5 SIB=0  ->	nothing*/ {10, -1},
641 /*empty slot1 */ {0,0},
642 /*h(2)=7 SIB=0  ->	nothing*/ {2, -1},
643 /*h(15)=8 SIB=0  ->	nothing*/ {15, -1},
644 /*h(7)=9 SIB=0  ->	nothing*/ {7, -1},
645 /*h(20)=10 SIB=1 SCALE=4  ->	FB SIBSCALE=2 value=0x2*/ {20, 2},
646 /*empty slot1 */ {0,0},
647 /*h(12)=12 SIB=0  ->	nothing*/ {12, -1},
648 /*empty slot1 */ {0,0},
649 /*h(4)=14 SIB=0  ->	nothing*/ {4, -1},
650 /*h(17)=15 SIB=1 SCALE=1  ->	FB SIBSCALE=0 value=0x0*/ {17, 0},
651 /*h(9)=16 SIB=0  ->	nothing*/ {9, -1},
652 /*empty slot1 */ {0,0},
653 /*h(1)=18 SIB=0  ->	nothing*/ {1, -1},
654 /*h(14)=19 SIB=0  ->	nothing*/ {14, -1},
655 /*empty slot1 */ {0,0},
656 /*h(6)=21 SIB=0  ->	nothing*/ {6, -1},
657 /*empty slot1 */ {0,0},
658 /*h(11)=23 SIB=0  ->	nothing*/ {11, -1},
659 /*h(24)=24 SIB=1 SCALE=8  ->	FB SIBSCALE=3 value=0x3*/ {24, 3},
660 /*h(3)=25 SIB=0  ->	nothing*/ {3, -1},
661 /*h(16)=26 SIB=1 SCALE=0  ->	FB SIBSCALE=0 value=0x0*/ {16, 0},
662 /*empty slot1 */ {0,0},
663 /*h(8)=28 SIB=0  ->	nothing*/ {8, -1},
664 /*empty slot1 */ {0,0}
665 };
666 xed_union64_t t, u;
667 xed_uint64_t key = 0;
668 xed_uint64_t hidx = 0;
669 key = xed_enc_lu_SCALE_SIB(xes);
670 hidx = (t.u64 = 2654435769  * key, u.u64 = t.s.lo32 * 30ULL, u.s.hi32);
671 if(lu_table[hidx].key == key) {
672     if(lu_table[hidx].sibscale >= 0) xed3_operand_set_sibscale(xes,lu_table[hidx].sibscale);
673     return 1;
674 }
675 else{
676     xed3_operand_set_error(xes,XED_ERROR_GENERAL_ERROR);
677     return 1;
678 }
679 }
xed_encode_nonterminal_NELEM_TUPLE1_4X_BIND(xed_encoder_request_t * xes)680 xed_uint32_t xed_encode_nonterminal_NELEM_TUPLE1_4X_BIND(xed_encoder_request_t* xes)
681 {
682 return 1;
683 (void)xes;
684 return 1;
685 }
xed_encode_nonterminal_OSZ_NONTERM_ENC_BIND(xed_encoder_request_t * xes)686 xed_uint32_t xed_encode_nonterminal_OSZ_NONTERM_ENC_BIND(xed_encoder_request_t* xes)
687 {
688 typedef struct {xed_uint32_t key; xed_int8_t error ;xed_int8_t osz ;xed_int8_t rexw;} lu_entry_t;
689 static const lu_entry_t lu_table[109] = {
690 /*h(109)=0 MODE=2 EOSZ=3 DF64=0 SKIP_OSZ=1  ->	nothing*/ {109, -1,-1,-1},
691 /*h(73)=1 MODE=0 EOSZ=2 DF32=1  ->	nothing*/ {73, -1,-1,-1},
692 /*h(37)=2 MODE=2 EOSZ=1 SKIP_OSZ=0  ->	FB OSZ=1 value=0x1*/ {37, -1,1,-1},
693 /*h(110)=3 MODE=2 EOSZ=3 DF64=1  ->	nothing*/ {110, -1,-1,-1},
694 /*h(74)=4 MODE=0 EOSZ=2 DF32=0 SKIP_OSZ=1  ->	nothing*/ {74, -1,-1,-1},
695 /*h(38)=5 MODE=2 EOSZ=1 SKIP_OSZ=0  ->	FB OSZ=1 value=0x1*/ {38, -1,1,-1},
696 /*h(111)=6 MODE=2 EOSZ=3 DF64=1  ->	nothing*/ {111, -1,-1,-1},
697 /*h(75)=7 MODE=0 EOSZ=2 DF32=1  ->	nothing*/ {75, -1,-1,-1},
698 /*h(39)=8 MODE=2 EOSZ=1 SKIP_OSZ=0  ->	FB OSZ=1 value=0x1*/ {39, -1,1,-1},
699 /*empty slot1 */ {0,0,0,0},
700 /*empty slot1 */ {0,0,0,0},
701 /*h(40)=11 MODE=2 EOSZ=2 DF64=0  ->	nothing*/ {40, -1,-1,-1},
702 /*h(4)=12 MODE=0 EOSZ=1  ->	nothing*/ {4, -1,-1,-1},
703 /*empty slot1 */ {0,0,0,0},
704 /*h(41)=14 MODE=2 EOSZ=2 DF64=0  ->	nothing*/ {41, -1,-1,-1},
705 /*h(5)=15 MODE=0 EOSZ=1  ->	nothing*/ {5, -1,-1,-1},
706 /*empty slot1 */ {0,0,0,0},
707 /*h(42)=17 MODE=2 EOSZ=2 DF64=1  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {42, XED_ERROR_GENERAL_ERROR,-1,-1},
708 /*h(6)=18 MODE=0 EOSZ=1  ->	nothing*/ {6, -1,-1,-1},
709 /*empty slot1 */ {0,0,0,0},
710 /*h(43)=20 MODE=2 EOSZ=2 DF64=1  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {43, XED_ERROR_GENERAL_ERROR,-1,-1},
711 /*h(7)=21 MODE=0 EOSZ=1  ->	nothing*/ {7, -1,-1,-1},
712 /*empty slot1 */ {0,0,0,0},
713 /*h(44)=23 MODE=2 EOSZ=3 DF64=0 SKIP_OSZ=0  ->	FB REXW=1 value=0x1*/ {44, -1,-1,1},
714 /*h(8)=24 MODE=0 EOSZ=2 DF32=0 SKIP_OSZ=0  ->	FB OSZ=1 value=0x1*/ {8, -1,1,-1},
715 /*empty slot1 */ {0,0,0,0},
716 /*h(45)=26 MODE=2 EOSZ=3 DF64=0 SKIP_OSZ=0  ->	FB REXW=1 value=0x1*/ {45, -1,-1,1},
717 /*h(9)=27 MODE=0 EOSZ=2 DF32=1  ->	nothing*/ {9, -1,-1,-1},
718 /*empty slot1 */ {0,0,0,0},
719 /*h(46)=29 MODE=2 EOSZ=3 DF64=1  ->	nothing*/ {46, -1,-1,-1},
720 /*h(10)=30 MODE=0 EOSZ=2 DF32=0 SKIP_OSZ=0  ->	FB OSZ=1 value=0x1*/ {10, -1,1,-1},
721 /*empty slot1 */ {0,0,0,0},
722 /*h(47)=32 MODE=2 EOSZ=3 DF64=1  ->	nothing*/ {47, -1,-1,-1},
723 /*h(11)=33 MODE=0 EOSZ=2 DF32=1  ->	nothing*/ {11, -1,-1,-1},
724 /*h(84)=34 MODE=1 EOSZ=1 SKIP_OSZ=1  ->	nothing*/ {84, -1,-1,-1},
725 /*empty slot1 */ {0,0,0,0},
726 /*empty slot1 */ {0,0,0,0},
727 /*h(85)=37 MODE=1 EOSZ=1 SKIP_OSZ=1  ->	nothing*/ {85, -1,-1,-1},
728 /*empty slot1 */ {0,0,0,0},
729 /*empty slot1 */ {0,0,0,0},
730 /*h(86)=40 MODE=1 EOSZ=1 SKIP_OSZ=1  ->	nothing*/ {86, -1,-1,-1},
731 /*empty slot1 */ {0,0,0,0},
732 /*empty slot1 */ {0,0,0,0},
733 /*h(87)=43 MODE=1 EOSZ=1 SKIP_OSZ=1  ->	nothing*/ {87, -1,-1,-1},
734 /*empty slot1 */ {0,0,0,0},
735 /*empty slot1 */ {0,0,0,0},
736 /*h(88)=46 MODE=1 EOSZ=2  ->	nothing*/ {88, -1,-1,-1},
737 /*empty slot1 */ {0,0,0,0},
738 /*empty slot1 */ {0,0,0,0},
739 /*h(89)=49 MODE=1 EOSZ=2  ->	nothing*/ {89, -1,-1,-1},
740 /*empty slot1 */ {0,0,0,0},
741 /*empty slot1 */ {0,0,0,0},
742 /*h(90)=52 MODE=1 EOSZ=2  ->	nothing*/ {90, -1,-1,-1},
743 /*empty slot1 */ {0,0,0,0},
744 /*empty slot1 */ {0,0,0,0},
745 /*h(91)=55 MODE=1 EOSZ=2  ->	nothing*/ {91, -1,-1,-1},
746 /*empty slot1 */ {0,0,0,0},
747 /*empty slot1 */ {0,0,0,0},
748 /*empty slot1 */ {0,0,0,0},
749 /*empty slot1 */ {0,0,0,0},
750 /*h(20)=60 MODE=1 EOSZ=1 SKIP_OSZ=0  ->	FB OSZ=1 value=0x1*/ {20, -1,1,-1},
751 /*empty slot1 */ {0,0,0,0},
752 /*empty slot1 */ {0,0,0,0},
753 /*h(21)=63 MODE=1 EOSZ=1 SKIP_OSZ=0  ->	FB OSZ=1 value=0x1*/ {21, -1,1,-1},
754 /*empty slot1 */ {0,0,0,0},
755 /*empty slot1 */ {0,0,0,0},
756 /*h(22)=66 MODE=1 EOSZ=1 SKIP_OSZ=0  ->	FB OSZ=1 value=0x1*/ {22, -1,1,-1},
757 /*empty slot1 */ {0,0,0,0},
758 /*empty slot1 */ {0,0,0,0},
759 /*h(23)=69 MODE=1 EOSZ=1 SKIP_OSZ=0  ->	FB OSZ=1 value=0x1*/ {23, -1,1,-1},
760 /*empty slot1 */ {0,0,0,0},
761 /*empty slot1 */ {0,0,0,0},
762 /*h(24)=72 MODE=1 EOSZ=2  ->	nothing*/ {24, -1,-1,-1},
763 /*empty slot1 */ {0,0,0,0},
764 /*empty slot1 */ {0,0,0,0},
765 /*h(25)=75 MODE=1 EOSZ=2  ->	nothing*/ {25, -1,-1,-1},
766 /*empty slot1 */ {0,0,0,0},
767 /*empty slot1 */ {0,0,0,0},
768 /*h(26)=78 MODE=1 EOSZ=2  ->	nothing*/ {26, -1,-1,-1},
769 /*empty slot1 */ {0,0,0,0},
770 /*empty slot1 */ {0,0,0,0},
771 /*h(27)=81 MODE=1 EOSZ=2  ->	nothing*/ {27, -1,-1,-1},
772 /*h(100)=82 MODE=2 EOSZ=1 SKIP_OSZ=1  ->	nothing*/ {100, -1,-1,-1},
773 /*empty slot1 */ {0,0,0,0},
774 /*empty slot1 */ {0,0,0,0},
775 /*h(101)=85 MODE=2 EOSZ=1 SKIP_OSZ=1  ->	nothing*/ {101, -1,-1,-1},
776 /*empty slot1 */ {0,0,0,0},
777 /*empty slot1 */ {0,0,0,0},
778 /*h(102)=88 MODE=2 EOSZ=1 SKIP_OSZ=1  ->	nothing*/ {102, -1,-1,-1},
779 /*empty slot1 */ {0,0,0,0},
780 /*empty slot1 */ {0,0,0,0},
781 /*h(103)=91 MODE=2 EOSZ=1 SKIP_OSZ=1  ->	nothing*/ {103, -1,-1,-1},
782 /*empty slot1 */ {0,0,0,0},
783 /*empty slot1 */ {0,0,0,0},
784 /*h(104)=94 MODE=2 EOSZ=2 DF64=0  ->	nothing*/ {104, -1,-1,-1},
785 /*h(68)=95 MODE=0 EOSZ=1  ->	nothing*/ {68, -1,-1,-1},
786 /*empty slot1 */ {0,0,0,0},
787 /*h(105)=97 MODE=2 EOSZ=2 DF64=0  ->	nothing*/ {105, -1,-1,-1},
788 /*h(69)=98 MODE=0 EOSZ=1  ->	nothing*/ {69, -1,-1,-1},
789 /*empty slot1 */ {0,0,0,0},
790 /*h(106)=100 MODE=2 EOSZ=2 DF64=1  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {106, XED_ERROR_GENERAL_ERROR,-1,-1},
791 /*h(70)=101 MODE=0 EOSZ=1  ->	nothing*/ {70, -1,-1,-1},
792 /*empty slot1 */ {0,0,0,0},
793 /*h(107)=103 MODE=2 EOSZ=2 DF64=1  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {107, XED_ERROR_GENERAL_ERROR,-1,-1},
794 /*h(71)=104 MODE=0 EOSZ=1  ->	nothing*/ {71, -1,-1,-1},
795 /*empty slot1 */ {0,0,0,0},
796 /*h(108)=106 MODE=2 EOSZ=3 DF64=0 SKIP_OSZ=1  ->	nothing*/ {108, -1,-1,-1},
797 /*h(72)=107 MODE=0 EOSZ=2 DF32=0 SKIP_OSZ=1  ->	nothing*/ {72, -1,-1,-1},
798 /*h(36)=108 MODE=2 EOSZ=1 SKIP_OSZ=0  ->	FB OSZ=1 value=0x1*/ {36, -1,1,-1}
799 };
800 xed_uint64_t key = 0;
801 xed_uint64_t hidx = 0;
802 key = xed_enc_lu_DF32_DF64_EOSZ_MODE_SKIP_OSZ(xes);
803 hidx = (3*key % 109);
804 if(lu_table[hidx].key == key) {
805     if(lu_table[hidx].error >= 0) xed3_operand_set_error(xes,lu_table[hidx].error);
806     if(lu_table[hidx].osz >= 0) xed3_operand_set_osz(xes,lu_table[hidx].osz);
807     if(lu_table[hidx].rexw >= 0) xed3_operand_set_rexw(xes,lu_table[hidx].rexw);
808     return 1;
809 }
810 else{
811     return 0;
812 }
813 }
xed_encode_nonterminal_MODRM_MOD_EA32_DISP8_BIND(xed_encoder_request_t * xes)814 xed_uint32_t xed_encode_nonterminal_MODRM_MOD_EA32_DISP8_BIND(xed_encoder_request_t* xes)
815 {
816 xed3_operand_set_mod(xes,1);
817 return 1;
818 (void)xes;
819 return 1;
820 }
xed_encode_nonterminal_REMOVE_SEGMENT_BIND(xed_encoder_request_t * xes)821 xed_uint32_t xed_encode_nonterminal_REMOVE_SEGMENT_BIND(xed_encoder_request_t* xes)
822 {
823 typedef struct { xed_nt_func_ptr_t ntptr0;} lu_entry_t;
824 static const lu_entry_t lu_table[2] = {
825 /*h(0)=0 AGEN=0  ->	nothing*/ {0},
826 /*h(1)=1 AGEN=1  ->	nt NT[REMOVE_SEGMENT_AGEN1]*/ {xed_encode_nonterminal_REMOVE_SEGMENT_AGEN1_BIND}
827 };
828 xed_uint64_t key = 0;
829 xed_uint64_t hidx = 0;
830 xed_uint64_t res = 1;
831 key = xed_enc_lu_AGEN(xes);
832 hidx = key - 0;
833 if(hidx <= 1) {
834     if(lu_table[hidx].ntptr0 != 0) res=(*lu_table[hidx].ntptr0)(xes);
835     xed_encoder_request_iforms(xes)->x_REMOVE_SEGMENT=hidx+1;
836     return res;
837     return 1;
838 }
839 else{
840     return 0;
841 }
842 }
xed_encode_nonterminal_BRANCH_HINT_BIND(xed_encoder_request_t * xes)843 xed_uint32_t xed_encode_nonterminal_BRANCH_HINT_BIND(xed_encoder_request_t* xes)
844 {
845 return 1;
846 (void)xes;
847 return 1;
848 }
xed_encode_nonterminal_NELEM_FULL_BIND(xed_encoder_request_t * xes)849 xed_uint32_t xed_encode_nonterminal_NELEM_FULL_BIND(xed_encoder_request_t* xes)
850 {
851 typedef struct { xed_int8_t bcrc;} lu_entry_t;
852 static const lu_entry_t lu_table[31] = {
853 /*h(1)=0 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
854 /*h(2)=1 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
855 /*h(3)=2 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
856 /*h(4)=3 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
857 /*h(5)=4 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
858 /*h(6)=5 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
859 /*h(7)=6 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
860 /*h(8)=7 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
861 /*h(9)=8 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
862 /*h(10)=9 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
863 /*h(11)=10 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
864 /*h(12)=11 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
865 /*h(13)=12 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
866 /*h(14)=13 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
867 /*h(15)=14 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
868 /*h(16)=15 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
869 /*h(17)=16 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
870 /*h(18)=17 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
871 /*h(19)=18 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
872 /*h(20)=19 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
873 /*h(21)=20 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
874 /*h(22)=21 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
875 /*h(23)=22 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
876 /*h(24)=23 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
877 /*h(25)=24 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
878 /*h(26)=25 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
879 /*h(27)=26 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
880 /*h(28)=27 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
881 /*h(29)=28 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
882 /*h(30)=29 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
883 /*h(31)=30 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1}
884 };
885 xed_uint64_t key = 0;
886 xed_uint64_t hidx = 0;
887 key = xed_enc_lu_BCAST(xes);
888 hidx = key - 1;
889 if(hidx <= 30) {
890     xed3_operand_set_bcrc(xes,lu_table[hidx].bcrc);
891     return 1;
892 }
893 else{
894     xed3_operand_set_bcrc(xes,0);
895     return 1;
896 }
897 }
xed_encode_nonterminal_VEX_REG_ENC_BIND(xed_encoder_request_t * xes)898 xed_uint32_t xed_encode_nonterminal_VEX_REG_ENC_BIND(xed_encoder_request_t* xes)
899 {
900 typedef struct { xed_uint32_t emit;} lu_entry_t;
901 static const lu_entry_t lu_table[4] = {
902 /*h(0)=0 MODE!=2 VEXDEST3[u]=* VEXDEST210[ddd]=*  ->	emit 1_ddd emit_type=letters nbits=4*/ {2},
903 /*h(1)=1 MODE!=2 VEXDEST3[u]=* VEXDEST210[ddd]=*  ->	emit 1_ddd emit_type=letters nbits=4*/ {2},
904 /*h(2)=2 MODE=2 VEXDEST3[u]=* VEXDEST210[ddd]=*  ->	emit u_ddd emit_type=letters nbits=4*/ {3},
905 /*h(3)=3 MODE!=2 VEXDEST3[u]=* VEXDEST210[ddd]=*  ->	emit 1_ddd emit_type=letters nbits=4*/ {2}
906 };
907 xed_uint64_t key = 0;
908 xed_uint64_t hidx = 0;
909 key = xed_enc_lu_MODE(xes);
910 hidx = key - 0;
911 if(hidx <= 3) {
912     xed_encoder_request_iforms(xes)->x_VEX_REG_ENC=lu_table[hidx].emit;
913     return 1;
914 }
915 else{
916     return 0;
917 }
918 }
xed_encode_nonterminal_NELEM_TUPLE8_BIND(xed_encoder_request_t * xes)919 xed_uint32_t xed_encode_nonterminal_NELEM_TUPLE8_BIND(xed_encoder_request_t* xes)
920 {
921 return 1;
922 (void)xes;
923 return 1;
924 }
xed_encode_nonterminal_DISP_WIDTH_0_8_32_BIND(xed_encoder_request_t * xes)925 xed_uint32_t xed_encode_nonterminal_DISP_WIDTH_0_8_32_BIND(xed_encoder_request_t* xes)
926 {
927 typedef struct {xed_uint32_t key; } lu_entry_t;
928 static const lu_entry_t lu_table[5] = {
929 /*h(0)=0 DISP_WIDTH=0  ->	nothing*/ {0, },
930 /*empty slot1 */ {0},
931 /*empty slot1 */ {0},
932 /*h(32)=3 DISP_WIDTH=32  ->	nothing*/ {32, },
933 /*h(8)=4 DISP_WIDTH=8  ->	nothing*/ {8, }
934 };
935 xed_union64_t t, u;
936 xed_uint64_t key = 0;
937 xed_uint64_t hidx = 0;
938 key = xed_enc_lu_DISP_WIDTH(xes);
939 hidx = (t.u64 = 2654435769  * key, u.u64 = t.s.lo32 * 5ULL, u.s.hi32);
940 if(lu_table[hidx].key == key) {
941     return 1;
942 }
943 else{
944     return 0;
945 }
946 }
xed_encode_nonterminal_NELEM_TUPLE4_BIND(xed_encoder_request_t * xes)947 xed_uint32_t xed_encode_nonterminal_NELEM_TUPLE4_BIND(xed_encoder_request_t* xes)
948 {
949 return 1;
950 (void)xes;
951 return 1;
952 }
xed_encode_nonterminal_DISP_WIDTH_8_32_BIND(xed_encoder_request_t * xes)953 xed_uint32_t xed_encode_nonterminal_DISP_WIDTH_8_32_BIND(xed_encoder_request_t* xes)
954 {
955 typedef struct {xed_uint32_t key; } lu_entry_t;
956 static const lu_entry_t lu_table[2] = {
957 /*h(8)=0 DISP_WIDTH=8  ->	nothing*/ {8, },
958 /*h(32)=1 DISP_WIDTH=32  ->	nothing*/ {32, }
959 };
960 xed_uint64_t key = 0;
961 xed_uint64_t hidx = 0;
962 key = xed_enc_lu_DISP_WIDTH(xes);
963 hidx = ((3*key % 5) % 2);
964 if(lu_table[hidx].key == key) {
965     return 1;
966 }
967 else{
968     return 0;
969 }
970 }
xed_encode_nonterminal_NELEM_HALFMEM_BIND(xed_encoder_request_t * xes)971 xed_uint32_t xed_encode_nonterminal_NELEM_HALFMEM_BIND(xed_encoder_request_t* xes)
972 {
973 return 1;
974 (void)xes;
975 return 1;
976 }
xed_encode_nonterminal_SAE_BIND(xed_encoder_request_t * xes)977 xed_uint32_t xed_encode_nonterminal_SAE_BIND(xed_encoder_request_t* xes)
978 {
979 typedef struct { xed_int8_t bcrc;} lu_entry_t;
980 static const lu_entry_t lu_table[2] = {
981 /*h(0)=0 SAE=0  ->	FB BCRC=0 value=0x0*/ {0},
982 /*h(1)=1 SAE=1  ->	FB BCRC=1 value=0x1*/ {1}
983 };
984 xed_uint64_t key = 0;
985 xed_uint64_t hidx = 0;
986 key = xed_enc_lu_SAE(xes);
987 hidx = key - 0;
988 if(hidx <= 1) {
989     xed3_operand_set_bcrc(xes,lu_table[hidx].bcrc);
990     return 1;
991 }
992 else{
993     return 0;
994 }
995 }
xed_encode_nonterminal_MODRM_MOD_EA16_DISP0_BIND(xed_encoder_request_t * xes)996 xed_uint32_t xed_encode_nonterminal_MODRM_MOD_EA16_DISP0_BIND(xed_encoder_request_t* xes)
997 {
998 typedef struct {xed_uint32_t key; xed_int8_t disp ;xed_int8_t disp_width ;xed_int8_t mod;} lu_entry_t;
999 static const lu_entry_t lu_table[8] = {
1000 /*h(37)=0 BASE0=XED_REG_BX INDEX=@  ->	FB MOD=0 value=0x0*/ {37, -1,-1,0},
1001 /*h(21029)=1 BASE0=XED_REG_BX INDEX=XED_REG_DI  ->	FB MOD=0 value=0x0*/ {21029, -1,-1,0},
1002 /*h(20517)=2 BASE0=XED_REG_BX INDEX=XED_REG_SI  ->	FB MOD=0 value=0x0*/ {20517, -1,-1,0},
1003 /*h(39)=3 BASE0=XED_REG_BP INDEX=@  ->	FB MOD=1 value=0x1 	FB DISP_WIDTH=8 value=0x8 	FB DISP=0 value=0x0*/ {39, 0,8,1},
1004 /*h(21031)=4 BASE0=XED_REG_BP INDEX=XED_REG_DI  ->	FB MOD=0 value=0x0*/ {21031, -1,-1,0},
1005 /*h(20519)=5 BASE0=XED_REG_BP INDEX=XED_REG_SI  ->	FB MOD=0 value=0x0*/ {20519, -1,-1,0},
1006 /*h(41)=6 BASE0=XED_REG_DI INDEX=@  ->	FB MOD=0 value=0x0*/ {41, -1,-1,0},
1007 /*h(40)=7 BASE0=XED_REG_SI INDEX=@  ->	FB MOD=0 value=0x0*/ {40, -1,-1,0}
1008 };
1009 xed_uint64_t key = 0;
1010 xed_uint64_t hidx = 0;
1011 key = xed_enc_lu_BASE0_INDEX(xes);
1012 hidx = ((20*key % 37) % 8);
1013 if(lu_table[hidx].key == key) {
1014     if(lu_table[hidx].disp >= 0) xed3_operand_set_disp(xes,lu_table[hidx].disp);
1015     if(lu_table[hidx].disp_width >= 0) xed3_operand_set_disp_width(xes,lu_table[hidx].disp_width);
1016     xed3_operand_set_mod(xes,lu_table[hidx].mod);
1017     return 1;
1018 }
1019 else{
1020     return 0;
1021 }
1022 }
xed_encode_nonterminal_AVX512_ROUND_BIND(xed_encoder_request_t * xes)1023 xed_uint32_t xed_encode_nonterminal_AVX512_ROUND_BIND(xed_encoder_request_t* xes)
1024 {
1025 typedef struct { xed_int8_t bcrc ;xed_int8_t llrc;} lu_entry_t;
1026 static const lu_entry_t lu_table[4] = {
1027 /*h(1)=0 ROUNDC=1  ->	FB LLRC=0 value=0x0 	FB BCRC=1 value=0x1*/ {1,0},
1028 /*h(2)=1 ROUNDC=2  ->	FB LLRC=1 value=0x1 	FB BCRC=1 value=0x1*/ {1,1},
1029 /*h(3)=2 ROUNDC=3  ->	FB LLRC=2 value=0x2 	FB BCRC=1 value=0x1*/ {1,2},
1030 /*h(4)=3 ROUNDC=4  ->	FB LLRC=3 value=0x3 	FB BCRC=1 value=0x1*/ {1,3}
1031 };
1032 xed_uint64_t key = 0;
1033 xed_uint64_t hidx = 0;
1034 key = xed_enc_lu_ROUNDC(xes);
1035 hidx = key - 1;
1036 if(hidx <= 3) {
1037     xed3_operand_set_bcrc(xes,lu_table[hidx].bcrc);
1038     xed3_operand_set_llrc(xes,lu_table[hidx].llrc);
1039     return 1;
1040 }
1041 else{
1042     return 0;
1043 }
1044 }
xed_encode_nonterminal_ESIZE_128_BITS_BIND(xed_encoder_request_t * xes)1045 xed_uint32_t xed_encode_nonterminal_ESIZE_128_BITS_BIND(xed_encoder_request_t* xes)
1046 {
1047 return 1;
1048 (void)xes;
1049 return 1;
1050 }
xed_encode_nonterminal_VSIB_ENC_INDEX_XMM_BIND(xed_encoder_request_t * xes)1051 xed_uint32_t xed_encode_nonterminal_VSIB_ENC_INDEX_XMM_BIND(xed_encoder_request_t* xes)
1052 {
1053 typedef struct { xed_int8_t rexx ;xed_int8_t sibindex;} lu_entry_t;
1054 static const lu_entry_t lu_table[16] = {
1055 /*h(178)=0 INDEX=XED_REG_XMM0  ->	FB REXX=0 value=0x0 	FB SIBINDEX=0 value=0x0*/ {0,0},
1056 /*h(179)=1 INDEX=XED_REG_XMM1  ->	FB REXX=0 value=0x0 	FB SIBINDEX=1 value=0x1*/ {0,1},
1057 /*h(180)=2 INDEX=XED_REG_XMM2  ->	FB REXX=0 value=0x0 	FB SIBINDEX=2 value=0x2*/ {0,2},
1058 /*h(181)=3 INDEX=XED_REG_XMM3  ->	FB REXX=0 value=0x0 	FB SIBINDEX=3 value=0x3*/ {0,3},
1059 /*h(182)=4 INDEX=XED_REG_XMM4  ->	FB REXX=0 value=0x0 	FB SIBINDEX=4 value=0x4*/ {0,4},
1060 /*h(183)=5 INDEX=XED_REG_XMM5  ->	FB REXX=0 value=0x0 	FB SIBINDEX=5 value=0x5*/ {0,5},
1061 /*h(184)=6 INDEX=XED_REG_XMM6  ->	FB REXX=0 value=0x0 	FB SIBINDEX=6 value=0x6*/ {0,6},
1062 /*h(185)=7 INDEX=XED_REG_XMM7  ->	FB REXX=0 value=0x0 	FB SIBINDEX=7 value=0x7*/ {0,7},
1063 /*h(186)=8 INDEX=XED_REG_XMM8  ->	FB REXX=1 value=0x1 	FB SIBINDEX=0 value=0x0*/ {1,0},
1064 /*h(187)=9 INDEX=XED_REG_XMM9  ->	FB REXX=1 value=0x1 	FB SIBINDEX=1 value=0x1*/ {1,1},
1065 /*h(188)=10 INDEX=XED_REG_XMM10  ->	FB REXX=1 value=0x1 	FB SIBINDEX=2 value=0x2*/ {1,2},
1066 /*h(189)=11 INDEX=XED_REG_XMM11  ->	FB REXX=1 value=0x1 	FB SIBINDEX=3 value=0x3*/ {1,3},
1067 /*h(190)=12 INDEX=XED_REG_XMM12  ->	FB REXX=1 value=0x1 	FB SIBINDEX=4 value=0x4*/ {1,4},
1068 /*h(191)=13 INDEX=XED_REG_XMM13  ->	FB REXX=1 value=0x1 	FB SIBINDEX=5 value=0x5*/ {1,5},
1069 /*h(192)=14 INDEX=XED_REG_XMM14  ->	FB REXX=1 value=0x1 	FB SIBINDEX=6 value=0x6*/ {1,6},
1070 /*h(193)=15 INDEX=XED_REG_XMM15  ->	FB REXX=1 value=0x1 	FB SIBINDEX=7 value=0x7*/ {1,7}
1071 };
1072 xed_uint64_t key = 0;
1073 xed_uint64_t hidx = 0;
1074 key = xed_enc_lu_INDEX(xes);
1075 hidx = key - 178;
1076 if(hidx <= 15) {
1077     xed3_operand_set_rexx(xes,lu_table[hidx].rexx);
1078     xed3_operand_set_sibindex(xes,lu_table[hidx].sibindex);
1079     return 1;
1080 }
1081 else{
1082     return 0;
1083 }
1084 }
xed_encode_nonterminal_EVEX_LL_ENC_BIND(xed_encoder_request_t * xes)1085 xed_uint32_t xed_encode_nonterminal_EVEX_LL_ENC_BIND(xed_encoder_request_t* xes)
1086 {
1087 typedef struct {xed_uint32_t key; xed_int8_t bcrc ;xed_int8_t llrc;} lu_entry_t;
1088 static const lu_entry_t lu_table[19] = {
1089 /*h(0)=0 ROUNDC=0 SAE=0 VL=0  ->	FB LLRC=0 value=0x0*/ {0, -1,0},
1090 /*h(32)=1 ROUNDC=0 SAE=0 VL=2  ->	FB LLRC=2 value=0x2*/ {32, -1,2},
1091 /*empty slot1 */ {0,0,0},
1092 /*empty slot1 */ {0,0,0},
1093 /*empty slot1 */ {0,0,0},
1094 /*h(8)=5 ROUNDC=0 SAE=1 VL=0  ->	FB LLRC=0 value=0x0 	FB BCRC=1 value=0x1*/ {8, 1,0},
1095 /*h(40)=6 ROUNDC=0 SAE=1 VL=2  ->	FB LLRC=0 value=0x0 	FB BCRC=1 value=0x1*/ {40, 1,0},
1096 /*empty slot1 */ {0,0,0},
1097 /*h(9)=8 ROUNDC=1 SAE=1 VL=0  ->	FB LLRC=0 value=0x0 	FB BCRC=1 value=0x1*/ {9, 1,0},
1098 /*h(41)=9 ROUNDC=1 SAE=1 VL=2  ->	FB LLRC=0 value=0x0 	FB BCRC=1 value=0x1*/ {41, 1,0},
1099 /*h(16)=10 ROUNDC=0 SAE=0 VL=1  ->	FB LLRC=1 value=0x1*/ {16, -1,1},
1100 /*h(10)=11 ROUNDC=2 SAE=1 VL=0  ->	FB LLRC=1 value=0x1 	FB BCRC=1 value=0x1*/ {10, 1,1},
1101 /*h(42)=12 ROUNDC=2 SAE=1 VL=2  ->	FB LLRC=1 value=0x1 	FB BCRC=1 value=0x1*/ {42, 1,1},
1102 /*empty slot1 */ {0,0,0},
1103 /*h(11)=14 ROUNDC=3 SAE=1 VL=0  ->	FB LLRC=2 value=0x2 	FB BCRC=1 value=0x1*/ {11, 1,2},
1104 /*h(43)=15 ROUNDC=3 SAE=1 VL=2  ->	FB LLRC=2 value=0x2 	FB BCRC=1 value=0x1*/ {43, 1,2},
1105 /*empty slot1 */ {0,0,0},
1106 /*h(12)=17 ROUNDC=4 SAE=1 VL=0  ->	FB LLRC=3 value=0x3 	FB BCRC=1 value=0x1*/ {12, 1,3},
1107 /*h(44)=18 ROUNDC=4 SAE=1 VL=2  ->	FB LLRC=3 value=0x3 	FB BCRC=1 value=0x1*/ {44, 1,3}
1108 };
1109 xed_uint64_t key = 0;
1110 xed_uint64_t hidx = 0;
1111 key = xed_enc_lu_ROUNDC_SAE_VL(xes);
1112 hidx = (3*key % 19);
1113 if(lu_table[hidx].key == key) {
1114     if(lu_table[hidx].bcrc >= 0) xed3_operand_set_bcrc(xes,lu_table[hidx].bcrc);
1115     xed3_operand_set_llrc(xes,lu_table[hidx].llrc);
1116     return 1;
1117 }
1118 else{
1119     return 0;
1120 }
1121 }
xed_encode_nonterminal_ESIZE_2_BITS_BIND(xed_encoder_request_t * xes)1122 xed_uint32_t xed_encode_nonterminal_ESIZE_2_BITS_BIND(xed_encoder_request_t* xes)
1123 {
1124 return 1;
1125 (void)xes;
1126 return 1;
1127 }
xed_encode_nonterminal_NELEM_GPR_READER_BYTE_BIND(xed_encoder_request_t * xes)1128 xed_uint32_t xed_encode_nonterminal_NELEM_GPR_READER_BYTE_BIND(xed_encoder_request_t* xes)
1129 {
1130 return 1;
1131 (void)xes;
1132 return 1;
1133 }
xed_encode_nonterminal_MODRM_RM_ENCODE_EA32_SIB0_BIND(xed_encoder_request_t * xes)1134 xed_uint32_t xed_encode_nonterminal_MODRM_RM_ENCODE_EA32_SIB0_BIND(xed_encoder_request_t* xes)
1135 {
1136 typedef struct {xed_uint32_t key; xed_int8_t rexb ;xed_int8_t rm ;xed_nt_func_ptr_t ntptr0;} lu_entry_t;
1137 static const lu_entry_t lu_table[124] = {
1138 /*h(0)=0 BASE0=@  ->	nt NT[DISP_WIDTH_32] 	FB RM=5 value=0x5*/ {0, -1,5,xed_encode_nonterminal_DISP_WIDTH_32_BIND},
1139 /*h(1089)=1 BASE0=XED_REG_R15D  ->	FB RM=7 value=0x7 	FB REXB=1 value=0x1*/ {1089, 1,7,0},
1140 /*empty slot1 */ {0,0,0,0},
1141 /*h(577)=3 BASE0=XED_REG_R15D  ->	FB RM=7 value=0x7 	FB REXB=1 value=0x1*/ {577, 1,7,0},
1142 /*empty slot1 */ {0,0,0,0},
1143 /*h(65)=5 BASE0=XED_REG_R15D  ->	FB RM=7 value=0x7 	FB REXB=1 value=0x1*/ {65, 1,7,0},
1144 /*empty slot1 */ {0,0,0,0},
1145 /*empty slot1 */ {0,0,0,0},
1146 /*empty slot1 */ {0,0,0,0},
1147 /*empty slot1 */ {0,0,0,0},
1148 /*empty slot1 */ {0,0,0,0},
1149 /*empty slot1 */ {0,0,0,0},
1150 /*empty slot1 */ {0,0,0,0},
1151 /*empty slot1 */ {0,0,0,0},
1152 /*empty slot1 */ {0,0,0,0},
1153 /*empty slot1 */ {0,0,0,0},
1154 /*empty slot1 */ {0,0,0,0},
1155 /*empty slot1 */ {0,0,0,0},
1156 /*h(1586)=18 BASE0=XED_REG_EAX  ->	FB RM=0 value=0x0 	FB REXB=0 value=0x0*/ {1586, 0,0,0},
1157 /*empty slot1 */ {0,0,0,0},
1158 /*h(1074)=20 BASE0=XED_REG_EAX  ->	FB RM=0 value=0x0 	FB REXB=0 value=0x0*/ {1074, 0,0,0},
1159 /*empty slot1 */ {0,0,0,0},
1160 /*h(562)=22 BASE0=XED_REG_EAX  ->	FB RM=0 value=0x0 	FB REXB=0 value=0x0*/ {562, 0,0,0},
1161 /*empty slot1 */ {0,0,0,0},
1162 /*h(50)=24 BASE0=XED_REG_EAX  ->	FB RM=0 value=0x0 	FB REXB=0 value=0x0*/ {50, 0,0,0},
1163 /*h(1587)=25 BASE0=XED_REG_ECX  ->	FB RM=1 value=0x1 	FB REXB=0 value=0x0*/ {1587, 0,1,0},
1164 /*empty slot1 */ {0,0,0,0},
1165 /*h(1075)=27 BASE0=XED_REG_ECX  ->	FB RM=1 value=0x1 	FB REXB=0 value=0x0*/ {1075, 0,1,0},
1166 /*empty slot1 */ {0,0,0,0},
1167 /*h(563)=29 BASE0=XED_REG_ECX  ->	FB RM=1 value=0x1 	FB REXB=0 value=0x0*/ {563, 0,1,0},
1168 /*empty slot1 */ {0,0,0,0},
1169 /*h(51)=31 BASE0=XED_REG_ECX  ->	FB RM=1 value=0x1 	FB REXB=0 value=0x0*/ {51, 0,1,0},
1170 /*h(1588)=32 BASE0=XED_REG_EDX  ->	FB RM=2 value=0x2 	FB REXB=0 value=0x0*/ {1588, 0,2,0},
1171 /*h(1536)=33 BASE0=@  ->	nt NT[DISP_WIDTH_32] 	FB RM=5 value=0x5*/ {1536, -1,5,xed_encode_nonterminal_DISP_WIDTH_32_BIND},
1172 /*h(1076)=34 BASE0=XED_REG_EDX  ->	FB RM=2 value=0x2 	FB REXB=0 value=0x0*/ {1076, 0,2,0},
1173 /*h(1024)=35 BASE0=@  ->	nt NT[DISP_WIDTH_32] 	FB RM=5 value=0x5*/ {1024, -1,5,xed_encode_nonterminal_DISP_WIDTH_32_BIND},
1174 /*h(564)=36 BASE0=XED_REG_EDX  ->	FB RM=2 value=0x2 	FB REXB=0 value=0x0*/ {564, 0,2,0},
1175 /*h(512)=37 BASE0=@  ->	nt NT[DISP_WIDTH_32] 	FB RM=5 value=0x5*/ {512, -1,5,xed_encode_nonterminal_DISP_WIDTH_32_BIND},
1176 /*h(52)=38 BASE0=XED_REG_EDX  ->	FB RM=2 value=0x2 	FB REXB=0 value=0x0*/ {52, 0,2,0},
1177 /*h(1589)=39 BASE0=XED_REG_EBX  ->	FB RM=3 value=0x3 	FB REXB=0 value=0x0*/ {1589, 0,3,0},
1178 /*empty slot1 */ {0,0,0,0},
1179 /*h(1077)=41 BASE0=XED_REG_EBX  ->	FB RM=3 value=0x3 	FB REXB=0 value=0x0*/ {1077, 0,3,0},
1180 /*empty slot1 */ {0,0,0,0},
1181 /*h(565)=43 BASE0=XED_REG_EBX  ->	FB RM=3 value=0x3 	FB REXB=0 value=0x0*/ {565, 0,3,0},
1182 /*empty slot1 */ {0,0,0,0},
1183 /*h(53)=45 BASE0=XED_REG_EBX  ->	FB RM=3 value=0x3 	FB REXB=0 value=0x0*/ {53, 0,3,0},
1184 /*empty slot1 */ {0,0,0,0},
1185 /*empty slot1 */ {0,0,0,0},
1186 /*empty slot1 */ {0,0,0,0},
1187 /*empty slot1 */ {0,0,0,0},
1188 /*empty slot1 */ {0,0,0,0},
1189 /*empty slot1 */ {0,0,0,0},
1190 /*empty slot1 */ {0,0,0,0},
1191 /*h(1591)=53 BASE0=XED_REG_EBP  ->	nt NT[DISP_WIDTH_0_8_32] 	FB RM=5 value=0x5 	FB REXB=0 value=0x0*/ {1591, 0,5,xed_encode_nonterminal_DISP_WIDTH_0_8_32_BIND},
1192 /*empty slot1 */ {0,0,0,0},
1193 /*h(1079)=55 BASE0=XED_REG_EBP  ->	nt NT[DISP_WIDTH_0_8_32] 	FB RM=5 value=0x5 	FB REXB=0 value=0x0*/ {1079, 0,5,xed_encode_nonterminal_DISP_WIDTH_0_8_32_BIND},
1194 /*empty slot1 */ {0,0,0,0},
1195 /*h(567)=57 BASE0=XED_REG_EBP  ->	nt NT[DISP_WIDTH_0_8_32] 	FB RM=5 value=0x5 	FB REXB=0 value=0x0*/ {567, 0,5,xed_encode_nonterminal_DISP_WIDTH_0_8_32_BIND},
1196 /*empty slot1 */ {0,0,0,0},
1197 /*h(55)=59 BASE0=XED_REG_EBP  ->	nt NT[DISP_WIDTH_0_8_32] 	FB RM=5 value=0x5 	FB REXB=0 value=0x0*/ {55, 0,5,xed_encode_nonterminal_DISP_WIDTH_0_8_32_BIND},
1198 /*h(1592)=60 BASE0=XED_REG_ESI  ->	FB RM=6 value=0x6 	FB REXB=0 value=0x0*/ {1592, 0,6,0},
1199 /*empty slot1 */ {0,0,0,0},
1200 /*h(1080)=62 BASE0=XED_REG_ESI  ->	FB RM=6 value=0x6 	FB REXB=0 value=0x0*/ {1080, 0,6,0},
1201 /*empty slot1 */ {0,0,0,0},
1202 /*h(568)=64 BASE0=XED_REG_ESI  ->	FB RM=6 value=0x6 	FB REXB=0 value=0x0*/ {568, 0,6,0},
1203 /*h(1127)=65 BASE0=XED_REG_RIP MODE=2  ->	FB RM=5 value=0x5*/ {1127, -1,5,0},
1204 /*h(56)=66 BASE0=XED_REG_ESI  ->	FB RM=6 value=0x6 	FB REXB=0 value=0x0*/ {56, 0,6,0},
1205 /*h(1593)=67 BASE0=XED_REG_EDI  ->	FB RM=7 value=0x7 	FB REXB=0 value=0x0*/ {1593, 0,7,0},
1206 /*empty slot1 */ {0,0,0,0},
1207 /*h(1081)=69 BASE0=XED_REG_EDI  ->	FB RM=7 value=0x7 	FB REXB=0 value=0x0*/ {1081, 0,7,0},
1208 /*empty slot1 */ {0,0,0,0},
1209 /*h(569)=71 BASE0=XED_REG_EDI  ->	FB RM=7 value=0x7 	FB REXB=0 value=0x0*/ {569, 0,7,0},
1210 /*h(1128)=72 BASE0=XED_REG_EIP MODE=2  ->	FB RM=5 value=0x5*/ {1128, -1,5,0},
1211 /*h(57)=73 BASE0=XED_REG_EDI  ->	FB RM=7 value=0x7 	FB REXB=0 value=0x0*/ {57, 0,7,0},
1212 /*h(1594)=74 BASE0=XED_REG_R8D  ->	FB RM=0 value=0x0 	FB REXB=1 value=0x1*/ {1594, 1,0,0},
1213 /*empty slot1 */ {0,0,0,0},
1214 /*h(1082)=76 BASE0=XED_REG_R8D  ->	FB RM=0 value=0x0 	FB REXB=1 value=0x1*/ {1082, 1,0,0},
1215 /*empty slot1 */ {0,0,0,0},
1216 /*h(570)=78 BASE0=XED_REG_R8D  ->	FB RM=0 value=0x0 	FB REXB=1 value=0x1*/ {570, 1,0,0},
1217 /*empty slot1 */ {0,0,0,0},
1218 /*h(58)=80 BASE0=XED_REG_R8D  ->	FB RM=0 value=0x0 	FB REXB=1 value=0x1*/ {58, 1,0,0},
1219 /*h(1595)=81 BASE0=XED_REG_R9D  ->	FB RM=1 value=0x1 	FB REXB=1 value=0x1*/ {1595, 1,1,0},
1220 /*empty slot1 */ {0,0,0,0},
1221 /*h(1083)=83 BASE0=XED_REG_R9D  ->	FB RM=1 value=0x1 	FB REXB=1 value=0x1*/ {1083, 1,1,0},
1222 /*empty slot1 */ {0,0,0,0},
1223 /*h(571)=85 BASE0=XED_REG_R9D  ->	FB RM=1 value=0x1 	FB REXB=1 value=0x1*/ {571, 1,1,0},
1224 /*empty slot1 */ {0,0,0,0},
1225 /*h(59)=87 BASE0=XED_REG_R9D  ->	FB RM=1 value=0x1 	FB REXB=1 value=0x1*/ {59, 1,1,0},
1226 /*h(1596)=88 BASE0=XED_REG_R10D  ->	FB RM=2 value=0x2 	FB REXB=1 value=0x1*/ {1596, 1,2,0},
1227 /*empty slot1 */ {0,0,0,0},
1228 /*h(1084)=90 BASE0=XED_REG_R10D  ->	FB RM=2 value=0x2 	FB REXB=1 value=0x1*/ {1084, 1,2,0},
1229 /*empty slot1 */ {0,0,0,0},
1230 /*h(572)=92 BASE0=XED_REG_R10D  ->	FB RM=2 value=0x2 	FB REXB=1 value=0x1*/ {572, 1,2,0},
1231 /*empty slot1 */ {0,0,0,0},
1232 /*h(60)=94 BASE0=XED_REG_R10D  ->	FB RM=2 value=0x2 	FB REXB=1 value=0x1*/ {60, 1,2,0},
1233 /*h(1597)=95 BASE0=XED_REG_R11D  ->	FB RM=3 value=0x3 	FB REXB=1 value=0x1*/ {1597, 1,3,0},
1234 /*empty slot1 */ {0,0,0,0},
1235 /*h(1085)=97 BASE0=XED_REG_R11D  ->	FB RM=3 value=0x3 	FB REXB=1 value=0x1*/ {1085, 1,3,0},
1236 /*empty slot1 */ {0,0,0,0},
1237 /*h(573)=99 BASE0=XED_REG_R11D  ->	FB RM=3 value=0x3 	FB REXB=1 value=0x1*/ {573, 1,3,0},
1238 /*empty slot1 */ {0,0,0,0},
1239 /*h(61)=101 BASE0=XED_REG_R11D  ->	FB RM=3 value=0x3 	FB REXB=1 value=0x1*/ {61, 1,3,0},
1240 /*empty slot1 */ {0,0,0,0},
1241 /*empty slot1 */ {0,0,0,0},
1242 /*empty slot1 */ {0,0,0,0},
1243 /*empty slot1 */ {0,0,0,0},
1244 /*empty slot1 */ {0,0,0,0},
1245 /*empty slot1 */ {0,0,0,0},
1246 /*empty slot1 */ {0,0,0,0},
1247 /*h(1599)=109 BASE0=XED_REG_R13D  ->	nt NT[DISP_WIDTH_0_8_32] 	FB RM=5 value=0x5 	FB REXB=1 value=0x1*/ {1599, 1,5,xed_encode_nonterminal_DISP_WIDTH_0_8_32_BIND},
1248 /*empty slot1 */ {0,0,0,0},
1249 /*h(1087)=111 BASE0=XED_REG_R13D  ->	nt NT[DISP_WIDTH_0_8_32] 	FB RM=5 value=0x5 	FB REXB=1 value=0x1*/ {1087, 1,5,xed_encode_nonterminal_DISP_WIDTH_0_8_32_BIND},
1250 /*empty slot1 */ {0,0,0,0},
1251 /*h(575)=113 BASE0=XED_REG_R13D  ->	nt NT[DISP_WIDTH_0_8_32] 	FB RM=5 value=0x5 	FB REXB=1 value=0x1*/ {575, 1,5,xed_encode_nonterminal_DISP_WIDTH_0_8_32_BIND},
1252 /*empty slot1 */ {0,0,0,0},
1253 /*h(63)=115 BASE0=XED_REG_R13D  ->	nt NT[DISP_WIDTH_0_8_32] 	FB RM=5 value=0x5 	FB REXB=1 value=0x1*/ {63, 1,5,xed_encode_nonterminal_DISP_WIDTH_0_8_32_BIND},
1254 /*h(1600)=116 BASE0=XED_REG_R14D  ->	FB RM=6 value=0x6 	FB REXB=1 value=0x1*/ {1600, 1,6,0},
1255 /*empty slot1 */ {0,0,0,0},
1256 /*h(1088)=118 BASE0=XED_REG_R14D  ->	FB RM=6 value=0x6 	FB REXB=1 value=0x1*/ {1088, 1,6,0},
1257 /*empty slot1 */ {0,0,0,0},
1258 /*h(576)=120 BASE0=XED_REG_R14D  ->	FB RM=6 value=0x6 	FB REXB=1 value=0x1*/ {576, 1,6,0},
1259 /*empty slot1 */ {0,0,0,0},
1260 /*h(64)=122 BASE0=XED_REG_R14D  ->	FB RM=6 value=0x6 	FB REXB=1 value=0x1*/ {64, 1,6,0},
1261 /*h(1601)=123 BASE0=XED_REG_R15D  ->	FB RM=7 value=0x7 	FB REXB=1 value=0x1*/ {1601, 1,7,0}
1262 };
1263 xed_uint64_t key = 0;
1264 xed_uint64_t hidx = 0;
1265 xed_uint64_t res = 1;
1266 key = xed_enc_lu_BASE0_MODE(xes);
1267 hidx = ((7*key % 163) % 124);
1268 if(lu_table[hidx].key == key) {
1269     if(lu_table[hidx].rexb >= 0) xed3_operand_set_rexb(xes,lu_table[hidx].rexb);
1270     xed3_operand_set_rm(xes,lu_table[hidx].rm);
1271     if(lu_table[hidx].ntptr0 != 0) res=(*lu_table[hidx].ntptr0)(xes);
1272     xed_encoder_request_iforms(xes)->x_MODRM_RM_ENCODE_EA32_SIB0=hidx+1;
1273     return res;
1274     return 1;
1275 }
1276 else{
1277     return 0;
1278 }
1279 }
xed_encode_nonterminal_IMMUNE_REXW_BIND(xed_encoder_request_t * xes)1280 xed_uint32_t xed_encode_nonterminal_IMMUNE_REXW_BIND(xed_encoder_request_t* xes)
1281 {
1282 return 1;
1283 (void)xes;
1284 return 1;
1285 }
xed_encode_nonterminal_MODRM_MOD_EA16_DISP16_BIND(xed_encoder_request_t * xes)1286 xed_uint32_t xed_encode_nonterminal_MODRM_MOD_EA16_DISP16_BIND(xed_encoder_request_t* xes)
1287 {
1288 typedef struct {xed_uint32_t key; xed_int8_t mod;} lu_entry_t;
1289 static const lu_entry_t lu_table[9] = {
1290 /*h(0)=0 BASE0=@ INDEX=@  ->	FB MOD=0 value=0x0*/ {0, 0},
1291 /*h(39)=1 BASE0=XED_REG_BP INDEX=@  ->	FB MOD=2 value=0x2*/ {39, 2},
1292 /*h(40)=2 BASE0=XED_REG_SI INDEX=@  ->	FB MOD=2 value=0x2*/ {40, 2},
1293 /*h(41)=3 BASE0=XED_REG_DI INDEX=@  ->	FB MOD=2 value=0x2*/ {41, 2},
1294 /*h(21029)=4 BASE0=XED_REG_BX INDEX=XED_REG_DI  ->	FB MOD=2 value=0x2*/ {21029, 2},
1295 /*h(20517)=5 BASE0=XED_REG_BX INDEX=XED_REG_SI  ->	FB MOD=2 value=0x2*/ {20517, 2},
1296 /*h(21031)=6 BASE0=XED_REG_BP INDEX=XED_REG_DI  ->	FB MOD=2 value=0x2*/ {21031, 2},
1297 /*h(20519)=7 BASE0=XED_REG_BP INDEX=XED_REG_SI  ->	FB MOD=2 value=0x2*/ {20519, 2},
1298 /*h(37)=8 BASE0=XED_REG_BX INDEX=@  ->	FB MOD=2 value=0x2*/ {37, 2}
1299 };
1300 xed_uint64_t key = 0;
1301 xed_uint64_t hidx = 0;
1302 key = xed_enc_lu_BASE0_INDEX(xes);
1303 hidx = ((30*key % 29) % 9);
1304 if(lu_table[hidx].key == key) {
1305     xed3_operand_set_mod(xes,lu_table[hidx].mod);
1306     return 1;
1307 }
1308 else{
1309     return 0;
1310 }
1311 }
xed_encode_nonterminal_IGNORE66_BIND(xed_encoder_request_t * xes)1312 xed_uint32_t xed_encode_nonterminal_IGNORE66_BIND(xed_encoder_request_t* xes)
1313 {
1314 return 1;
1315 (void)xes;
1316 return 1;
1317 }
xed_encode_nonterminal_IMMUNE66_LOOP64_BIND(xed_encoder_request_t * xes)1318 xed_uint32_t xed_encode_nonterminal_IMMUNE66_LOOP64_BIND(xed_encoder_request_t* xes)
1319 {
1320 return 1;
1321 (void)xes;
1322 return 1;
1323 }
xed_encode_nonterminal_NELEM_GPR_READER_BIND(xed_encoder_request_t * xes)1324 xed_uint32_t xed_encode_nonterminal_NELEM_GPR_READER_BIND(xed_encoder_request_t* xes)
1325 {
1326 return 1;
1327 (void)xes;
1328 return 1;
1329 }
xed_encode_nonterminal_DF64_BIND(xed_encoder_request_t * xes)1330 xed_uint32_t xed_encode_nonterminal_DF64_BIND(xed_encoder_request_t* xes)
1331 {
1332 typedef struct { xed_int8_t df64;} lu_entry_t;
1333 static const lu_entry_t lu_table[3] = {
1334 /*h(0)=0 MODE=0  ->	nothing*/ {-1},
1335 /*h(1)=1 MODE=1  ->	nothing*/ {-1},
1336 /*h(2)=2 MODE=2  ->	FB DF64=1 value=0x1*/ {1}
1337 };
1338 xed_uint64_t key = 0;
1339 xed_uint64_t hidx = 0;
1340 key = xed_enc_lu_MODE(xes);
1341 hidx = key - 0;
1342 if(hidx <= 2) {
1343     if(lu_table[hidx].df64 >= 0) xed3_operand_set_df64(xes,lu_table[hidx].df64);
1344     return 1;
1345 }
1346 else{
1347     return 0;
1348 }
1349 }
xed_encode_nonterminal_MODRM_MOD_EA64_DISP32_BIND(xed_encoder_request_t * xes)1350 xed_uint32_t xed_encode_nonterminal_MODRM_MOD_EA64_DISP32_BIND(xed_encoder_request_t* xes)
1351 {
1352 typedef struct {xed_uint32_t key; xed_int8_t mod;} lu_entry_t;
1353 static const lu_entry_t lu_table[19] = {
1354 /*h(0)=0 BASE0=@  ->	FB MOD=0 value=0x0*/ {0, 0},
1355 /*h(104)=1 BASE0=XED_REG_EIP  ->	FB MOD=0 value=0x0*/ {104, 0},
1356 /*h(71)=2 BASE0=XED_REG_RBP  ->	FB MOD=2 value=0x2*/ {71, 2},
1357 /*h(73)=3 BASE0=XED_REG_RDI  ->	FB MOD=2 value=0x2*/ {73, 2},
1358 /*h(75)=4 BASE0=XED_REG_R9  ->	FB MOD=2 value=0x2*/ {75, 2},
1359 /*h(77)=5 BASE0=XED_REG_R11  ->	FB MOD=2 value=0x2*/ {77, 2},
1360 /*h(79)=6 BASE0=XED_REG_R13  ->	FB MOD=2 value=0x2*/ {79, 2},
1361 /*h(81)=7 BASE0=XED_REG_R15  ->	FB MOD=2 value=0x2*/ {81, 2},
1362 /*h(67)=8 BASE0=XED_REG_RCX  ->	FB MOD=2 value=0x2*/ {67, 2},
1363 /*h(69)=9 BASE0=XED_REG_RBX  ->	FB MOD=2 value=0x2*/ {69, 2},
1364 /*h(103)=10 BASE0=XED_REG_RIP  ->	FB MOD=0 value=0x0*/ {103, 0},
1365 /*h(70)=11 BASE0=XED_REG_RSP  ->	FB MOD=2 value=0x2*/ {70, 2},
1366 /*h(72)=12 BASE0=XED_REG_RSI  ->	FB MOD=2 value=0x2*/ {72, 2},
1367 /*h(74)=13 BASE0=XED_REG_R8  ->	FB MOD=2 value=0x2*/ {74, 2},
1368 /*h(76)=14 BASE0=XED_REG_R10  ->	FB MOD=2 value=0x2*/ {76, 2},
1369 /*h(78)=15 BASE0=XED_REG_R12  ->	FB MOD=2 value=0x2*/ {78, 2},
1370 /*h(80)=16 BASE0=XED_REG_R14  ->	FB MOD=2 value=0x2*/ {80, 2},
1371 /*h(66)=17 BASE0=XED_REG_RAX  ->	FB MOD=2 value=0x2*/ {66, 2},
1372 /*h(68)=18 BASE0=XED_REG_RDX  ->	FB MOD=2 value=0x2*/ {68, 2}
1373 };
1374 xed_uint64_t key = 0;
1375 xed_uint64_t hidx = 0;
1376 key = xed_enc_lu_BASE0(xes);
1377 hidx = ((29*key % 673) % 19);
1378 if(lu_table[hidx].key == key) {
1379     xed3_operand_set_mod(xes,lu_table[hidx].mod);
1380     return 1;
1381 }
1382 else{
1383     return 0;
1384 }
1385 }
xed_encode_nonterminal_ESIZE_4_BITS_BIND(xed_encoder_request_t * xes)1386 xed_uint32_t xed_encode_nonterminal_ESIZE_4_BITS_BIND(xed_encoder_request_t* xes)
1387 {
1388 return 1;
1389 (void)xes;
1390 return 1;
1391 }
xed_encode_nonterminal_DISP_WIDTH_0_BIND(xed_encoder_request_t * xes)1392 xed_uint32_t xed_encode_nonterminal_DISP_WIDTH_0_BIND(xed_encoder_request_t* xes)
1393 {
1394 xed_uint64_t key = 0;
1395 xed_uint64_t hidx = 0;
1396 key = xed_enc_lu_DISP_WIDTH(xes);
1397 hidx = key - 0;
1398 if(hidx == 0) {
1399     return 1;
1400 }
1401 else{
1402     return 0;
1403 }
1404 }
xed_encode_nonterminal_FIXUP_EASZ_ENC_BIND(xed_encoder_request_t * xes)1405 xed_uint32_t xed_encode_nonterminal_FIXUP_EASZ_ENC_BIND(xed_encoder_request_t* xes)
1406 {
1407 typedef struct {xed_uint32_t key; xed_int8_t easz;} lu_entry_t;
1408 static const lu_entry_t lu_table[3] = {
1409 /*h(0)=0 MODE=0 EASZ=0  ->	FB EASZ=1 value=0x1*/ {0, 1},
1410 /*h(4)=1 MODE=1 EASZ=0  ->	FB EASZ=2 value=0x2*/ {4, 2},
1411 /*h(8)=2 MODE=2 EASZ=0  ->	FB EASZ=3 value=0x3*/ {8, 3}
1412 };
1413 xed_union64_t t, u;
1414 xed_uint64_t key = 0;
1415 xed_uint64_t hidx = 0;
1416 key = xed_enc_lu_EASZ_MODE(xes);
1417 hidx = (t.u64 = 2654435769  * key, u.u64 = t.s.lo32 * 3ULL, u.s.hi32);
1418 if(lu_table[hidx].key == key) {
1419     xed3_operand_set_easz(xes,lu_table[hidx].easz);
1420     return 1;
1421 }
1422 else{
1423     return 1;
1424 }
1425 }
xed_encode_nonterminal_DISP_WIDTH_0_8_16_BIND(xed_encoder_request_t * xes)1426 xed_uint32_t xed_encode_nonterminal_DISP_WIDTH_0_8_16_BIND(xed_encoder_request_t* xes)
1427 {
1428 typedef struct {xed_uint32_t key; } lu_entry_t;
1429 static const lu_entry_t lu_table[3] = {
1430 /*h(0)=0 DISP_WIDTH=0  ->	nothing*/ {0, },
1431 /*h(16)=1 DISP_WIDTH=16  ->	nothing*/ {16, },
1432 /*h(8)=2 DISP_WIDTH=8  ->	nothing*/ {8, }
1433 };
1434 xed_uint64_t key = 0;
1435 xed_uint64_t hidx = 0;
1436 key = xed_enc_lu_DISP_WIDTH(xes);
1437 hidx = (4*key % 3);
1438 if(lu_table[hidx].key == key) {
1439     return 1;
1440 }
1441 else{
1442     return 0;
1443 }
1444 }
xed_encode_nonterminal_FIX_ROUND_LEN128_BIND(xed_encoder_request_t * xes)1445 xed_uint32_t xed_encode_nonterminal_FIX_ROUND_LEN128_BIND(xed_encoder_request_t* xes)
1446 {
1447 return 1;
1448 (void)xes;
1449 return 1;
1450 }
xed_encode_nonterminal_VEX_REXR_ENC_BIND(xed_encoder_request_t * xes)1451 xed_uint32_t xed_encode_nonterminal_VEX_REXR_ENC_BIND(xed_encoder_request_t* xes)
1452 {
1453 typedef struct { xed_int8_t error ;xed_uint32_t emit;} lu_entry_t;
1454 static const lu_entry_t lu_table[8] = {
1455 /*h(0)=0 MODE!=2 REXR=0  ->	emit 0b1 emit_type=numeric value=0x1 nbits=1*/ {-1,2},
1456 /*h(1)=1 MODE!=2 REXR=0  ->	emit 0b1 emit_type=numeric value=0x1 nbits=1*/ {-1,2},
1457 /*h(2)=2 MODE=2 REXR=0  ->	emit 0b1 emit_type=numeric value=0x1 nbits=1*/ {-1,3},
1458 /*h(3)=3 MODE!=2 REXR=0  ->	emit 0b1 emit_type=numeric value=0x1 nbits=1*/ {-1,2},
1459 /*h(4)=4 MODE!=2 REXR=1  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR,0},
1460 /*h(5)=5 MODE!=2 REXR=1  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR,0},
1461 /*h(6)=6 MODE=2 REXR=1  ->	emit 0b0 emit_type=numeric value=0x0 nbits=1*/ {-1,7},
1462 /*h(7)=7 MODE!=2 REXR=1  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR,0}
1463 };
1464 xed_uint64_t key = 0;
1465 xed_uint64_t hidx = 0;
1466 key = xed_enc_lu_MODE_REXR(xes);
1467 hidx = key - 0;
1468 if(hidx <= 7) {
1469     if(lu_table[hidx].error >= 0) xed3_operand_set_error(xes,lu_table[hidx].error);
1470     xed_encoder_request_iforms(xes)->x_VEX_REXR_ENC=lu_table[hidx].emit;
1471     return 1;
1472 }
1473 else{
1474     return 0;
1475 }
1476 }
xed_encode_nonterminal_DISP_WIDTH_16_BIND(xed_encoder_request_t * xes)1477 xed_uint32_t xed_encode_nonterminal_DISP_WIDTH_16_BIND(xed_encoder_request_t* xes)
1478 {
1479 xed_uint64_t key = 0;
1480 xed_uint64_t hidx = 0;
1481 key = xed_enc_lu_DISP_WIDTH(xes);
1482 hidx = key - 16;
1483 if(hidx == 0) {
1484     return 1;
1485 }
1486 else{
1487     return 0;
1488 }
1489 }
xed_encode_nonterminal_XOP_REXXB_ENC_BIND(xed_encoder_request_t * xes)1490 xed_uint32_t xed_encode_nonterminal_XOP_REXXB_ENC_BIND(xed_encoder_request_t* xes)
1491 {
1492 typedef struct { xed_int8_t error ;xed_uint32_t emit;} lu_entry_t;
1493 static const lu_entry_t lu_table[16] = {
1494 /*h(0)=0 MODE!=2 REXX=0 REXB=0  ->	emit 0b11 emit_type=numeric value=0x3 nbits=2*/ {-1,1},
1495 /*h(1)=1 MODE!=2 REXX=0 REXB=0  ->	emit 0b11 emit_type=numeric value=0x3 nbits=2*/ {-1,1},
1496 /*h(2)=2 MODE=2 REXX=0 REXB=0  ->	emit 0b11 emit_type=numeric value=0x3 nbits=2*/ {-1,3},
1497 /*h(3)=3 MODE!=2 REXX=0 REXB=0  ->	emit 0b11 emit_type=numeric value=0x3 nbits=2*/ {-1,1},
1498 /*h(4)=4 MODE!=2 REXX=0 REXB=1  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR,0},
1499 /*h(5)=5 MODE!=2 REXX=0 REXB=1  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR,0},
1500 /*h(6)=6 MODE=2 REXX=0 REXB=1  ->	emit 0b10 emit_type=numeric value=0x2 nbits=2*/ {-1,7},
1501 /*h(7)=7 MODE!=2 REXX=0 REXB=1  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR,0},
1502 /*h(8)=8 MODE!=2 REXX=1 REXB=0  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR,0},
1503 /*h(9)=9 MODE!=2 REXX=1 REXB=0  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR,0},
1504 /*h(10)=10 MODE=2 REXX=1 REXB=0  ->	emit 0b01 emit_type=numeric value=0x1 nbits=2*/ {-1,11},
1505 /*h(11)=11 MODE!=2 REXX=1 REXB=0  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR,0},
1506 /*h(12)=12 MODE!=2 REXX=1 REXB=1  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR,0},
1507 /*h(13)=13 MODE!=2 REXX=1 REXB=1  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR,0},
1508 /*h(14)=14 MODE=2 REXX=1 REXB=1  ->	emit 0b00 emit_type=numeric value=0x0 nbits=2*/ {-1,15},
1509 /*h(15)=15 MODE!=2 REXX=1 REXB=1  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR,0}
1510 };
1511 xed_uint64_t key = 0;
1512 xed_uint64_t hidx = 0;
1513 key = xed_enc_lu_MODE_REXB_REXX(xes);
1514 hidx = key - 0;
1515 if(hidx <= 15) {
1516     if(lu_table[hidx].error >= 0) xed3_operand_set_error(xes,lu_table[hidx].error);
1517     xed_encoder_request_iforms(xes)->x_XOP_REXXB_ENC=lu_table[hidx].emit;
1518     return 1;
1519 }
1520 else{
1521     return 1;
1522 }
1523 }
xed_encode_nonterminal_VSIB_ENC_SCALE_BIND(xed_encoder_request_t * xes)1524 xed_uint32_t xed_encode_nonterminal_VSIB_ENC_SCALE_BIND(xed_encoder_request_t* xes)
1525 {
1526 typedef struct {xed_uint32_t key; xed_int8_t sibscale;} lu_entry_t;
1527 static const lu_entry_t lu_table[5] = {
1528 /*h(0)=0 SCALE=0  ->	FB SIBSCALE=0 value=0x0*/ {0, 0},
1529 /*h(2)=1 SCALE=2  ->	FB SIBSCALE=1 value=0x1*/ {2, 1},
1530 /*h(4)=2 SCALE=4  ->	FB SIBSCALE=2 value=0x2*/ {4, 2},
1531 /*h(1)=3 SCALE=1  ->	FB SIBSCALE=0 value=0x0*/ {1, 0},
1532 /*h(8)=4 SCALE=8  ->	FB SIBSCALE=3 value=0x3*/ {8, 3}
1533 };
1534 xed_union64_t t, u;
1535 xed_uint64_t key = 0;
1536 xed_uint64_t hidx = 0;
1537 key = xed_enc_lu_SCALE(xes);
1538 hidx = (t.u64 = 2654435769  * key, u.u64 = t.s.lo32 * 5ULL, u.s.hi32);
1539 if(lu_table[hidx].key == key) {
1540     xed3_operand_set_sibscale(xes,lu_table[hidx].sibscale);
1541     return 1;
1542 }
1543 else{
1544     xed3_operand_set_error(xes,XED_ERROR_GENERAL_ERROR);
1545     return 1;
1546 }
1547 }
xed_encode_nonterminal_MODRM_RM_ENCODE_EANOT16_SIB1_BIND(xed_encoder_request_t * xes)1548 xed_uint32_t xed_encode_nonterminal_MODRM_RM_ENCODE_EANOT16_SIB1_BIND(xed_encoder_request_t* xes)
1549 {
1550 xed3_operand_set_rm(xes,4);
1551 return 1;
1552 (void)xes;
1553 return 1;
1554 }
xed_encode_nonterminal_SIBINDEX_ENCODE_BIND(xed_encoder_request_t * xes)1555 xed_uint32_t xed_encode_nonterminal_SIBINDEX_ENCODE_BIND(xed_encoder_request_t* xes)
1556 {
1557 typedef struct { xed_nt_func_ptr_t ntptr0;} lu_entry_t;
1558 static const lu_entry_t lu_table[2] = {
1559 /*h(0)=0 SIB=0  ->	nothing*/ {0},
1560 /*h(1)=1 SIB=1  ->	nt NT[SIBINDEX_ENCODE_SIB1]*/ {xed_encode_nonterminal_SIBINDEX_ENCODE_SIB1_BIND}
1561 };
1562 xed_uint64_t key = 0;
1563 xed_uint64_t hidx = 0;
1564 xed_uint64_t res = 1;
1565 key = xed_enc_lu_SIB(xes);
1566 hidx = key - 0;
1567 if(hidx <= 1) {
1568     if(lu_table[hidx].ntptr0 != 0) res=(*lu_table[hidx].ntptr0)(xes);
1569     xed_encoder_request_iforms(xes)->x_SIBINDEX_ENCODE=hidx+1;
1570     return res;
1571     return 1;
1572 }
1573 else{
1574     return 0;
1575 }
1576 }
xed_encode_nonterminal_ESIZE_64_BITS_BIND(xed_encoder_request_t * xes)1577 xed_uint32_t xed_encode_nonterminal_ESIZE_64_BITS_BIND(xed_encoder_request_t* xes)
1578 {
1579 return 1;
1580 (void)xes;
1581 return 1;
1582 }
xed_encode_nonterminal_EVEX_62_REXR_ENC_BIND(xed_encoder_request_t * xes)1583 xed_uint32_t xed_encode_nonterminal_EVEX_62_REXR_ENC_BIND(xed_encoder_request_t* xes)
1584 {
1585 typedef struct {xed_uint32_t key; xed_int8_t error ;xed_uint32_t emit;} lu_entry_t;
1586 static const lu_entry_t lu_table[6] = {
1587 /*h(5)=0 MODE=1 REXR=1  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {5, XED_ERROR_GENERAL_ERROR,0},
1588 /*h(2)=1 MODE=2 REXR=0  ->	emit 0x62 emit_type=numeric value=0x62 nbits=8 	emit 0b1 emit_type=numeric value=0x1 nbits=1*/ {2, -1,2},
1589 /*empty slot1 */ {0,0,0},
1590 /*h(1)=3 MODE=1 REXR=0  ->	emit 0x62 emit_type=numeric value=0x62 nbits=8 	emit 0b1 emit_type=numeric value=0x1 nbits=1*/ {1, -1,4},
1591 /*h(6)=4 MODE=2 REXR=1  ->	emit 0x62 emit_type=numeric value=0x62 nbits=8 	emit 0b0 emit_type=numeric value=0x0 nbits=1*/ {6, -1,5},
1592 /*empty slot1 */ {0,0,0}
1593 };
1594 xed_union64_t t, u;
1595 xed_uint64_t key = 0;
1596 xed_uint64_t hidx = 0;
1597 key = xed_enc_lu_MODE_REXR(xes);
1598 hidx = (t.u64 = 2654435769  * key, u.u64 = t.s.lo32 * 6ULL, u.s.hi32);
1599 if(lu_table[hidx].key == key) {
1600     if(lu_table[hidx].error >= 0) xed3_operand_set_error(xes,lu_table[hidx].error);
1601     xed_encoder_request_iforms(xes)->x_EVEX_62_REXR_ENC=lu_table[hidx].emit;
1602     return 1;
1603 }
1604 else{
1605     return 0;
1606 }
1607 }
xed_encode_nonterminal_NELEM_TUPLE1_WORD_BIND(xed_encoder_request_t * xes)1608 xed_uint32_t xed_encode_nonterminal_NELEM_TUPLE1_WORD_BIND(xed_encoder_request_t* xes)
1609 {
1610 return 1;
1611 (void)xes;
1612 return 1;
1613 }
xed_encode_nonterminal_NELEM_SCALAR_BIND(xed_encoder_request_t * xes)1614 xed_uint32_t xed_encode_nonterminal_NELEM_SCALAR_BIND(xed_encoder_request_t* xes)
1615 {
1616 return 1;
1617 (void)xes;
1618 return 1;
1619 }
xed_encode_nonterminal_SIBINDEX_ENCODE_SIB1_BIND(xed_encoder_request_t * xes)1620 xed_uint32_t xed_encode_nonterminal_SIBINDEX_ENCODE_SIB1_BIND(xed_encoder_request_t* xes)
1621 {
1622 typedef struct {xed_uint32_t key; xed_int8_t rexx ;xed_int8_t sibindex;} lu_entry_t;
1623 static const lu_entry_t lu_table[98] = {
1624 /*h(0)=0 INDEX=@  ->	FB SIBINDEX=4 value=0x4 	FB REXX=0 value=0x0*/ {0, 0,4},
1625 /*h(319)=1 INDEX=XED_REG_R13 EASZ=3  ->	FB SIBINDEX=5 value=0x5 	FB REXX=1 value=0x1*/ {319, 1,5},
1626 /*h(291)=2 INDEX=XED_REG_RSI EASZ=3  ->	FB SIBINDEX=6 value=0x6 	FB REXX=0 value=0x0*/ {291, 0,6},
1627 /*h(197)=3 INDEX=XED_REG_R15W EASZ=1  ->	FB SIBINDEX=7 value=0x7 	FB REXX=1 value=0x1*/ {197, 1,7},
1628 /*h(169)=4 INDEX=XED_REG_R8W EASZ=1  ->	FB SIBINDEX=0 value=0x0 	FB REXX=1 value=0x1*/ {169, 1,0},
1629 /*h(141)=5 INDEX=XED_REG_CX EASZ=1  ->	FB SIBINDEX=1 value=0x1 	FB REXX=0 value=0x0*/ {141, 0,1},
1630 /*empty slot1 */ {0,0,0},
1631 /*empty slot1 */ {0,0,0},
1632 /*h(189)=8 INDEX=XED_REG_R13W EASZ=1  ->	FB SIBINDEX=5 value=0x5 	FB REXX=1 value=0x1*/ {189, 1,5},
1633 /*h(161)=9 INDEX=XED_REG_SI EASZ=1  ->	FB SIBINDEX=6 value=0x6 	FB REXX=0 value=0x0*/ {161, 0,6},
1634 /*h(1)=10 INDEX=@  ->	FB SIBINDEX=4 value=0x4 	FB REXX=0 value=0x0*/ {1, 0,4},
1635 /*h(254)=11 INDEX=XED_REG_R13D EASZ=2  ->	FB SIBINDEX=5 value=0x5 	FB REXX=1 value=0x1*/ {254, 1,5},
1636 /*h(226)=12 INDEX=XED_REG_ESI EASZ=2  ->	FB SIBINDEX=6 value=0x6 	FB REXX=0 value=0x0*/ {226, 0,6},
1637 /*empty slot1 */ {0,0,0},
1638 /*empty slot1 */ {0,0,0},
1639 /*empty slot1 */ {0,0,0},
1640 /*h(246)=16 INDEX=XED_REG_R11D EASZ=2  ->	FB SIBINDEX=3 value=0x3 	FB REXX=1 value=0x1*/ {246, 1,3},
1641 /*empty slot1 */ {0,0,0},
1642 /*empty slot1 */ {0,0,0},
1643 /*h(311)=19 INDEX=XED_REG_R11 EASZ=3  ->	FB SIBINDEX=3 value=0x3 	FB REXX=1 value=0x1*/ {311, 1,3},
1644 /*h(2)=20 INDEX=@  ->	FB SIBINDEX=4 value=0x4 	FB REXX=0 value=0x0*/ {2, 0,4},
1645 /*empty slot1 */ {0,0,0},
1646 /*empty slot1 */ {0,0,0},
1647 /*empty slot1 */ {0,0,0},
1648 /*h(303)=24 INDEX=XED_REG_R9 EASZ=3  ->	FB SIBINDEX=1 value=0x1 	FB REXX=1 value=0x1*/ {303, 1,1},
1649 /*h(275)=25 INDEX=XED_REG_RDX EASZ=3  ->	FB SIBINDEX=2 value=0x2 	FB REXX=0 value=0x0*/ {275, 0,2},
1650 /*h(181)=26 INDEX=XED_REG_R11W EASZ=1  ->	FB SIBINDEX=3 value=0x3 	FB REXX=1 value=0x1*/ {181, 1,3},
1651 /*empty slot1 */ {0,0,0},
1652 /*empty slot1 */ {0,0,0},
1653 /*empty slot1 */ {0,0,0},
1654 /*h(3)=30 INDEX=@  ->	FB SIBINDEX=4 value=0x4 	FB REXX=0 value=0x0*/ {3, 0,4},
1655 /*empty slot1 */ {0,0,0},
1656 /*empty slot1 */ {0,0,0},
1657 /*empty slot1 */ {0,0,0},
1658 /*h(238)=34 INDEX=XED_REG_R9D EASZ=2  ->	FB SIBINDEX=1 value=0x1 	FB REXX=1 value=0x1*/ {238, 1,1},
1659 /*h(210)=35 INDEX=XED_REG_EDX EASZ=2  ->	FB SIBINDEX=2 value=0x2 	FB REXX=0 value=0x0*/ {210, 0,2},
1660 /*empty slot1 */ {0,0,0},
1661 /*empty slot1 */ {0,0,0},
1662 /*empty slot1 */ {0,0,0},
1663 /*empty slot1 */ {0,0,0},
1664 /*empty slot1 */ {0,0,0},
1665 /*h(323)=41 INDEX=XED_REG_R14 EASZ=3  ->	FB SIBINDEX=6 value=0x6 	FB REXX=1 value=0x1*/ {323, 1,6},
1666 /*h(295)=42 INDEX=XED_REG_RDI EASZ=3  ->	FB SIBINDEX=7 value=0x7 	FB REXX=0 value=0x0*/ {295, 0,7},
1667 /*h(267)=43 INDEX=XED_REG_RAX EASZ=3  ->	FB SIBINDEX=0 value=0x0 	FB REXX=0 value=0x0*/ {267, 0,0},
1668 /*h(173)=44 INDEX=XED_REG_R9W EASZ=1  ->	FB SIBINDEX=1 value=0x1 	FB REXX=1 value=0x1*/ {173, 1,1},
1669 /*h(145)=45 INDEX=XED_REG_DX EASZ=1  ->	FB SIBINDEX=2 value=0x2 	FB REXX=0 value=0x0*/ {145, 0,2},
1670 /*empty slot1 */ {0,0,0},
1671 /*empty slot1 */ {0,0,0},
1672 /*h(193)=48 INDEX=XED_REG_R14W EASZ=1  ->	FB SIBINDEX=6 value=0x6 	FB REXX=1 value=0x1*/ {193, 1,6},
1673 /*h(165)=49 INDEX=XED_REG_DI EASZ=1  ->	FB SIBINDEX=7 value=0x7 	FB REXX=0 value=0x0*/ {165, 0,7},
1674 /*h(137)=50 INDEX=XED_REG_AX EASZ=1  ->	FB SIBINDEX=0 value=0x0 	FB REXX=0 value=0x0*/ {137, 0,0},
1675 /*h(258)=51 INDEX=XED_REG_R14D EASZ=2  ->	FB SIBINDEX=6 value=0x6 	FB REXX=1 value=0x1*/ {258, 1,6},
1676 /*h(230)=52 INDEX=XED_REG_EDI EASZ=2  ->	FB SIBINDEX=7 value=0x7 	FB REXX=0 value=0x0*/ {230, 0,7},
1677 /*h(202)=53 INDEX=XED_REG_EAX EASZ=2  ->	FB SIBINDEX=0 value=0x0 	FB REXX=0 value=0x0*/ {202, 0,0},
1678 /*empty slot1 */ {0,0,0},
1679 /*empty slot1 */ {0,0,0},
1680 /*h(250)=56 INDEX=XED_REG_R12D EASZ=2  ->	FB SIBINDEX=4 value=0x4 	FB REXX=1 value=0x1*/ {250, 1,4},
1681 /*h(222)=57 INDEX=XED_REG_EBP EASZ=2  ->	FB SIBINDEX=5 value=0x5 	FB REXX=0 value=0x0*/ {222, 0,5},
1682 /*empty slot1 */ {0,0,0},
1683 /*h(315)=59 INDEX=XED_REG_R12 EASZ=3  ->	FB SIBINDEX=4 value=0x4 	FB REXX=1 value=0x1*/ {315, 1,4},
1684 /*h(287)=60 INDEX=XED_REG_RBP EASZ=3  ->	FB SIBINDEX=5 value=0x5 	FB REXX=0 value=0x0*/ {287, 0,5},
1685 /*empty slot1 */ {0,0,0},
1686 /*empty slot1 */ {0,0,0},
1687 /*empty slot1 */ {0,0,0},
1688 /*h(307)=64 INDEX=XED_REG_R10 EASZ=3  ->	FB SIBINDEX=2 value=0x2 	FB REXX=1 value=0x1*/ {307, 1,2},
1689 /*h(279)=65 INDEX=XED_REG_RBX EASZ=3  ->	FB SIBINDEX=3 value=0x3 	FB REXX=0 value=0x0*/ {279, 0,3},
1690 /*h(185)=66 INDEX=XED_REG_R12W EASZ=1  ->	FB SIBINDEX=4 value=0x4 	FB REXX=1 value=0x1*/ {185, 1,4},
1691 /*h(157)=67 INDEX=XED_REG_BP EASZ=1  ->	FB SIBINDEX=5 value=0x5 	FB REXX=0 value=0x0*/ {157, 0,5},
1692 /*empty slot1 */ {0,0,0},
1693 /*empty slot1 */ {0,0,0},
1694 /*empty slot1 */ {0,0,0},
1695 /*empty slot1 */ {0,0,0},
1696 /*empty slot1 */ {0,0,0},
1697 /*empty slot1 */ {0,0,0},
1698 /*h(242)=74 INDEX=XED_REG_R10D EASZ=2  ->	FB SIBINDEX=2 value=0x2 	FB REXX=1 value=0x1*/ {242, 1,2},
1699 /*h(214)=75 INDEX=XED_REG_EBX EASZ=2  ->	FB SIBINDEX=3 value=0x3 	FB REXX=0 value=0x0*/ {214, 0,3},
1700 /*empty slot1 */ {0,0,0},
1701 /*empty slot1 */ {0,0,0},
1702 /*empty slot1 */ {0,0,0},
1703 /*empty slot1 */ {0,0,0},
1704 /*empty slot1 */ {0,0,0},
1705 /*h(327)=81 INDEX=XED_REG_R15 EASZ=3  ->	FB SIBINDEX=7 value=0x7 	FB REXX=1 value=0x1*/ {327, 1,7},
1706 /*h(299)=82 INDEX=XED_REG_R8 EASZ=3  ->	FB SIBINDEX=0 value=0x0 	FB REXX=1 value=0x1*/ {299, 1,0},
1707 /*h(271)=83 INDEX=XED_REG_RCX EASZ=3  ->	FB SIBINDEX=1 value=0x1 	FB REXX=0 value=0x0*/ {271, 0,1},
1708 /*h(177)=84 INDEX=XED_REG_R10W EASZ=1  ->	FB SIBINDEX=2 value=0x2 	FB REXX=1 value=0x1*/ {177, 1,2},
1709 /*h(149)=85 INDEX=XED_REG_BX EASZ=1  ->	FB SIBINDEX=3 value=0x3 	FB REXX=0 value=0x0*/ {149, 0,3},
1710 /*empty slot1 */ {0,0,0},
1711 /*empty slot1 */ {0,0,0},
1712 /*empty slot1 */ {0,0,0},
1713 /*empty slot1 */ {0,0,0},
1714 /*empty slot1 */ {0,0,0},
1715 /*h(262)=91 INDEX=XED_REG_R15D EASZ=2  ->	FB SIBINDEX=7 value=0x7 	FB REXX=1 value=0x1*/ {262, 1,7},
1716 /*h(234)=92 INDEX=XED_REG_R8D EASZ=2  ->	FB SIBINDEX=0 value=0x0 	FB REXX=1 value=0x1*/ {234, 1,0},
1717 /*h(206)=93 INDEX=XED_REG_ECX EASZ=2  ->	FB SIBINDEX=1 value=0x1 	FB REXX=0 value=0x0*/ {206, 0,1},
1718 /*empty slot1 */ {0,0,0},
1719 /*empty slot1 */ {0,0,0},
1720 /*empty slot1 */ {0,0,0},
1721 /*empty slot1 */ {0,0,0}
1722 };
1723 xed_uint64_t key = 0;
1724 xed_uint64_t hidx = 0;
1725 key = xed_enc_lu_EASZ_INDEX(xes);
1726 hidx = ((10*key % 281) % 98);
1727 if(lu_table[hidx].key == key) {
1728     xed3_operand_set_rexx(xes,lu_table[hidx].rexx);
1729     xed3_operand_set_sibindex(xes,lu_table[hidx].sibindex);
1730     return 1;
1731 }
1732 else{
1733     xed3_operand_set_error(xes,XED_ERROR_GENERAL_ERROR);
1734     return 1;
1735 }
1736 }
xed_encode_nonterminal_EVEX_REXX_ENC_BIND(xed_encoder_request_t * xes)1737 xed_uint32_t xed_encode_nonterminal_EVEX_REXX_ENC_BIND(xed_encoder_request_t* xes)
1738 {
1739 typedef struct {xed_uint32_t key; xed_int8_t error ;xed_uint32_t emit;} lu_entry_t;
1740 static const lu_entry_t lu_table[6] = {
1741 /*h(5)=0 MODE=1 REXX=1  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {5, XED_ERROR_GENERAL_ERROR,0},
1742 /*h(2)=1 MODE=2 REXX=0  ->	emit 0b1 emit_type=numeric value=0x1 nbits=1*/ {2, -1,2},
1743 /*empty slot1 */ {0,0,0},
1744 /*h(1)=3 MODE=1 REXX=0  ->	emit 0b1 emit_type=numeric value=0x1 nbits=1*/ {1, -1,4},
1745 /*h(6)=4 MODE=2 REXX=1  ->	emit 0b0 emit_type=numeric value=0x0 nbits=1*/ {6, -1,5},
1746 /*empty slot1 */ {0,0,0}
1747 };
1748 xed_union64_t t, u;
1749 xed_uint64_t key = 0;
1750 xed_uint64_t hidx = 0;
1751 key = xed_enc_lu_MODE_REXX(xes);
1752 hidx = (t.u64 = 2654435769  * key, u.u64 = t.s.lo32 * 6ULL, u.s.hi32);
1753 if(lu_table[hidx].key == key) {
1754     if(lu_table[hidx].error >= 0) xed3_operand_set_error(xes,lu_table[hidx].error);
1755     xed_encoder_request_iforms(xes)->x_EVEX_REXX_ENC=lu_table[hidx].emit;
1756     return 1;
1757 }
1758 else{
1759     return 0;
1760 }
1761 }
xed_encode_nonterminal_XOP_TYPE_ENC_BIND(xed_encoder_request_t * xes)1762 xed_uint32_t xed_encode_nonterminal_XOP_TYPE_ENC_BIND(xed_encoder_request_t* xes)
1763 {
1764 typedef struct { xed_uint32_t emit;} lu_entry_t;
1765 static const lu_entry_t lu_table[3] = {
1766 /*h(8)=0 MAP=8  ->	emit 0x8F emit_type=numeric value=0x8f nbits=8*/ {1},
1767 /*h(9)=1 MAP=9  ->	emit 0x8F emit_type=numeric value=0x8f nbits=8*/ {2},
1768 /*h(10)=2 MAP=10  ->	emit 0x8F emit_type=numeric value=0x8f nbits=8*/ {3}
1769 };
1770 xed_uint64_t key = 0;
1771 xed_uint64_t hidx = 0;
1772 key = xed_enc_lu_MAP(xes);
1773 hidx = key - 8;
1774 if(hidx <= 2) {
1775     xed_encoder_request_iforms(xes)->x_XOP_TYPE_ENC=lu_table[hidx].emit;
1776     return 1;
1777 }
1778 else{
1779     xed3_operand_set_error(xes,XED_ERROR_GENERAL_ERROR);
1780     return 1;
1781 }
1782 }
xed_encode_nonterminal_ESIZE_8_BITS_BIND(xed_encoder_request_t * xes)1783 xed_uint32_t xed_encode_nonterminal_ESIZE_8_BITS_BIND(xed_encoder_request_t* xes)
1784 {
1785 return 1;
1786 (void)xes;
1787 return 1;
1788 }
xed_encode_nonterminal_NELEM_GPR_WRITER_STORE_BYTE_BIND(xed_encoder_request_t * xes)1789 xed_uint32_t xed_encode_nonterminal_NELEM_GPR_WRITER_STORE_BYTE_BIND(xed_encoder_request_t* xes)
1790 {
1791 return 1;
1792 (void)xes;
1793 return 1;
1794 }
xed_encode_nonterminal_NELEM_MOVDDUP_BIND(xed_encoder_request_t * xes)1795 xed_uint32_t xed_encode_nonterminal_NELEM_MOVDDUP_BIND(xed_encoder_request_t* xes)
1796 {
1797 return 1;
1798 (void)xes;
1799 return 1;
1800 }
xed_encode_nonterminal_IMMUNE66_BIND(xed_encoder_request_t * xes)1801 xed_uint32_t xed_encode_nonterminal_IMMUNE66_BIND(xed_encoder_request_t* xes)
1802 {
1803 typedef struct { xed_int8_t df32 ;xed_int8_t eosz;} lu_entry_t;
1804 static const lu_entry_t lu_table[1] = {
1805 /*h(0)=0 MODE=0  ->	FB EOSZ=2 value=0x2 	FB DF32=1 value=0x1*/ {1,2}
1806 };
1807 xed_uint64_t key = 0;
1808 xed_uint64_t hidx = 0;
1809 key = xed_enc_lu_MODE(xes);
1810 hidx = key - 0;
1811 if(hidx == 0) {
1812     xed3_operand_set_df32(xes,lu_table[hidx].df32);
1813     xed3_operand_set_eosz(xes,lu_table[hidx].eosz);
1814     return 1;
1815 }
1816 else{
1817     return 1;
1818 }
1819 }
xed_encode_nonterminal_SIBBASE_ENCODE_SIB1_BIND(xed_encoder_request_t * xes)1820 xed_uint32_t xed_encode_nonterminal_SIBBASE_ENCODE_SIB1_BIND(xed_encoder_request_t* xes)
1821 {
1822 typedef struct {xed_uint32_t key; xed_int8_t rexb ;xed_int8_t sibbase ;xed_nt_func_ptr_t ntptr0;} lu_entry_t;
1823 static const lu_entry_t lu_table[104] = {
1824 /*h(0)=0 BASE0=@  ->	nt NT[DISP_WIDTH_32] 	FB SIBBASE=5 value=0x5 	FB REXB=0 value=0x0*/ {0, 0,5,xed_encode_nonterminal_DISP_WIDTH_32_BIND},
1825 /*empty slot1 */ {0,0,0,0},
1826 /*empty slot1 */ {0,0,0,0},
1827 /*h(548)=3 BASE0=XED_REG_DX EASZ=1  ->	FB SIBBASE=2 value=0x2 	FB REXB=0 value=0x0*/ {548, 0,2,0},
1828 /*empty slot1 */ {0,0,0,0},
1829 /*empty slot1 */ {0,0,0,0},
1830 /*empty slot1 */ {0,0,0,0},
1831 /*h(549)=7 BASE0=XED_REG_BX EASZ=1  ->	FB SIBBASE=3 value=0x3 	FB REXB=0 value=0x0*/ {549, 0,3,0},
1832 /*empty slot1 */ {0,0,0,0},
1833 /*empty slot1 */ {0,0,0,0},
1834 /*empty slot1 */ {0,0,0,0},
1835 /*h(550)=11 BASE0=XED_REG_SP EASZ=1  ->	FB SIBBASE=4 value=0x4 	FB REXB=0 value=0x0*/ {550, 0,4,0},
1836 /*h(1024)=12 BASE0=@  ->	nt NT[DISP_WIDTH_32] 	FB SIBBASE=5 value=0x5 	FB REXB=0 value=0x0*/ {1024, 0,5,xed_encode_nonterminal_DISP_WIDTH_32_BIND},
1837 /*h(1074)=13 BASE0=XED_REG_EAX EASZ=2  ->	FB SIBBASE=0 value=0x0 	FB REXB=0 value=0x0*/ {1074, 0,0,0},
1838 /*empty slot1 */ {0,0,0,0},
1839 /*h(551)=15 BASE0=XED_REG_BP EASZ=1  ->	nt NT[DISP_WIDTH_0_8_32] 	FB SIBBASE=5 value=0x5 	FB REXB=0 value=0x0*/ {551, 0,5,xed_encode_nonterminal_DISP_WIDTH_0_8_32_BIND},
1840 /*empty slot1 */ {0,0,0,0},
1841 /*h(1075)=17 BASE0=XED_REG_ECX EASZ=2  ->	FB SIBBASE=1 value=0x1 	FB REXB=0 value=0x0*/ {1075, 0,1,0},
1842 /*empty slot1 */ {0,0,0,0},
1843 /*h(552)=19 BASE0=XED_REG_SI EASZ=1  ->	FB SIBBASE=6 value=0x6 	FB REXB=0 value=0x0*/ {552, 0,6,0},
1844 /*empty slot1 */ {0,0,0,0},
1845 /*h(1076)=21 BASE0=XED_REG_EDX EASZ=2  ->	FB SIBBASE=2 value=0x2 	FB REXB=0 value=0x0*/ {1076, 0,2,0},
1846 /*empty slot1 */ {0,0,0,0},
1847 /*h(553)=23 BASE0=XED_REG_DI EASZ=1  ->	FB SIBBASE=7 value=0x7 	FB REXB=0 value=0x0*/ {553, 0,7,0},
1848 /*empty slot1 */ {0,0,0,0},
1849 /*h(1077)=25 BASE0=XED_REG_EBX EASZ=2  ->	FB SIBBASE=3 value=0x3 	FB REXB=0 value=0x0*/ {1077, 0,3,0},
1850 /*empty slot1 */ {0,0,0,0},
1851 /*h(554)=27 BASE0=XED_REG_R8W EASZ=1  ->	FB SIBBASE=0 value=0x0 	FB REXB=1 value=0x1*/ {554, 1,0,0},
1852 /*empty slot1 */ {0,0,0,0},
1853 /*h(1078)=29 BASE0=XED_REG_ESP EASZ=2  ->	FB SIBBASE=4 value=0x4 	FB REXB=0 value=0x0*/ {1078, 0,4,0},
1854 /*empty slot1 */ {0,0,0,0},
1855 /*h(555)=31 BASE0=XED_REG_R9W EASZ=1  ->	FB SIBBASE=1 value=0x1 	FB REXB=1 value=0x1*/ {555, 1,1,0},
1856 /*empty slot1 */ {0,0,0,0},
1857 /*h(1079)=33 BASE0=XED_REG_EBP EASZ=2  ->	nt NT[DISP_WIDTH_0_8_32] 	FB SIBBASE=5 value=0x5 	FB REXB=0 value=0x0*/ {1079, 0,5,xed_encode_nonterminal_DISP_WIDTH_0_8_32_BIND},
1858 /*empty slot1 */ {0,0,0,0},
1859 /*h(556)=35 BASE0=XED_REG_R10W EASZ=1  ->	FB SIBBASE=2 value=0x2 	FB REXB=1 value=0x1*/ {556, 1,2,0},
1860 /*empty slot1 */ {0,0,0,0},
1861 /*h(1080)=37 BASE0=XED_REG_ESI EASZ=2  ->	FB SIBBASE=6 value=0x6 	FB REXB=0 value=0x0*/ {1080, 0,6,0},
1862 /*empty slot1 */ {0,0,0,0},
1863 /*h(557)=39 BASE0=XED_REG_R11W EASZ=1  ->	FB SIBBASE=3 value=0x3 	FB REXB=1 value=0x1*/ {557, 1,3,0},
1864 /*h(1602)=40 BASE0=XED_REG_RAX EASZ=3  ->	FB SIBBASE=0 value=0x0 	FB REXB=0 value=0x0*/ {1602, 0,0,0},
1865 /*h(1081)=41 BASE0=XED_REG_EDI EASZ=2  ->	FB SIBBASE=7 value=0x7 	FB REXB=0 value=0x0*/ {1081, 0,7,0},
1866 /*empty slot1 */ {0,0,0,0},
1867 /*h(558)=43 BASE0=XED_REG_R12W EASZ=1  ->	FB SIBBASE=4 value=0x4 	FB REXB=1 value=0x1*/ {558, 1,4,0},
1868 /*h(1603)=44 BASE0=XED_REG_RCX EASZ=3  ->	FB SIBBASE=1 value=0x1 	FB REXB=0 value=0x0*/ {1603, 0,1,0},
1869 /*h(1082)=45 BASE0=XED_REG_R8D EASZ=2  ->	FB SIBBASE=0 value=0x0 	FB REXB=1 value=0x1*/ {1082, 1,0,0},
1870 /*empty slot1 */ {0,0,0,0},
1871 /*h(559)=47 BASE0=XED_REG_R13W EASZ=1  ->	nt NT[DISP_WIDTH_0_8_32] 	FB SIBBASE=5 value=0x5 	FB REXB=1 value=0x1*/ {559, 1,5,xed_encode_nonterminal_DISP_WIDTH_0_8_32_BIND},
1872 /*h(1604)=48 BASE0=XED_REG_RDX EASZ=3  ->	FB SIBBASE=2 value=0x2 	FB REXB=0 value=0x0*/ {1604, 0,2,0},
1873 /*h(1083)=49 BASE0=XED_REG_R9D EASZ=2  ->	FB SIBBASE=1 value=0x1 	FB REXB=1 value=0x1*/ {1083, 1,1,0},
1874 /*empty slot1 */ {0,0,0,0},
1875 /*h(560)=51 BASE0=XED_REG_R14W EASZ=1  ->	FB SIBBASE=6 value=0x6 	FB REXB=1 value=0x1*/ {560, 1,6,0},
1876 /*h(1605)=52 BASE0=XED_REG_RBX EASZ=3  ->	FB SIBBASE=3 value=0x3 	FB REXB=0 value=0x0*/ {1605, 0,3,0},
1877 /*h(1084)=53 BASE0=XED_REG_R10D EASZ=2  ->	FB SIBBASE=2 value=0x2 	FB REXB=1 value=0x1*/ {1084, 1,2,0},
1878 /*empty slot1 */ {0,0,0,0},
1879 /*h(561)=55 BASE0=XED_REG_R15W EASZ=1  ->	FB SIBBASE=7 value=0x7 	FB REXB=1 value=0x1*/ {561, 1,7,0},
1880 /*h(1606)=56 BASE0=XED_REG_RSP EASZ=3  ->	FB SIBBASE=4 value=0x4 	FB REXB=0 value=0x0*/ {1606, 0,4,0},
1881 /*h(1085)=57 BASE0=XED_REG_R11D EASZ=2  ->	FB SIBBASE=3 value=0x3 	FB REXB=1 value=0x1*/ {1085, 1,3,0},
1882 /*h(512)=58 BASE0=@  ->	nt NT[DISP_WIDTH_32] 	FB SIBBASE=5 value=0x5 	FB REXB=0 value=0x0*/ {512, 0,5,xed_encode_nonterminal_DISP_WIDTH_32_BIND},
1883 /*empty slot1 */ {0,0,0,0},
1884 /*h(1607)=60 BASE0=XED_REG_RBP EASZ=3  ->	nt NT[DISP_WIDTH_0_8_32] 	FB SIBBASE=5 value=0x5 	FB REXB=0 value=0x0*/ {1607, 0,5,xed_encode_nonterminal_DISP_WIDTH_0_8_32_BIND},
1885 /*h(1086)=61 BASE0=XED_REG_R12D EASZ=2  ->	FB SIBBASE=4 value=0x4 	FB REXB=1 value=0x1*/ {1086, 1,4,0},
1886 /*empty slot1 */ {0,0,0,0},
1887 /*empty slot1 */ {0,0,0,0},
1888 /*h(1608)=64 BASE0=XED_REG_RSI EASZ=3  ->	FB SIBBASE=6 value=0x6 	FB REXB=0 value=0x0*/ {1608, 0,6,0},
1889 /*h(1087)=65 BASE0=XED_REG_R13D EASZ=2  ->	nt NT[DISP_WIDTH_0_8_32] 	FB SIBBASE=5 value=0x5 	FB REXB=1 value=0x1*/ {1087, 1,5,xed_encode_nonterminal_DISP_WIDTH_0_8_32_BIND},
1890 /*empty slot1 */ {0,0,0,0},
1891 /*empty slot1 */ {0,0,0,0},
1892 /*h(1609)=68 BASE0=XED_REG_RDI EASZ=3  ->	FB SIBBASE=7 value=0x7 	FB REXB=0 value=0x0*/ {1609, 0,7,0},
1893 /*h(1088)=69 BASE0=XED_REG_R14D EASZ=2  ->	FB SIBBASE=6 value=0x6 	FB REXB=1 value=0x1*/ {1088, 1,6,0},
1894 /*h(1536)=70 BASE0=@  ->	nt NT[DISP_WIDTH_32] 	FB SIBBASE=5 value=0x5 	FB REXB=0 value=0x0*/ {1536, 0,5,xed_encode_nonterminal_DISP_WIDTH_32_BIND},
1895 /*empty slot1 */ {0,0,0,0},
1896 /*h(1610)=72 BASE0=XED_REG_R8 EASZ=3  ->	FB SIBBASE=0 value=0x0 	FB REXB=1 value=0x1*/ {1610, 1,0,0},
1897 /*h(1089)=73 BASE0=XED_REG_R15D EASZ=2  ->	FB SIBBASE=7 value=0x7 	FB REXB=1 value=0x1*/ {1089, 1,7,0},
1898 /*empty slot1 */ {0,0,0,0},
1899 /*empty slot1 */ {0,0,0,0},
1900 /*h(1611)=76 BASE0=XED_REG_R9 EASZ=3  ->	FB SIBBASE=1 value=0x1 	FB REXB=1 value=0x1*/ {1611, 1,1,0},
1901 /*empty slot1 */ {0,0,0,0},
1902 /*empty slot1 */ {0,0,0,0},
1903 /*empty slot1 */ {0,0,0,0},
1904 /*h(1612)=80 BASE0=XED_REG_R10 EASZ=3  ->	FB SIBBASE=2 value=0x2 	FB REXB=1 value=0x1*/ {1612, 1,2,0},
1905 /*empty slot1 */ {0,0,0,0},
1906 /*empty slot1 */ {0,0,0,0},
1907 /*empty slot1 */ {0,0,0,0},
1908 /*h(1613)=84 BASE0=XED_REG_R11 EASZ=3  ->	FB SIBBASE=3 value=0x3 	FB REXB=1 value=0x1*/ {1613, 1,3,0},
1909 /*empty slot1 */ {0,0,0,0},
1910 /*empty slot1 */ {0,0,0,0},
1911 /*empty slot1 */ {0,0,0,0},
1912 /*h(1614)=88 BASE0=XED_REG_R12 EASZ=3  ->	FB SIBBASE=4 value=0x4 	FB REXB=1 value=0x1*/ {1614, 1,4,0},
1913 /*empty slot1 */ {0,0,0,0},
1914 /*h(546)=90 BASE0=XED_REG_AX EASZ=1  ->	FB SIBBASE=0 value=0x0 	FB REXB=0 value=0x0*/ {546, 0,0,0},
1915 /*empty slot1 */ {0,0,0,0},
1916 /*h(1615)=92 BASE0=XED_REG_R13 EASZ=3  ->	nt NT[DISP_WIDTH_0_8_32] 	FB SIBBASE=5 value=0x5 	FB REXB=1 value=0x1*/ {1615, 1,5,xed_encode_nonterminal_DISP_WIDTH_0_8_32_BIND},
1917 /*empty slot1 */ {0,0,0,0},
1918 /*h(547)=94 BASE0=XED_REG_CX EASZ=1  ->	FB SIBBASE=1 value=0x1 	FB REXB=0 value=0x0*/ {547, 0,1,0},
1919 /*empty slot1 */ {0,0,0,0},
1920 /*h(1616)=96 BASE0=XED_REG_R14 EASZ=3  ->	FB SIBBASE=6 value=0x6 	FB REXB=1 value=0x1*/ {1616, 1,6,0},
1921 /*empty slot1 */ {0,0,0,0},
1922 /*empty slot1 */ {0,0,0,0},
1923 /*empty slot1 */ {0,0,0,0},
1924 /*h(1617)=100 BASE0=XED_REG_R15 EASZ=3  ->	FB SIBBASE=7 value=0x7 	FB REXB=1 value=0x1*/ {1617, 1,7,0},
1925 /*empty slot1 */ {0,0,0,0},
1926 /*empty slot1 */ {0,0,0,0},
1927 /*empty slot1 */ {0,0,0,0}
1928 };
1929 xed_uint64_t key = 0;
1930 xed_uint64_t hidx = 0;
1931 xed_uint64_t res = 1;
1932 key = xed_enc_lu_BASE0_EASZ(xes);
1933 hidx = ((4*key % 199) % 104);
1934 if(lu_table[hidx].key == key) {
1935     xed3_operand_set_rexb(xes,lu_table[hidx].rexb);
1936     xed3_operand_set_sibbase(xes,lu_table[hidx].sibbase);
1937     if(lu_table[hidx].ntptr0 != 0) res=(*lu_table[hidx].ntptr0)(xes);
1938     xed_encoder_request_iforms(xes)->x_SIBBASE_ENCODE_SIB1=hidx+1;
1939     return res;
1940     return 1;
1941 }
1942 else{
1943     xed3_operand_set_error(xes,XED_ERROR_GENERAL_ERROR);
1944     return 1;
1945 }
1946 }
xed_encode_nonterminal_CR_WIDTH_BIND(xed_encoder_request_t * xes)1947 xed_uint32_t xed_encode_nonterminal_CR_WIDTH_BIND(xed_encoder_request_t* xes)
1948 {
1949 typedef struct { xed_int8_t df32 ;xed_int8_t df64 ;xed_int8_t eosz;} lu_entry_t;
1950 static const lu_entry_t lu_table[3] = {
1951 /*h(0)=0 MODE=0  ->	FB DF32=1 value=0x1 	FB EOSZ=2 value=0x2*/ {1,-1,2},
1952 /*h(1)=1 MODE=1  ->	nothing*/ {-1,-1,-1},
1953 /*h(2)=2 MODE=2  ->	FB DF64=1 value=0x1 	FB EOSZ=3 value=0x3*/ {-1,1,3}
1954 };
1955 xed_uint64_t key = 0;
1956 xed_uint64_t hidx = 0;
1957 key = xed_enc_lu_MODE(xes);
1958 hidx = key - 0;
1959 if(hidx <= 2) {
1960     if(lu_table[hidx].df32 >= 0) xed3_operand_set_df32(xes,lu_table[hidx].df32);
1961     if(lu_table[hidx].df64 >= 0) xed3_operand_set_df64(xes,lu_table[hidx].df64);
1962     if(lu_table[hidx].eosz >= 0) xed3_operand_set_eosz(xes,lu_table[hidx].eosz);
1963     return 1;
1964 }
1965 else{
1966     return 0;
1967 }
1968 }
xed_encode_nonterminal_NELEM_GPR_READER_WORD_BIND(xed_encoder_request_t * xes)1969 xed_uint32_t xed_encode_nonterminal_NELEM_GPR_READER_WORD_BIND(xed_encoder_request_t* xes)
1970 {
1971 return 1;
1972 (void)xes;
1973 return 1;
1974 }
xed_encode_nonterminal_VEX_MAP_ENC_BIND(xed_encoder_request_t * xes)1975 xed_uint32_t xed_encode_nonterminal_VEX_MAP_ENC_BIND(xed_encoder_request_t* xes)
1976 {
1977 typedef struct { xed_uint32_t emit;} lu_entry_t;
1978 static const lu_entry_t lu_table[4] = {
1979 /*h(16)=0 VEX_C4=1 MAP=0 REXW[w]=*  ->	emit 0b0_0000 emit_type=numeric value=0x0 nbits=5 	emit w emit_type=letters nbits=1*/ {1},
1980 /*h(17)=1 VEX_C4=1 MAP=1 REXW[w]=*  ->	emit 0b0_0001 emit_type=numeric value=0x1 nbits=5 	emit w emit_type=letters nbits=1*/ {2},
1981 /*h(18)=2 VEX_C4=1 MAP=2 REXW[w]=*  ->	emit 0b0_0010 emit_type=numeric value=0x2 nbits=5 	emit w emit_type=letters nbits=1*/ {3},
1982 /*h(19)=3 VEX_C4=1 MAP=3 REXW[w]=*  ->	emit 0b0_0011 emit_type=numeric value=0x3 nbits=5 	emit w emit_type=letters nbits=1*/ {4}
1983 };
1984 xed_uint64_t key = 0;
1985 xed_uint64_t hidx = 0;
1986 key = xed_enc_lu_MAP_VEX_C4(xes);
1987 hidx = key - 16;
1988 if(hidx <= 3) {
1989     xed_encoder_request_iforms(xes)->x_VEX_MAP_ENC=lu_table[hidx].emit;
1990     return 1;
1991 }
1992 else{
1993     return 1;
1994 }
1995 }
xed_encode_nonterminal_MODRM_MOD_EA64_DISP8_BIND(xed_encoder_request_t * xes)1996 xed_uint32_t xed_encode_nonterminal_MODRM_MOD_EA64_DISP8_BIND(xed_encoder_request_t* xes)
1997 {
1998 typedef struct { xed_int8_t mod;} lu_entry_t;
1999 static const lu_entry_t lu_table[16] = {
2000 /*h(66)=0 BASE0=XED_REG_RAX  ->	FB MOD=1 value=0x1*/ {1},
2001 /*h(67)=1 BASE0=XED_REG_RCX  ->	FB MOD=1 value=0x1*/ {1},
2002 /*h(68)=2 BASE0=XED_REG_RDX  ->	FB MOD=1 value=0x1*/ {1},
2003 /*h(69)=3 BASE0=XED_REG_RBX  ->	FB MOD=1 value=0x1*/ {1},
2004 /*h(70)=4 BASE0=XED_REG_RSP  ->	FB MOD=1 value=0x1*/ {1},
2005 /*h(71)=5 BASE0=XED_REG_RBP  ->	FB MOD=1 value=0x1*/ {1},
2006 /*h(72)=6 BASE0=XED_REG_RSI  ->	FB MOD=1 value=0x1*/ {1},
2007 /*h(73)=7 BASE0=XED_REG_RDI  ->	FB MOD=1 value=0x1*/ {1},
2008 /*h(74)=8 BASE0=XED_REG_R8  ->	FB MOD=1 value=0x1*/ {1},
2009 /*h(75)=9 BASE0=XED_REG_R9  ->	FB MOD=1 value=0x1*/ {1},
2010 /*h(76)=10 BASE0=XED_REG_R10  ->	FB MOD=1 value=0x1*/ {1},
2011 /*h(77)=11 BASE0=XED_REG_R11  ->	FB MOD=1 value=0x1*/ {1},
2012 /*h(78)=12 BASE0=XED_REG_R12  ->	FB MOD=1 value=0x1*/ {1},
2013 /*h(79)=13 BASE0=XED_REG_R13  ->	FB MOD=1 value=0x1*/ {1},
2014 /*h(80)=14 BASE0=XED_REG_R14  ->	FB MOD=1 value=0x1*/ {1},
2015 /*h(81)=15 BASE0=XED_REG_R15  ->	FB MOD=1 value=0x1*/ {1}
2016 };
2017 xed_uint64_t key = 0;
2018 xed_uint64_t hidx = 0;
2019 key = xed_enc_lu_BASE0(xes);
2020 hidx = key - 66;
2021 if(hidx <= 15) {
2022     xed3_operand_set_mod(xes,lu_table[hidx].mod);
2023     return 1;
2024 }
2025 else{
2026     return 0;
2027 }
2028 }
xed_encode_nonterminal_MODRM_MOD_EA64_DISP0_BIND(xed_encoder_request_t * xes)2029 xed_uint32_t xed_encode_nonterminal_MODRM_MOD_EA64_DISP0_BIND(xed_encoder_request_t* xes)
2030 {
2031 typedef struct {xed_uint32_t key; xed_int8_t disp ;xed_int8_t disp_width ;xed_int8_t mod;} lu_entry_t;
2032 static const lu_entry_t lu_table[26] = {
2033 /*h(68)=0 BASE0=XED_REG_RDX  ->	FB MOD=0 value=0x0*/ {68, -1,-1,0},
2034 /*h(81)=1 BASE0=XED_REG_R15  ->	FB MOD=0 value=0x0*/ {81, -1,-1,0},
2035 /*empty slot1 */ {0,0,0,0},
2036 /*h(73)=3 BASE0=XED_REG_RDI  ->	FB MOD=0 value=0x0*/ {73, -1,-1,0},
2037 /*empty slot1 */ {0,0,0,0},
2038 /*h(78)=5 BASE0=XED_REG_R12  ->	FB MOD=0 value=0x0*/ {78, -1,-1,0},
2039 /*h(70)=6 BASE0=XED_REG_RSP  ->	FB MOD=0 value=0x0*/ {70, -1,-1,0},
2040 /*h(104)=7 BASE0=XED_REG_EIP  ->	FB MOD=0 value=0x0 	FB DISP_WIDTH=32 value=0x20 	FB DISP=0 value=0x0*/ {104, 0,32,0},
2041 /*empty slot1 */ {0,0,0,0},
2042 /*h(75)=9 BASE0=XED_REG_R9  ->	FB MOD=0 value=0x0*/ {75, -1,-1,0},
2043 /*h(67)=10 BASE0=XED_REG_RCX  ->	FB MOD=0 value=0x0*/ {67, -1,-1,0},
2044 /*h(80)=11 BASE0=XED_REG_R14  ->	FB MOD=0 value=0x0*/ {80, -1,-1,0},
2045 /*h(72)=12 BASE0=XED_REG_RSI  ->	FB MOD=0 value=0x0*/ {72, -1,-1,0},
2046 /*empty slot1 */ {0,0,0,0},
2047 /*empty slot1 */ {0,0,0,0},
2048 /*h(77)=15 BASE0=XED_REG_R11  ->	FB MOD=0 value=0x0*/ {77, -1,-1,0},
2049 /*h(69)=16 BASE0=XED_REG_RBX  ->	FB MOD=0 value=0x0*/ {69, -1,-1,0},
2050 /*h(103)=17 BASE0=XED_REG_RIP  ->	FB MOD=0 value=0x0 	FB DISP_WIDTH=32 value=0x20 	FB DISP=0 value=0x0*/ {103, 0,32,0},
2051 /*empty slot1 */ {0,0,0,0},
2052 /*h(74)=19 BASE0=XED_REG_R8  ->	FB MOD=0 value=0x0*/ {74, -1,-1,0},
2053 /*h(66)=20 BASE0=XED_REG_RAX  ->	FB MOD=0 value=0x0*/ {66, -1,-1,0},
2054 /*h(79)=21 BASE0=XED_REG_R13  ->	FB MOD=1 value=0x1 	FB DISP_WIDTH=8 value=0x8 	FB DISP=0 value=0x0*/ {79, 0,8,1},
2055 /*h(71)=22 BASE0=XED_REG_RBP  ->	FB MOD=1 value=0x1 	FB DISP_WIDTH=8 value=0x8 	FB DISP=0 value=0x0*/ {71, 0,8,1},
2056 /*empty slot1 */ {0,0,0,0},
2057 /*empty slot1 */ {0,0,0,0},
2058 /*h(76)=25 BASE0=XED_REG_R10  ->	FB MOD=0 value=0x0*/ {76, -1,-1,0}
2059 };
2060 xed_union64_t t, u;
2061 xed_uint64_t key = 0;
2062 xed_uint64_t hidx = 0;
2063 key = xed_enc_lu_BASE0(xes);
2064 hidx = (t.u64 = 2654435769  * key, u.u64 = t.s.lo32 * 26ULL, u.s.hi32);
2065 if(lu_table[hidx].key == key) {
2066     if(lu_table[hidx].disp >= 0) xed3_operand_set_disp(xes,lu_table[hidx].disp);
2067     if(lu_table[hidx].disp_width >= 0) xed3_operand_set_disp_width(xes,lu_table[hidx].disp_width);
2068     xed3_operand_set_mod(xes,lu_table[hidx].mod);
2069     return 1;
2070 }
2071 else{
2072     return 0;
2073 }
2074 }
xed_encode_nonterminal_NELEM_TUPLE2_BIND(xed_encoder_request_t * xes)2075 xed_uint32_t xed_encode_nonterminal_NELEM_TUPLE2_BIND(xed_encoder_request_t* xes)
2076 {
2077 return 1;
2078 (void)xes;
2079 return 1;
2080 }
xed_encode_nonterminal_REFINING66_BIND(xed_encoder_request_t * xes)2081 xed_uint32_t xed_encode_nonterminal_REFINING66_BIND(xed_encoder_request_t* xes)
2082 {
2083 return 1;
2084 (void)xes;
2085 return 1;
2086 }
xed_encode_nonterminal_MODRM_RM_ENCODE_EA64_SIB0_BIND(xed_encoder_request_t * xes)2087 xed_uint32_t xed_encode_nonterminal_MODRM_RM_ENCODE_EA64_SIB0_BIND(xed_encoder_request_t* xes)
2088 {
2089 typedef struct {xed_uint32_t key; xed_int8_t rexb ;xed_int8_t rm ;xed_nt_func_ptr_t ntptr0;} lu_entry_t;
2090 static const lu_entry_t lu_table[17] = {
2091 /*h(0)=0 BASE0=@  ->	nt NT[DISP_WIDTH_32] 	FB RM=5 value=0x5*/ {0, -1,5,xed_encode_nonterminal_DISP_WIDTH_32_BIND},
2092 /*h(73)=1 BASE0=XED_REG_RDI  ->	FB RM=7 value=0x7 	FB REXB=0 value=0x0*/ {73, 0,7,0},
2093 /*h(68)=2 BASE0=XED_REG_RDX  ->	FB RM=2 value=0x2 	FB REXB=0 value=0x0*/ {68, 0,2,0},
2094 /*h(80)=3 BASE0=XED_REG_R14  ->	FB RM=6 value=0x6 	FB REXB=1 value=0x1*/ {80, 1,6,0},
2095 /*h(75)=4 BASE0=XED_REG_R9  ->	FB RM=1 value=0x1 	FB REXB=1 value=0x1*/ {75, 1,1,0},
2096 /*h(81)=5 BASE0=XED_REG_R15  ->	FB RM=7 value=0x7 	FB REXB=1 value=0x1*/ {81, 1,7,0},
2097 /*h(104)=6 BASE0=XED_REG_EIP  ->	FB RM=5 value=0x5*/ {104, -1,5,0},
2098 /*h(77)=7 BASE0=XED_REG_R11  ->	FB RM=3 value=0x3 	FB REXB=1 value=0x1*/ {77, 1,3,0},
2099 /*h(72)=8 BASE0=XED_REG_RSI  ->	FB RM=6 value=0x6 	FB REXB=0 value=0x0*/ {72, 0,6,0},
2100 /*h(67)=9 BASE0=XED_REG_RCX  ->	FB RM=1 value=0x1 	FB REXB=0 value=0x0*/ {67, 0,1,0},
2101 /*h(79)=10 BASE0=XED_REG_R13  ->	nt NT[DISP_WIDTH_0_8_32] 	FB RM=5 value=0x5 	FB REXB=1 value=0x1*/ {79, 1,5,xed_encode_nonterminal_DISP_WIDTH_0_8_32_BIND},
2102 /*h(74)=11 BASE0=XED_REG_R8  ->	FB RM=0 value=0x0 	FB REXB=1 value=0x1*/ {74, 1,0,0},
2103 /*h(69)=12 BASE0=XED_REG_RBX  ->	FB RM=3 value=0x3 	FB REXB=0 value=0x0*/ {69, 0,3,0},
2104 /*h(103)=13 BASE0=XED_REG_RIP  ->	FB RM=5 value=0x5*/ {103, -1,5,0},
2105 /*h(76)=14 BASE0=XED_REG_R10  ->	FB RM=2 value=0x2 	FB REXB=1 value=0x1*/ {76, 1,2,0},
2106 /*h(71)=15 BASE0=XED_REG_RBP  ->	nt NT[DISP_WIDTH_0_8_32] 	FB RM=5 value=0x5 	FB REXB=0 value=0x0*/ {71, 0,5,xed_encode_nonterminal_DISP_WIDTH_0_8_32_BIND},
2107 /*h(66)=16 BASE0=XED_REG_RAX  ->	FB RM=0 value=0x0 	FB REXB=0 value=0x0*/ {66, 0,0,0}
2108 };
2109 xed_uint64_t key = 0;
2110 xed_uint64_t hidx = 0;
2111 xed_uint64_t res = 1;
2112 key = xed_enc_lu_BASE0(xes);
2113 hidx = ((27*key % 433) % 17);
2114 if(lu_table[hidx].key == key) {
2115     if(lu_table[hidx].rexb >= 0) xed3_operand_set_rexb(xes,lu_table[hidx].rexb);
2116     xed3_operand_set_rm(xes,lu_table[hidx].rm);
2117     if(lu_table[hidx].ntptr0 != 0) res=(*lu_table[hidx].ntptr0)(xes);
2118     xed_encoder_request_iforms(xes)->x_MODRM_RM_ENCODE_EA64_SIB0=hidx+1;
2119     return res;
2120     return 1;
2121 }
2122 else{
2123     return 0;
2124 }
2125 }
xed_encode_nonterminal_VSIB_ENC_BIND(xed_encoder_request_t * xes)2126 xed_uint32_t xed_encode_nonterminal_VSIB_ENC_BIND(xed_encoder_request_t* xes)
2127 {
2128 typedef struct { xed_uint32_t emit;} lu_entry_t;
2129 static const lu_entry_t lu_table[1] = {
2130 /*h(0)=0 DUMMY=0 SIBBASE[bbb]=* SIBINDEX[iii]=* SIBSCALE[ss]=*  ->	emit ss_iii_bbb emit_type=letters nbits=8*/ {1}
2131 };
2132 xed_uint64_t key = 0;
2133 xed_uint64_t hidx = 0;
2134 key = xed_enc_lu_DUMMY(xes);
2135 hidx = key - 0;
2136 if(hidx == 0) {
2137     xed_encoder_request_iforms(xes)->x_VSIB_ENC=lu_table[hidx].emit;
2138     return 1;
2139 }
2140 else{
2141     return 0;
2142 }
2143 }
xed_encode_nonterminal_EVEX_REXB_ENC_BIND(xed_encoder_request_t * xes)2144 xed_uint32_t xed_encode_nonterminal_EVEX_REXB_ENC_BIND(xed_encoder_request_t* xes)
2145 {
2146 typedef struct {xed_uint32_t key; xed_int8_t error ;xed_uint32_t emit;} lu_entry_t;
2147 static const lu_entry_t lu_table[6] = {
2148 /*h(5)=0 MODE=1 REXB=1  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {5, XED_ERROR_GENERAL_ERROR,0},
2149 /*h(2)=1 MODE=2 REXB=0  ->	emit 0b1 emit_type=numeric value=0x1 nbits=1*/ {2, -1,2},
2150 /*empty slot1 */ {0,0,0},
2151 /*h(1)=3 MODE=1 REXB=0  ->	emit 0b1 emit_type=numeric value=0x1 nbits=1*/ {1, -1,4},
2152 /*h(6)=4 MODE=2 REXB=1  ->	emit 0b0 emit_type=numeric value=0x0 nbits=1*/ {6, -1,5},
2153 /*empty slot1 */ {0,0,0}
2154 };
2155 xed_union64_t t, u;
2156 xed_uint64_t key = 0;
2157 xed_uint64_t hidx = 0;
2158 key = xed_enc_lu_MODE_REXB(xes);
2159 hidx = (t.u64 = 2654435769  * key, u.u64 = t.s.lo32 * 6ULL, u.s.hi32);
2160 if(lu_table[hidx].key == key) {
2161     if(lu_table[hidx].error >= 0) xed3_operand_set_error(xes,lu_table[hidx].error);
2162     xed_encoder_request_iforms(xes)->x_EVEX_REXB_ENC=lu_table[hidx].emit;
2163     return 1;
2164 }
2165 else{
2166     return 0;
2167 }
2168 }
xed_encode_nonterminal_ESIZE_32_BITS_BIND(xed_encoder_request_t * xes)2169 xed_uint32_t xed_encode_nonterminal_ESIZE_32_BITS_BIND(xed_encoder_request_t* xes)
2170 {
2171 return 1;
2172 (void)xes;
2173 return 1;
2174 }
xed_encode_nonterminal_VEXED_REX_BIND(xed_encoder_request_t * xes)2175 xed_uint32_t xed_encode_nonterminal_VEXED_REX_BIND(xed_encoder_request_t* xes)
2176 {
2177 typedef struct { xed_nt_func_ptr_t ntptr0;} lu_entry_t;
2178 static const lu_entry_t lu_table[4] = {
2179 /*h(0)=0 VEXVALID=0  ->	nt NT[REX_PREFIX_ENC]*/ {xed_encode_nonterminal_REX_PREFIX_ENC_BIND},
2180 /*h(1)=1 VEXVALID=1  ->	nt NT[NEWVEX_ENC]*/ {xed_encode_nonterminal_NEWVEX_ENC_BIND},
2181 /*h(2)=2 VEXVALID=2  ->	nt NT[EVEX_ENC]*/ {xed_encode_nonterminal_EVEX_ENC_BIND},
2182 /*h(3)=3 VEXVALID=3  ->	nt NT[XOP_ENC]*/ {xed_encode_nonterminal_XOP_ENC_BIND}
2183 };
2184 xed_uint64_t key = 0;
2185 xed_uint64_t hidx = 0;
2186 xed_uint64_t res = 1;
2187 key = xed_enc_lu_VEXVALID(xes);
2188 hidx = key - 0;
2189 if(hidx <= 3) {
2190     if(lu_table[hidx].ntptr0 != 0) res=(*lu_table[hidx].ntptr0)(xes);
2191     xed_encoder_request_iforms(xes)->x_VEXED_REX=hidx+1;
2192     return res;
2193     return 1;
2194 }
2195 else{
2196     return 0;
2197 }
2198 }
xed_encode_nonterminal_VEX_REXXB_ENC_BIND(xed_encoder_request_t * xes)2199 xed_uint32_t xed_encode_nonterminal_VEX_REXXB_ENC_BIND(xed_encoder_request_t* xes)
2200 {
2201 typedef struct { xed_int8_t error ;xed_uint32_t emit;} lu_entry_t;
2202 static const lu_entry_t lu_table[16] = {
2203 /*h(16)=0 MODE!=2 VEX_C4=1 REXX=0 REXB=0  ->	emit 0b11 emit_type=numeric value=0x3 nbits=2*/ {-1,1},
2204 /*h(17)=1 MODE!=2 VEX_C4=1 REXX=0 REXB=0  ->	emit 0b11 emit_type=numeric value=0x3 nbits=2*/ {-1,1},
2205 /*h(18)=2 MODE=2 VEX_C4=1 REXX=0 REXB=0  ->	emit 0b11 emit_type=numeric value=0x3 nbits=2*/ {-1,3},
2206 /*h(19)=3 MODE!=2 VEX_C4=1 REXX=0 REXB=0  ->	emit 0b11 emit_type=numeric value=0x3 nbits=2*/ {-1,1},
2207 /*h(20)=4 MODE!=2 VEX_C4=1 REXX=0 REXB=1  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR,0},
2208 /*h(21)=5 MODE!=2 VEX_C4=1 REXX=0 REXB=1  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR,0},
2209 /*h(22)=6 MODE=2 VEX_C4=1 REXX=0 REXB=1  ->	emit 0b10 emit_type=numeric value=0x2 nbits=2*/ {-1,7},
2210 /*h(23)=7 MODE!=2 VEX_C4=1 REXX=0 REXB=1  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR,0},
2211 /*h(24)=8 MODE!=2 VEX_C4=1 REXX=1 REXB=0  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR,0},
2212 /*h(25)=9 MODE!=2 VEX_C4=1 REXX=1 REXB=0  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR,0},
2213 /*h(26)=10 MODE=2 VEX_C4=1 REXX=1 REXB=0  ->	emit 0b01 emit_type=numeric value=0x1 nbits=2*/ {-1,11},
2214 /*h(27)=11 MODE!=2 VEX_C4=1 REXX=1 REXB=0  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR,0},
2215 /*h(28)=12 MODE!=2 VEX_C4=1 REXX=1 REXB=1  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR,0},
2216 /*h(29)=13 MODE!=2 VEX_C4=1 REXX=1 REXB=1  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR,0},
2217 /*h(30)=14 MODE=2 VEX_C4=1 REXX=1 REXB=1  ->	emit 0b00 emit_type=numeric value=0x0 nbits=2*/ {-1,15},
2218 /*h(31)=15 MODE!=2 VEX_C4=1 REXX=1 REXB=1  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR,0}
2219 };
2220 xed_uint64_t key = 0;
2221 xed_uint64_t hidx = 0;
2222 key = xed_enc_lu_MODE_REXB_REXX_VEX_C4(xes);
2223 hidx = key - 16;
2224 if(hidx <= 15) {
2225     if(lu_table[hidx].error >= 0) xed3_operand_set_error(xes,lu_table[hidx].error);
2226     xed_encoder_request_iforms(xes)->x_VEX_REXXB_ENC=lu_table[hidx].emit;
2227     return 1;
2228 }
2229 else{
2230     return 1;
2231 }
2232 }
xed_encode_nonterminal_NELEM_HALF_BIND(xed_encoder_request_t * xes)2233 xed_uint32_t xed_encode_nonterminal_NELEM_HALF_BIND(xed_encoder_request_t* xes)
2234 {
2235 typedef struct { xed_int8_t bcrc;} lu_entry_t;
2236 static const lu_entry_t lu_table[31] = {
2237 /*h(1)=0 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
2238 /*h(2)=1 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
2239 /*h(3)=2 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
2240 /*h(4)=3 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
2241 /*h(5)=4 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
2242 /*h(6)=5 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
2243 /*h(7)=6 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
2244 /*h(8)=7 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
2245 /*h(9)=8 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
2246 /*h(10)=9 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
2247 /*h(11)=10 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
2248 /*h(12)=11 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
2249 /*h(13)=12 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
2250 /*h(14)=13 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
2251 /*h(15)=14 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
2252 /*h(16)=15 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
2253 /*h(17)=16 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
2254 /*h(18)=17 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
2255 /*h(19)=18 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
2256 /*h(20)=19 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
2257 /*h(21)=20 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
2258 /*h(22)=21 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
2259 /*h(23)=22 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
2260 /*h(24)=23 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
2261 /*h(25)=24 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
2262 /*h(26)=25 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
2263 /*h(27)=26 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
2264 /*h(28)=27 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
2265 /*h(29)=28 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
2266 /*h(30)=29 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1},
2267 /*h(31)=30 BCAST!=0  ->	FB BCRC=1 value=0x1*/ {1}
2268 };
2269 xed_uint64_t key = 0;
2270 xed_uint64_t hidx = 0;
2271 key = xed_enc_lu_BCAST(xes);
2272 hidx = key - 1;
2273 if(hidx <= 30) {
2274     xed3_operand_set_bcrc(xes,lu_table[hidx].bcrc);
2275     return 1;
2276 }
2277 else{
2278     xed3_operand_set_bcrc(xes,0);
2279     return 1;
2280 }
2281 }
xed_encode_nonterminal_EVEX_REXRR_ENC_BIND(xed_encoder_request_t * xes)2282 xed_uint32_t xed_encode_nonterminal_EVEX_REXRR_ENC_BIND(xed_encoder_request_t* xes)
2283 {
2284 typedef struct {xed_uint32_t key; xed_int8_t error ;xed_uint32_t emit;} lu_entry_t;
2285 static const lu_entry_t lu_table[6] = {
2286 /*h(5)=0 MODE=1 REXRR=1  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {5, XED_ERROR_GENERAL_ERROR,0},
2287 /*h(2)=1 MODE=2 REXRR=0  ->	emit 0b1 emit_type=numeric value=0x1 nbits=1*/ {2, -1,2},
2288 /*empty slot1 */ {0,0,0},
2289 /*h(1)=3 MODE=1 REXRR=0  ->	emit 0b1 emit_type=numeric value=0x1 nbits=1*/ {1, -1,4},
2290 /*h(6)=4 MODE=2 REXRR=1  ->	emit 0b0 emit_type=numeric value=0x0 nbits=1*/ {6, -1,5},
2291 /*empty slot1 */ {0,0,0}
2292 };
2293 xed_union64_t t, u;
2294 xed_uint64_t key = 0;
2295 xed_uint64_t hidx = 0;
2296 key = xed_enc_lu_MODE_REXRR(xes);
2297 hidx = (t.u64 = 2654435769  * key, u.u64 = t.s.lo32 * 6ULL, u.s.hi32);
2298 if(lu_table[hidx].key == key) {
2299     if(lu_table[hidx].error >= 0) xed3_operand_set_error(xes,lu_table[hidx].error);
2300     xed_encoder_request_iforms(xes)->x_EVEX_REXRR_ENC=lu_table[hidx].emit;
2301     return 1;
2302 }
2303 else{
2304     return 0;
2305 }
2306 }
xed_encode_nonterminal_AVX512_EVEX_BYTE3_ENC_BIND(xed_encoder_request_t * xes)2307 xed_uint32_t xed_encode_nonterminal_AVX512_EVEX_BYTE3_ENC_BIND(xed_encoder_request_t* xes)
2308 {
2309 typedef struct { xed_uint32_t emit;} lu_entry_t;
2310 static const lu_entry_t lu_table[2] = {
2311 /*h(0)=0 ZEROING[z]=* LLRC[nn]=* BCRC[b]=* VEXDEST4=0 MASK[aaa]=*  ->	emit z_nn_b emit_type=letters nbits=4 	emit 0b1 emit_type=numeric value=0x1 nbits=1 	emit aaa emit_type=letters nbits=3*/ {1},
2312 /*h(1)=1 ZEROING[z]=* LLRC[nn]=* BCRC[b]=* VEXDEST4=1 MASK[aaa]=*  ->	emit z_nn_b emit_type=letters nbits=4 	emit 0b0 emit_type=numeric value=0x0 nbits=1 	emit aaa emit_type=letters nbits=3*/ {2}
2313 };
2314 xed_uint64_t key = 0;
2315 xed_uint64_t hidx = 0;
2316 key = xed_enc_lu_VEXDEST4(xes);
2317 hidx = key - 0;
2318 if(hidx <= 1) {
2319     xed_encoder_request_iforms(xes)->x_AVX512_EVEX_BYTE3_ENC=lu_table[hidx].emit;
2320     return 1;
2321 }
2322 else{
2323     return 0;
2324 }
2325 }
xed_encode_nonterminal_EVEX_REXW_VVVV_ENC_BIND(xed_encoder_request_t * xes)2326 xed_uint32_t xed_encode_nonterminal_EVEX_REXW_VVVV_ENC_BIND(xed_encoder_request_t* xes)
2327 {
2328 typedef struct { xed_uint32_t emit;} lu_entry_t;
2329 static const lu_entry_t lu_table[1] = {
2330 /*h(0)=0 DUMMY=0 REXW[w]=* VEXDEST3[u]=* VEXDEST210[ddd]=*  ->	emit w emit_type=letters nbits=1 	emit u_ddd emit_type=letters nbits=4*/ {1}
2331 };
2332 xed_uint64_t key = 0;
2333 xed_uint64_t hidx = 0;
2334 key = xed_enc_lu_DUMMY(xes);
2335 hidx = key - 0;
2336 if(hidx == 0) {
2337     xed_encoder_request_iforms(xes)->x_EVEX_REXW_VVVV_ENC=lu_table[hidx].emit;
2338     return 1;
2339 }
2340 else{
2341     return 0;
2342 }
2343 }
xed_encode_nonterminal_DISP_WIDTH_8_BIND(xed_encoder_request_t * xes)2344 xed_uint32_t xed_encode_nonterminal_DISP_WIDTH_8_BIND(xed_encoder_request_t* xes)
2345 {
2346 xed_uint64_t key = 0;
2347 xed_uint64_t hidx = 0;
2348 key = xed_enc_lu_DISP_WIDTH(xes);
2349 hidx = key - 8;
2350 if(hidx == 0) {
2351     return 1;
2352 }
2353 else{
2354     return 0;
2355 }
2356 }
xed_encode_nonterminal_UISA_ENC_INDEX_YMM_BIND(xed_encoder_request_t * xes)2357 xed_uint32_t xed_encode_nonterminal_UISA_ENC_INDEX_YMM_BIND(xed_encoder_request_t* xes)
2358 {
2359 typedef struct { xed_int8_t rexx ;xed_int8_t sibindex ;xed_int8_t vexdest4;} lu_entry_t;
2360 static const lu_entry_t lu_table[32] = {
2361 /*h(210)=0 INDEX=XED_REG_YMM0  ->	FB VEXDEST4=0 value=0x0 	FB REXX=0 value=0x0 	FB SIBINDEX=0 value=0x0*/ {0,0,0},
2362 /*h(211)=1 INDEX=XED_REG_YMM1  ->	FB VEXDEST4=0 value=0x0 	FB REXX=0 value=0x0 	FB SIBINDEX=1 value=0x1*/ {0,1,0},
2363 /*h(212)=2 INDEX=XED_REG_YMM2  ->	FB VEXDEST4=0 value=0x0 	FB REXX=0 value=0x0 	FB SIBINDEX=2 value=0x2*/ {0,2,0},
2364 /*h(213)=3 INDEX=XED_REG_YMM3  ->	FB VEXDEST4=0 value=0x0 	FB REXX=0 value=0x0 	FB SIBINDEX=3 value=0x3*/ {0,3,0},
2365 /*h(214)=4 INDEX=XED_REG_YMM4  ->	FB VEXDEST4=0 value=0x0 	FB REXX=0 value=0x0 	FB SIBINDEX=4 value=0x4*/ {0,4,0},
2366 /*h(215)=5 INDEX=XED_REG_YMM5  ->	FB VEXDEST4=0 value=0x0 	FB REXX=0 value=0x0 	FB SIBINDEX=5 value=0x5*/ {0,5,0},
2367 /*h(216)=6 INDEX=XED_REG_YMM6  ->	FB VEXDEST4=0 value=0x0 	FB REXX=0 value=0x0 	FB SIBINDEX=6 value=0x6*/ {0,6,0},
2368 /*h(217)=7 INDEX=XED_REG_YMM7  ->	FB VEXDEST4=0 value=0x0 	FB REXX=0 value=0x0 	FB SIBINDEX=7 value=0x7*/ {0,7,0},
2369 /*h(218)=8 INDEX=XED_REG_YMM8  ->	FB VEXDEST4=0 value=0x0 	FB REXX=1 value=0x1 	FB SIBINDEX=0 value=0x0*/ {1,0,0},
2370 /*h(219)=9 INDEX=XED_REG_YMM9  ->	FB VEXDEST4=0 value=0x0 	FB REXX=1 value=0x1 	FB SIBINDEX=1 value=0x1*/ {1,1,0},
2371 /*h(220)=10 INDEX=XED_REG_YMM10  ->	FB VEXDEST4=0 value=0x0 	FB REXX=1 value=0x1 	FB SIBINDEX=2 value=0x2*/ {1,2,0},
2372 /*h(221)=11 INDEX=XED_REG_YMM11  ->	FB VEXDEST4=0 value=0x0 	FB REXX=1 value=0x1 	FB SIBINDEX=3 value=0x3*/ {1,3,0},
2373 /*h(222)=12 INDEX=XED_REG_YMM12  ->	FB VEXDEST4=0 value=0x0 	FB REXX=1 value=0x1 	FB SIBINDEX=4 value=0x4*/ {1,4,0},
2374 /*h(223)=13 INDEX=XED_REG_YMM13  ->	FB VEXDEST4=0 value=0x0 	FB REXX=1 value=0x1 	FB SIBINDEX=5 value=0x5*/ {1,5,0},
2375 /*h(224)=14 INDEX=XED_REG_YMM14  ->	FB VEXDEST4=0 value=0x0 	FB REXX=1 value=0x1 	FB SIBINDEX=6 value=0x6*/ {1,6,0},
2376 /*h(225)=15 INDEX=XED_REG_YMM15  ->	FB VEXDEST4=0 value=0x0 	FB REXX=1 value=0x1 	FB SIBINDEX=7 value=0x7*/ {1,7,0},
2377 /*h(226)=16 INDEX=XED_REG_YMM16  ->	FB VEXDEST4=1 value=0x1 	FB REXX=0 value=0x0 	FB SIBINDEX=0 value=0x0*/ {0,0,1},
2378 /*h(227)=17 INDEX=XED_REG_YMM17  ->	FB VEXDEST4=1 value=0x1 	FB REXX=0 value=0x0 	FB SIBINDEX=1 value=0x1*/ {0,1,1},
2379 /*h(228)=18 INDEX=XED_REG_YMM18  ->	FB VEXDEST4=1 value=0x1 	FB REXX=0 value=0x0 	FB SIBINDEX=2 value=0x2*/ {0,2,1},
2380 /*h(229)=19 INDEX=XED_REG_YMM19  ->	FB VEXDEST4=1 value=0x1 	FB REXX=0 value=0x0 	FB SIBINDEX=3 value=0x3*/ {0,3,1},
2381 /*h(230)=20 INDEX=XED_REG_YMM20  ->	FB VEXDEST4=1 value=0x1 	FB REXX=0 value=0x0 	FB SIBINDEX=4 value=0x4*/ {0,4,1},
2382 /*h(231)=21 INDEX=XED_REG_YMM21  ->	FB VEXDEST4=1 value=0x1 	FB REXX=0 value=0x0 	FB SIBINDEX=5 value=0x5*/ {0,5,1},
2383 /*h(232)=22 INDEX=XED_REG_YMM22  ->	FB VEXDEST4=1 value=0x1 	FB REXX=0 value=0x0 	FB SIBINDEX=6 value=0x6*/ {0,6,1},
2384 /*h(233)=23 INDEX=XED_REG_YMM23  ->	FB VEXDEST4=1 value=0x1 	FB REXX=0 value=0x0 	FB SIBINDEX=7 value=0x7*/ {0,7,1},
2385 /*h(234)=24 INDEX=XED_REG_YMM24  ->	FB VEXDEST4=1 value=0x1 	FB REXX=1 value=0x1 	FB SIBINDEX=0 value=0x0*/ {1,0,1},
2386 /*h(235)=25 INDEX=XED_REG_YMM25  ->	FB VEXDEST4=1 value=0x1 	FB REXX=1 value=0x1 	FB SIBINDEX=1 value=0x1*/ {1,1,1},
2387 /*h(236)=26 INDEX=XED_REG_YMM26  ->	FB VEXDEST4=1 value=0x1 	FB REXX=1 value=0x1 	FB SIBINDEX=2 value=0x2*/ {1,2,1},
2388 /*h(237)=27 INDEX=XED_REG_YMM27  ->	FB VEXDEST4=1 value=0x1 	FB REXX=1 value=0x1 	FB SIBINDEX=3 value=0x3*/ {1,3,1},
2389 /*h(238)=28 INDEX=XED_REG_YMM28  ->	FB VEXDEST4=1 value=0x1 	FB REXX=1 value=0x1 	FB SIBINDEX=4 value=0x4*/ {1,4,1},
2390 /*h(239)=29 INDEX=XED_REG_YMM29  ->	FB VEXDEST4=1 value=0x1 	FB REXX=1 value=0x1 	FB SIBINDEX=5 value=0x5*/ {1,5,1},
2391 /*h(240)=30 INDEX=XED_REG_YMM30  ->	FB VEXDEST4=1 value=0x1 	FB REXX=1 value=0x1 	FB SIBINDEX=6 value=0x6*/ {1,6,1},
2392 /*h(241)=31 INDEX=XED_REG_YMM31  ->	FB VEXDEST4=1 value=0x1 	FB REXX=1 value=0x1 	FB SIBINDEX=7 value=0x7*/ {1,7,1}
2393 };
2394 xed_uint64_t key = 0;
2395 xed_uint64_t hidx = 0;
2396 key = xed_enc_lu_INDEX(xes);
2397 hidx = key - 210;
2398 if(hidx <= 31) {
2399     xed3_operand_set_rexx(xes,lu_table[hidx].rexx);
2400     xed3_operand_set_sibindex(xes,lu_table[hidx].sibindex);
2401     xed3_operand_set_vexdest4(xes,lu_table[hidx].vexdest4);
2402     return 1;
2403 }
2404 else{
2405     return 0;
2406 }
2407 }
xed_encode_nonterminal_MODRM_MOD_EA32_DISP32_BIND(xed_encoder_request_t * xes)2408 xed_uint32_t xed_encode_nonterminal_MODRM_MOD_EA32_DISP32_BIND(xed_encoder_request_t* xes)
2409 {
2410 typedef struct {xed_uint32_t key; xed_int8_t mod;} lu_entry_t;
2411 static const lu_entry_t lu_table[228] = {
2412 /*h(0)=0 BASE0=@  ->	FB MOD=0 value=0x0*/ {0, 0},
2413 /*empty slot1 */ {0,0},
2414 /*h(7680)=2 BASE0=@  ->	FB MOD=0 value=0x0*/ {7680, 0},
2415 /*empty slot1 */ {0,0},
2416 /*empty slot1 */ {0,0},
2417 /*empty slot1 */ {0,0},
2418 /*empty slot1 */ {0,0},
2419 /*empty slot1 */ {0,0},
2420 /*empty slot1 */ {0,0},
2421 /*empty slot1 */ {0,0},
2422 /*empty slot1 */ {0,0},
2423 /*h(7168)=11 BASE0=@  ->	FB MOD=0 value=0x0*/ {7168, 0},
2424 /*empty slot1 */ {0,0},
2425 /*empty slot1 */ {0,0},
2426 /*empty slot1 */ {0,0},
2427 /*empty slot1 */ {0,0},
2428 /*empty slot1 */ {0,0},
2429 /*empty slot1 */ {0,0},
2430 /*empty slot1 */ {0,0},
2431 /*empty slot1 */ {0,0},
2432 /*h(6656)=20 BASE0=@  ->	FB MOD=0 value=0x0*/ {6656, 0},
2433 /*empty slot1 */ {0,0},
2434 /*empty slot1 */ {0,0},
2435 /*empty slot1 */ {0,0},
2436 /*empty slot1 */ {0,0},
2437 /*empty slot1 */ {0,0},
2438 /*empty slot1 */ {0,0},
2439 /*empty slot1 */ {0,0},
2440 /*empty slot1 */ {0,0},
2441 /*h(6144)=29 BASE0=@  ->	FB MOD=0 value=0x0*/ {6144, 0},
2442 /*empty slot1 */ {0,0},
2443 /*empty slot1 */ {0,0},
2444 /*empty slot1 */ {0,0},
2445 /*empty slot1 */ {0,0},
2446 /*empty slot1 */ {0,0},
2447 /*empty slot1 */ {0,0},
2448 /*empty slot1 */ {0,0},
2449 /*empty slot1 */ {0,0},
2450 /*h(5632)=38 BASE0=@  ->	FB MOD=0 value=0x0*/ {5632, 0},
2451 /*empty slot1 */ {0,0},
2452 /*empty slot1 */ {0,0},
2453 /*h(5735)=41 MODE=2 BASE0=XED_REG_RIP EASZ=3  ->	FB MOD=0 value=0x0*/ {5735, 0},
2454 /*empty slot1 */ {0,0},
2455 /*empty slot1 */ {0,0},
2456 /*empty slot1 */ {0,0},
2457 /*empty slot1 */ {0,0},
2458 /*empty slot1 */ {0,0},
2459 /*h(5120)=47 BASE0=@  ->	FB MOD=0 value=0x0*/ {5120, 0},
2460 /*empty slot1 */ {0,0},
2461 /*empty slot1 */ {0,0},
2462 /*empty slot1 */ {0,0},
2463 /*empty slot1 */ {0,0},
2464 /*empty slot1 */ {0,0},
2465 /*empty slot1 */ {0,0},
2466 /*empty slot1 */ {0,0},
2467 /*empty slot1 */ {0,0},
2468 /*h(4608)=56 BASE0=@  ->	FB MOD=0 value=0x0*/ {4608, 0},
2469 /*empty slot1 */ {0,0},
2470 /*h(5224)=58 MODE=2 BASE0=XED_REG_EIP EASZ=2  ->	FB MOD=0 value=0x0*/ {5224, 0},
2471 /*empty slot1 */ {0,0},
2472 /*empty slot1 */ {0,0},
2473 /*empty slot1 */ {0,0},
2474 /*empty slot1 */ {0,0},
2475 /*empty slot1 */ {0,0},
2476 /*empty slot1 */ {0,0},
2477 /*h(4096)=65 BASE0=@  ->	FB MOD=0 value=0x0*/ {4096, 0},
2478 /*empty slot1 */ {0,0},
2479 /*empty slot1 */ {0,0},
2480 /*empty slot1 */ {0,0},
2481 /*empty slot1 */ {0,0},
2482 /*empty slot1 */ {0,0},
2483 /*empty slot1 */ {0,0},
2484 /*empty slot1 */ {0,0},
2485 /*h(5682)=73 MODE=2 BASE0=XED_REG_EAX  ->	FB MOD=2 value=0x2*/ {5682, 2},
2486 /*h(3584)=74 BASE0=@  ->	FB MOD=0 value=0x0*/ {3584, 0},
2487 /*empty slot1 */ {0,0},
2488 /*empty slot1 */ {0,0},
2489 /*empty slot1 */ {0,0},
2490 /*empty slot1 */ {0,0},
2491 /*empty slot1 */ {0,0},
2492 /*empty slot1 */ {0,0},
2493 /*h(5683)=81 MODE=2 BASE0=XED_REG_ECX  ->	FB MOD=2 value=0x2*/ {5683, 2},
2494 /*h(5170)=82 MODE=2 BASE0=XED_REG_EAX  ->	FB MOD=2 value=0x2*/ {5170, 2},
2495 /*h(3072)=83 BASE0=@  ->	FB MOD=0 value=0x0*/ {3072, 0},
2496 /*empty slot1 */ {0,0},
2497 /*empty slot1 */ {0,0},
2498 /*empty slot1 */ {0,0},
2499 /*empty slot1 */ {0,0},
2500 /*empty slot1 */ {0,0},
2501 /*h(5684)=89 MODE=2 BASE0=XED_REG_EDX  ->	FB MOD=2 value=0x2*/ {5684, 2},
2502 /*h(5171)=90 MODE=2 BASE0=XED_REG_ECX  ->	FB MOD=2 value=0x2*/ {5171, 2},
2503 /*h(4658)=91 MODE=2 BASE0=XED_REG_EAX  ->	FB MOD=2 value=0x2*/ {4658, 2},
2504 /*h(2560)=92 BASE0=@  ->	FB MOD=0 value=0x0*/ {2560, 0},
2505 /*empty slot1 */ {0,0},
2506 /*empty slot1 */ {0,0},
2507 /*empty slot1 */ {0,0},
2508 /*empty slot1 */ {0,0},
2509 /*h(5685)=97 MODE=2 BASE0=XED_REG_EBX  ->	FB MOD=2 value=0x2*/ {5685, 2},
2510 /*h(5172)=98 MODE=2 BASE0=XED_REG_EDX  ->	FB MOD=2 value=0x2*/ {5172, 2},
2511 /*h(4659)=99 MODE=2 BASE0=XED_REG_ECX  ->	FB MOD=2 value=0x2*/ {4659, 2},
2512 /*h(4146)=100 MODE=2 BASE0=XED_REG_EAX  ->	FB MOD=2 value=0x2*/ {4146, 2},
2513 /*h(2048)=101 BASE0=@  ->	FB MOD=0 value=0x0*/ {2048, 0},
2514 /*empty slot1 */ {0,0},
2515 /*empty slot1 */ {0,0},
2516 /*empty slot1 */ {0,0},
2517 /*h(5686)=105 MODE=2 BASE0=XED_REG_ESP  ->	FB MOD=2 value=0x2*/ {5686, 2},
2518 /*h(5173)=106 MODE=2 BASE0=XED_REG_EBX  ->	FB MOD=2 value=0x2*/ {5173, 2},
2519 /*h(4660)=107 MODE=2 BASE0=XED_REG_EDX  ->	FB MOD=2 value=0x2*/ {4660, 2},
2520 /*h(4147)=108 MODE=2 BASE0=XED_REG_ECX  ->	FB MOD=2 value=0x2*/ {4147, 2},
2521 /*h(3634)=109 MODE=1 BASE0=XED_REG_EAX  ->	FB MOD=2 value=0x2*/ {3634, 2},
2522 /*h(1536)=110 BASE0=@  ->	FB MOD=0 value=0x0*/ {1536, 0},
2523 /*empty slot1 */ {0,0},
2524 /*empty slot1 */ {0,0},
2525 /*h(5687)=113 MODE=2 BASE0=XED_REG_EBP  ->	FB MOD=2 value=0x2*/ {5687, 2},
2526 /*h(5174)=114 MODE=2 BASE0=XED_REG_ESP  ->	FB MOD=2 value=0x2*/ {5174, 2},
2527 /*h(4661)=115 MODE=2 BASE0=XED_REG_EBX  ->	FB MOD=2 value=0x2*/ {4661, 2},
2528 /*h(4148)=116 MODE=2 BASE0=XED_REG_EDX  ->	FB MOD=2 value=0x2*/ {4148, 2},
2529 /*h(3635)=117 MODE=1 BASE0=XED_REG_ECX  ->	FB MOD=2 value=0x2*/ {3635, 2},
2530 /*h(3122)=118 MODE=1 BASE0=XED_REG_EAX  ->	FB MOD=2 value=0x2*/ {3122, 2},
2531 /*h(1024)=119 BASE0=@  ->	FB MOD=0 value=0x0*/ {1024, 0},
2532 /*empty slot1 */ {0,0},
2533 /*h(5688)=121 MODE=2 BASE0=XED_REG_ESI  ->	FB MOD=2 value=0x2*/ {5688, 2},
2534 /*h(5175)=122 MODE=2 BASE0=XED_REG_EBP  ->	FB MOD=2 value=0x2*/ {5175, 2},
2535 /*h(4662)=123 MODE=2 BASE0=XED_REG_ESP  ->	FB MOD=2 value=0x2*/ {4662, 2},
2536 /*h(4149)=124 MODE=2 BASE0=XED_REG_EBX  ->	FB MOD=2 value=0x2*/ {4149, 2},
2537 /*h(3636)=125 MODE=1 BASE0=XED_REG_EDX  ->	FB MOD=2 value=0x2*/ {3636, 2},
2538 /*h(3123)=126 MODE=1 BASE0=XED_REG_ECX  ->	FB MOD=2 value=0x2*/ {3123, 2},
2539 /*h(2610)=127 MODE=1 BASE0=XED_REG_EAX  ->	FB MOD=2 value=0x2*/ {2610, 2},
2540 /*h(512)=128 BASE0=@  ->	FB MOD=0 value=0x0*/ {512, 0},
2541 /*h(5689)=129 MODE=2 BASE0=XED_REG_EDI  ->	FB MOD=2 value=0x2*/ {5689, 2},
2542 /*h(5176)=130 MODE=2 BASE0=XED_REG_ESI  ->	FB MOD=2 value=0x2*/ {5176, 2},
2543 /*h(4663)=131 MODE=2 BASE0=XED_REG_EBP  ->	FB MOD=2 value=0x2*/ {4663, 2},
2544 /*h(4150)=132 MODE=2 BASE0=XED_REG_ESP  ->	FB MOD=2 value=0x2*/ {4150, 2},
2545 /*h(3637)=133 MODE=1 BASE0=XED_REG_EBX  ->	FB MOD=2 value=0x2*/ {3637, 2},
2546 /*h(3124)=134 MODE=1 BASE0=XED_REG_EDX  ->	FB MOD=2 value=0x2*/ {3124, 2},
2547 /*h(2611)=135 MODE=1 BASE0=XED_REG_ECX  ->	FB MOD=2 value=0x2*/ {2611, 2},
2548 /*h(2098)=136 MODE=1 BASE0=XED_REG_EAX  ->	FB MOD=2 value=0x2*/ {2098, 2},
2549 /*h(5690)=137 MODE=2 BASE0=XED_REG_R8D  ->	FB MOD=2 value=0x2*/ {5690, 2},
2550 /*h(5177)=138 MODE=2 BASE0=XED_REG_EDI  ->	FB MOD=2 value=0x2*/ {5177, 2},
2551 /*h(4664)=139 MODE=2 BASE0=XED_REG_ESI  ->	FB MOD=2 value=0x2*/ {4664, 2},
2552 /*h(4151)=140 MODE=2 BASE0=XED_REG_EBP  ->	FB MOD=2 value=0x2*/ {4151, 2},
2553 /*h(3638)=141 MODE=1 BASE0=XED_REG_ESP  ->	FB MOD=2 value=0x2*/ {3638, 2},
2554 /*h(3125)=142 MODE=1 BASE0=XED_REG_EBX  ->	FB MOD=2 value=0x2*/ {3125, 2},
2555 /*h(2612)=143 MODE=1 BASE0=XED_REG_EDX  ->	FB MOD=2 value=0x2*/ {2612, 2},
2556 /*h(2099)=144 MODE=1 BASE0=XED_REG_ECX  ->	FB MOD=2 value=0x2*/ {2099, 2},
2557 /*h(5691)=145 MODE=2 BASE0=XED_REG_R9D  ->	FB MOD=2 value=0x2*/ {5691, 2},
2558 /*h(5178)=146 MODE=2 BASE0=XED_REG_R8D  ->	FB MOD=2 value=0x2*/ {5178, 2},
2559 /*h(4665)=147 MODE=2 BASE0=XED_REG_EDI  ->	FB MOD=2 value=0x2*/ {4665, 2},
2560 /*h(4152)=148 MODE=2 BASE0=XED_REG_ESI  ->	FB MOD=2 value=0x2*/ {4152, 2},
2561 /*h(3639)=149 MODE=1 BASE0=XED_REG_EBP  ->	FB MOD=2 value=0x2*/ {3639, 2},
2562 /*h(3126)=150 MODE=1 BASE0=XED_REG_ESP  ->	FB MOD=2 value=0x2*/ {3126, 2},
2563 /*h(2613)=151 MODE=1 BASE0=XED_REG_EBX  ->	FB MOD=2 value=0x2*/ {2613, 2},
2564 /*h(2100)=152 MODE=1 BASE0=XED_REG_EDX  ->	FB MOD=2 value=0x2*/ {2100, 2},
2565 /*h(5692)=153 MODE=2 BASE0=XED_REG_R10D  ->	FB MOD=2 value=0x2*/ {5692, 2},
2566 /*h(5179)=154 MODE=2 BASE0=XED_REG_R9D  ->	FB MOD=2 value=0x2*/ {5179, 2},
2567 /*h(4666)=155 MODE=2 BASE0=XED_REG_R8D  ->	FB MOD=2 value=0x2*/ {4666, 2},
2568 /*h(4153)=156 MODE=2 BASE0=XED_REG_EDI  ->	FB MOD=2 value=0x2*/ {4153, 2},
2569 /*h(3640)=157 MODE=1 BASE0=XED_REG_ESI  ->	FB MOD=2 value=0x2*/ {3640, 2},
2570 /*h(3127)=158 MODE=1 BASE0=XED_REG_EBP  ->	FB MOD=2 value=0x2*/ {3127, 2},
2571 /*h(2614)=159 MODE=1 BASE0=XED_REG_ESP  ->	FB MOD=2 value=0x2*/ {2614, 2},
2572 /*h(2101)=160 MODE=1 BASE0=XED_REG_EBX  ->	FB MOD=2 value=0x2*/ {2101, 2},
2573 /*h(5693)=161 MODE=2 BASE0=XED_REG_R11D  ->	FB MOD=2 value=0x2*/ {5693, 2},
2574 /*h(5180)=162 MODE=2 BASE0=XED_REG_R10D  ->	FB MOD=2 value=0x2*/ {5180, 2},
2575 /*h(4667)=163 MODE=2 BASE0=XED_REG_R9D  ->	FB MOD=2 value=0x2*/ {4667, 2},
2576 /*h(4154)=164 MODE=2 BASE0=XED_REG_R8D  ->	FB MOD=2 value=0x2*/ {4154, 2},
2577 /*h(3641)=165 MODE=1 BASE0=XED_REG_EDI  ->	FB MOD=2 value=0x2*/ {3641, 2},
2578 /*h(3128)=166 MODE=1 BASE0=XED_REG_ESI  ->	FB MOD=2 value=0x2*/ {3128, 2},
2579 /*h(2615)=167 MODE=1 BASE0=XED_REG_EBP  ->	FB MOD=2 value=0x2*/ {2615, 2},
2580 /*h(2102)=168 MODE=1 BASE0=XED_REG_ESP  ->	FB MOD=2 value=0x2*/ {2102, 2},
2581 /*h(5694)=169 MODE=2 BASE0=XED_REG_R12D  ->	FB MOD=2 value=0x2*/ {5694, 2},
2582 /*h(5181)=170 MODE=2 BASE0=XED_REG_R11D  ->	FB MOD=2 value=0x2*/ {5181, 2},
2583 /*h(4668)=171 MODE=2 BASE0=XED_REG_R10D  ->	FB MOD=2 value=0x2*/ {4668, 2},
2584 /*h(4155)=172 MODE=2 BASE0=XED_REG_R9D  ->	FB MOD=2 value=0x2*/ {4155, 2},
2585 /*empty slot1 */ {0,0},
2586 /*h(3129)=174 MODE=1 BASE0=XED_REG_EDI  ->	FB MOD=2 value=0x2*/ {3129, 2},
2587 /*h(2616)=175 MODE=1 BASE0=XED_REG_ESI  ->	FB MOD=2 value=0x2*/ {2616, 2},
2588 /*h(2103)=176 MODE=1 BASE0=XED_REG_EBP  ->	FB MOD=2 value=0x2*/ {2103, 2},
2589 /*h(5695)=177 MODE=2 BASE0=XED_REG_R13D  ->	FB MOD=2 value=0x2*/ {5695, 2},
2590 /*h(5182)=178 MODE=2 BASE0=XED_REG_R12D  ->	FB MOD=2 value=0x2*/ {5182, 2},
2591 /*h(4669)=179 MODE=2 BASE0=XED_REG_R11D  ->	FB MOD=2 value=0x2*/ {4669, 2},
2592 /*h(4156)=180 MODE=2 BASE0=XED_REG_R10D  ->	FB MOD=2 value=0x2*/ {4156, 2},
2593 /*empty slot1 */ {0,0},
2594 /*empty slot1 */ {0,0},
2595 /*h(2617)=183 MODE=1 BASE0=XED_REG_EDI  ->	FB MOD=2 value=0x2*/ {2617, 2},
2596 /*h(2104)=184 MODE=1 BASE0=XED_REG_ESI  ->	FB MOD=2 value=0x2*/ {2104, 2},
2597 /*h(5696)=185 MODE=2 BASE0=XED_REG_R14D  ->	FB MOD=2 value=0x2*/ {5696, 2},
2598 /*h(5183)=186 MODE=2 BASE0=XED_REG_R13D  ->	FB MOD=2 value=0x2*/ {5183, 2},
2599 /*h(4670)=187 MODE=2 BASE0=XED_REG_R12D  ->	FB MOD=2 value=0x2*/ {4670, 2},
2600 /*h(4157)=188 MODE=2 BASE0=XED_REG_R11D  ->	FB MOD=2 value=0x2*/ {4157, 2},
2601 /*empty slot1 */ {0,0},
2602 /*empty slot1 */ {0,0},
2603 /*empty slot1 */ {0,0},
2604 /*h(2105)=192 MODE=1 BASE0=XED_REG_EDI  ->	FB MOD=2 value=0x2*/ {2105, 2},
2605 /*h(5697)=193 MODE=2 BASE0=XED_REG_R15D  ->	FB MOD=2 value=0x2*/ {5697, 2},
2606 /*h(5184)=194 MODE=2 BASE0=XED_REG_R14D  ->	FB MOD=2 value=0x2*/ {5184, 2},
2607 /*h(4671)=195 MODE=2 BASE0=XED_REG_R13D  ->	FB MOD=2 value=0x2*/ {4671, 2},
2608 /*h(4158)=196 MODE=2 BASE0=XED_REG_R12D  ->	FB MOD=2 value=0x2*/ {4158, 2},
2609 /*empty slot1 */ {0,0},
2610 /*empty slot1 */ {0,0},
2611 /*empty slot1 */ {0,0},
2612 /*empty slot1 */ {0,0},
2613 /*empty slot1 */ {0,0},
2614 /*h(5185)=202 MODE=2 BASE0=XED_REG_R15D  ->	FB MOD=2 value=0x2*/ {5185, 2},
2615 /*h(4672)=203 MODE=2 BASE0=XED_REG_R14D  ->	FB MOD=2 value=0x2*/ {4672, 2},
2616 /*h(4159)=204 MODE=2 BASE0=XED_REG_R13D  ->	FB MOD=2 value=0x2*/ {4159, 2},
2617 /*empty slot1 */ {0,0},
2618 /*empty slot1 */ {0,0},
2619 /*empty slot1 */ {0,0},
2620 /*empty slot1 */ {0,0},
2621 /*empty slot1 */ {0,0},
2622 /*empty slot1 */ {0,0},
2623 /*h(4673)=211 MODE=2 BASE0=XED_REG_R15D  ->	FB MOD=2 value=0x2*/ {4673, 2},
2624 /*h(4160)=212 MODE=2 BASE0=XED_REG_R14D  ->	FB MOD=2 value=0x2*/ {4160, 2},
2625 /*empty slot1 */ {0,0},
2626 /*empty slot1 */ {0,0},
2627 /*empty slot1 */ {0,0},
2628 /*empty slot1 */ {0,0},
2629 /*empty slot1 */ {0,0},
2630 /*empty slot1 */ {0,0},
2631 /*empty slot1 */ {0,0},
2632 /*h(4161)=220 MODE=2 BASE0=XED_REG_R15D  ->	FB MOD=2 value=0x2*/ {4161, 2},
2633 /*empty slot1 */ {0,0},
2634 /*empty slot1 */ {0,0},
2635 /*empty slot1 */ {0,0},
2636 /*empty slot1 */ {0,0},
2637 /*empty slot1 */ {0,0},
2638 /*empty slot1 */ {0,0},
2639 /*empty slot1 */ {0,0}
2640 };
2641 xed_uint64_t key = 0;
2642 xed_uint64_t hidx = 0;
2643 key = xed_enc_lu_BASE0_EASZ_MODE(xes);
2644 hidx = ((8*key % 821) % 228);
2645 if(lu_table[hidx].key == key) {
2646     xed3_operand_set_mod(xes,lu_table[hidx].mod);
2647     return 1;
2648 }
2649 else{
2650     return 0;
2651 }
2652 }
xed_encode_nonterminal_BND_R_CHECK_BIND(xed_encoder_request_t * xes)2653 xed_uint32_t xed_encode_nonterminal_BND_R_CHECK_BIND(xed_encoder_request_t* xes)
2654 {
2655 typedef struct { xed_int8_t error;} lu_entry_t;
2656 static const lu_entry_t lu_table[16] = {
2657 /*h(0)=0 REXR=0 REG=0x0  ->	nothing*/ {-1},
2658 /*h(1)=1 REXR=0 REG=0x1  ->	nothing*/ {-1},
2659 /*h(2)=2 REXR=0 REG=0x2  ->	nothing*/ {-1},
2660 /*h(3)=3 REXR=0 REG=0x3  ->	nothing*/ {-1},
2661 /*h(4)=4 REXR=0 REG=0x4  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
2662 /*h(5)=5 REXR=0 REG=0x5  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
2663 /*h(6)=6 REXR=0 REG=0x6  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
2664 /*h(7)=7 REXR=0 REG=0x7  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
2665 /*h(8)=8 REXR=1 REG=0x0  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
2666 /*h(9)=9 REXR=1 REG=0x1  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
2667 /*h(10)=10 REXR=1 REG=0x2  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
2668 /*h(11)=11 REXR=1 REG=0x3  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
2669 /*h(12)=12 REXR=1 REG=0x4  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
2670 /*h(13)=13 REXR=1 REG=0x5  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
2671 /*h(14)=14 REXR=1 REG=0x6  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
2672 /*h(15)=15 REXR=1 REG=0x7  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR}
2673 };
2674 xed_uint64_t key = 0;
2675 xed_uint64_t hidx = 0;
2676 key = xed_enc_lu_REG_REXR(xes);
2677 hidx = key - 0;
2678 if(hidx <= 15) {
2679     if(lu_table[hidx].error >= 0) xed3_operand_set_error(xes,lu_table[hidx].error);
2680     return 1;
2681 }
2682 else{
2683     return 0;
2684 }
2685 }
xed_encode_nonterminal_VSIB_ENC_INDEX_YMM_BIND(xed_encoder_request_t * xes)2686 xed_uint32_t xed_encode_nonterminal_VSIB_ENC_INDEX_YMM_BIND(xed_encoder_request_t* xes)
2687 {
2688 typedef struct { xed_int8_t rexx ;xed_int8_t sibindex;} lu_entry_t;
2689 static const lu_entry_t lu_table[16] = {
2690 /*h(210)=0 INDEX=XED_REG_YMM0  ->	FB REXX=0 value=0x0 	FB SIBINDEX=0 value=0x0*/ {0,0},
2691 /*h(211)=1 INDEX=XED_REG_YMM1  ->	FB REXX=0 value=0x0 	FB SIBINDEX=1 value=0x1*/ {0,1},
2692 /*h(212)=2 INDEX=XED_REG_YMM2  ->	FB REXX=0 value=0x0 	FB SIBINDEX=2 value=0x2*/ {0,2},
2693 /*h(213)=3 INDEX=XED_REG_YMM3  ->	FB REXX=0 value=0x0 	FB SIBINDEX=3 value=0x3*/ {0,3},
2694 /*h(214)=4 INDEX=XED_REG_YMM4  ->	FB REXX=0 value=0x0 	FB SIBINDEX=4 value=0x4*/ {0,4},
2695 /*h(215)=5 INDEX=XED_REG_YMM5  ->	FB REXX=0 value=0x0 	FB SIBINDEX=5 value=0x5*/ {0,5},
2696 /*h(216)=6 INDEX=XED_REG_YMM6  ->	FB REXX=0 value=0x0 	FB SIBINDEX=6 value=0x6*/ {0,6},
2697 /*h(217)=7 INDEX=XED_REG_YMM7  ->	FB REXX=0 value=0x0 	FB SIBINDEX=7 value=0x7*/ {0,7},
2698 /*h(218)=8 INDEX=XED_REG_YMM8  ->	FB REXX=1 value=0x1 	FB SIBINDEX=0 value=0x0*/ {1,0},
2699 /*h(219)=9 INDEX=XED_REG_YMM9  ->	FB REXX=1 value=0x1 	FB SIBINDEX=1 value=0x1*/ {1,1},
2700 /*h(220)=10 INDEX=XED_REG_YMM10  ->	FB REXX=1 value=0x1 	FB SIBINDEX=2 value=0x2*/ {1,2},
2701 /*h(221)=11 INDEX=XED_REG_YMM11  ->	FB REXX=1 value=0x1 	FB SIBINDEX=3 value=0x3*/ {1,3},
2702 /*h(222)=12 INDEX=XED_REG_YMM12  ->	FB REXX=1 value=0x1 	FB SIBINDEX=4 value=0x4*/ {1,4},
2703 /*h(223)=13 INDEX=XED_REG_YMM13  ->	FB REXX=1 value=0x1 	FB SIBINDEX=5 value=0x5*/ {1,5},
2704 /*h(224)=14 INDEX=XED_REG_YMM14  ->	FB REXX=1 value=0x1 	FB SIBINDEX=6 value=0x6*/ {1,6},
2705 /*h(225)=15 INDEX=XED_REG_YMM15  ->	FB REXX=1 value=0x1 	FB SIBINDEX=7 value=0x7*/ {1,7}
2706 };
2707 xed_uint64_t key = 0;
2708 xed_uint64_t hidx = 0;
2709 key = xed_enc_lu_INDEX(xes);
2710 hidx = key - 210;
2711 if(hidx <= 15) {
2712     xed3_operand_set_rexx(xes,lu_table[hidx].rexx);
2713     xed3_operand_set_sibindex(xes,lu_table[hidx].sibindex);
2714     return 1;
2715 }
2716 else{
2717     return 0;
2718 }
2719 }
xed_encode_nonterminal_NELEM_TUPLE1_BYTE_BIND(xed_encoder_request_t * xes)2720 xed_uint32_t xed_encode_nonterminal_NELEM_TUPLE1_BYTE_BIND(xed_encoder_request_t* xes)
2721 {
2722 return 1;
2723 (void)xes;
2724 return 1;
2725 }
xed_encode_nonterminal_MODRM_RM_ENCODE_EA16_SIB0_BIND(xed_encoder_request_t * xes)2726 xed_uint32_t xed_encode_nonterminal_MODRM_RM_ENCODE_EA16_SIB0_BIND(xed_encoder_request_t* xes)
2727 {
2728 typedef struct {xed_uint32_t key; xed_int8_t rm ;xed_nt_func_ptr_t ntptr0;} lu_entry_t;
2729 static const lu_entry_t lu_table[9] = {
2730 /*h(0)=0 BASE0=@ INDEX=@  ->	nt NT[DISP_WIDTH_16] 	FB RM=6 value=0x6*/ {0, 6,xed_encode_nonterminal_DISP_WIDTH_16_BIND},
2731 /*h(39)=1 BASE0=XED_REG_BP INDEX=@  ->	nt NT[DISP_WIDTH_0_8_16] 	FB RM=6 value=0x6*/ {39, 6,xed_encode_nonterminal_DISP_WIDTH_0_8_16_BIND},
2732 /*h(40)=2 BASE0=XED_REG_SI INDEX=@  ->	FB RM=4 value=0x4*/ {40, 4,0},
2733 /*h(41)=3 BASE0=XED_REG_DI INDEX=@  ->	FB RM=5 value=0x5*/ {41, 5,0},
2734 /*h(21029)=4 BASE0=XED_REG_BX INDEX=XED_REG_DI  ->	FB RM=1 value=0x1*/ {21029, 1,0},
2735 /*h(20517)=5 BASE0=XED_REG_BX INDEX=XED_REG_SI  ->	FB RM=0 value=0x0*/ {20517, 0,0},
2736 /*h(21031)=6 BASE0=XED_REG_BP INDEX=XED_REG_DI  ->	FB RM=3 value=0x3*/ {21031, 3,0},
2737 /*h(20519)=7 BASE0=XED_REG_BP INDEX=XED_REG_SI  ->	FB RM=2 value=0x2*/ {20519, 2,0},
2738 /*h(37)=8 BASE0=XED_REG_BX INDEX=@  ->	FB RM=7 value=0x7*/ {37, 7,0}
2739 };
2740 xed_uint64_t key = 0;
2741 xed_uint64_t hidx = 0;
2742 xed_uint64_t res = 1;
2743 key = xed_enc_lu_BASE0_INDEX(xes);
2744 hidx = ((30*key % 29) % 9);
2745 if(lu_table[hidx].key == key) {
2746     xed3_operand_set_rm(xes,lu_table[hidx].rm);
2747     if(lu_table[hidx].ntptr0 != 0) res=(*lu_table[hidx].ntptr0)(xes);
2748     xed_encoder_request_iforms(xes)->x_MODRM_RM_ENCODE_EA16_SIB0=hidx+1;
2749     return res;
2750     return 1;
2751 }
2752 else{
2753     return 0;
2754 }
2755 }
xed_encode_nonterminal_FIXUP_EOSZ_ENC_BIND(xed_encoder_request_t * xes)2756 xed_uint32_t xed_encode_nonterminal_FIXUP_EOSZ_ENC_BIND(xed_encoder_request_t* xes)
2757 {
2758 typedef struct {xed_uint32_t key; xed_int8_t eosz;} lu_entry_t;
2759 static const lu_entry_t lu_table[3] = {
2760 /*h(0)=0 MODE=0 EOSZ=0  ->	FB EOSZ=1 value=0x1*/ {0, 1},
2761 /*h(4)=1 MODE=1 EOSZ=0  ->	FB EOSZ=2 value=0x2*/ {4, 2},
2762 /*h(8)=2 MODE=2 EOSZ=0  ->	FB EOSZ=2 value=0x2*/ {8, 2}
2763 };
2764 xed_union64_t t, u;
2765 xed_uint64_t key = 0;
2766 xed_uint64_t hidx = 0;
2767 key = xed_enc_lu_EOSZ_MODE(xes);
2768 hidx = (t.u64 = 2654435769  * key, u.u64 = t.s.lo32 * 3ULL, u.s.hi32);
2769 if(lu_table[hidx].key == key) {
2770     xed3_operand_set_eosz(xes,lu_table[hidx].eosz);
2771     return 1;
2772 }
2773 else{
2774     return 1;
2775 }
2776 }
xed_encode_nonterminal_SEGMENT_DEFAULT_ENCODE_BIND(xed_encoder_request_t * xes)2777 xed_uint32_t xed_encode_nonterminal_SEGMENT_DEFAULT_ENCODE_BIND(xed_encoder_request_t* xes)
2778 {
2779 typedef struct {xed_uint32_t key; xed_int8_t default_seg;} lu_entry_t;
2780 static const lu_entry_t lu_table[108] = {
2781 /*h(0)=0 BASE0=@  ->	FB DEFAULT_SEG=0 value=0x0*/ {0, 0},
2782 /*empty slot1 */ {0,0},
2783 /*h(1078)=2 BASE0=XED_REG_ESP EASZ=2  ->	FB DEFAULT_SEG=1 value=0x1*/ {1078, 1},
2784 /*h(1617)=3 BASE0=XED_REG_R15 EASZ=3  ->	FB DEFAULT_SEG=0 value=0x0*/ {1617, 0},
2785 /*h(1083)=4 BASE0=XED_REG_R9D EASZ=2  ->	FB DEFAULT_SEG=0 value=0x0*/ {1083, 0},
2786 /*empty slot1 */ {0,0},
2787 /*empty slot1 */ {0,0},
2788 /*h(1602)=7 BASE0=XED_REG_RAX EASZ=3  ->	FB DEFAULT_SEG=0 value=0x0*/ {1602, 0},
2789 /*empty slot1 */ {0,0},
2790 /*h(1607)=9 BASE0=XED_REG_RBP EASZ=3  ->	FB DEFAULT_SEG=1 value=0x1*/ {1607, 1},
2791 /*h(547)=10 BASE0=XED_REG_CX EASZ=1  ->	FB DEFAULT_SEG=0 value=0x0*/ {547, 0},
2792 /*h(1086)=11 BASE0=XED_REG_R12D EASZ=2  ->	FB DEFAULT_SEG=0 value=0x0*/ {1086, 0},
2793 /*h(552)=12 BASE0=XED_REG_SI EASZ=1  ->	FB DEFAULT_SEG=0 value=0x0*/ {552, 0},
2794 /*empty slot1 */ {0,0},
2795 /*empty slot1 */ {0,0},
2796 /*empty slot1 */ {0,0},
2797 /*h(1610)=16 BASE0=XED_REG_R8 EASZ=3  ->	FB DEFAULT_SEG=0 value=0x0*/ {1610, 0},
2798 /*h(1076)=17 BASE0=XED_REG_EDX EASZ=2  ->	FB DEFAULT_SEG=0 value=0x0*/ {1076, 0},
2799 /*h(1615)=18 BASE0=XED_REG_R13 EASZ=3  ->	FB DEFAULT_SEG=0 value=0x0*/ {1615, 0},
2800 /*h(555)=19 BASE0=XED_REG_R9W EASZ=1  ->	FB DEFAULT_SEG=0 value=0x0*/ {555, 0},
2801 /*empty slot1 */ {0,0},
2802 /*h(560)=21 BASE0=XED_REG_R14W EASZ=1  ->	FB DEFAULT_SEG=0 value=0x0*/ {560, 0},
2803 /*empty slot1 */ {0,0},
2804 /*empty slot1 */ {0,0},
2805 /*h(1079)=24 BASE0=XED_REG_EBP EASZ=2  ->	FB DEFAULT_SEG=1 value=0x1*/ {1079, 1},
2806 /*empty slot1 */ {0,0},
2807 /*h(1084)=26 BASE0=XED_REG_R10D EASZ=2  ->	FB DEFAULT_SEG=0 value=0x0*/ {1084, 0},
2808 /*empty slot1 */ {0,0},
2809 /*empty slot1 */ {0,0},
2810 /*h(1603)=29 BASE0=XED_REG_RCX EASZ=3  ->	FB DEFAULT_SEG=0 value=0x0*/ {1603, 0},
2811 /*empty slot1 */ {0,0},
2812 /*h(1608)=31 BASE0=XED_REG_RSI EASZ=3  ->	FB DEFAULT_SEG=0 value=0x0*/ {1608, 0},
2813 /*h(548)=32 BASE0=XED_REG_DX EASZ=1  ->	FB DEFAULT_SEG=0 value=0x0*/ {548, 0},
2814 /*h(1087)=33 BASE0=XED_REG_R13D EASZ=2  ->	FB DEFAULT_SEG=0 value=0x0*/ {1087, 0},
2815 /*h(553)=34 BASE0=XED_REG_DI EASZ=1  ->	FB DEFAULT_SEG=0 value=0x0*/ {553, 0},
2816 /*empty slot1 */ {0,0},
2817 /*empty slot1 */ {0,0},
2818 /*empty slot1 */ {0,0},
2819 /*h(1611)=38 BASE0=XED_REG_R9 EASZ=3  ->	FB DEFAULT_SEG=0 value=0x0*/ {1611, 0},
2820 /*h(1077)=39 BASE0=XED_REG_EBX EASZ=2  ->	FB DEFAULT_SEG=0 value=0x0*/ {1077, 0},
2821 /*h(1616)=40 BASE0=XED_REG_R14 EASZ=3  ->	FB DEFAULT_SEG=0 value=0x0*/ {1616, 0},
2822 /*h(556)=41 BASE0=XED_REG_R10W EASZ=1  ->	FB DEFAULT_SEG=0 value=0x0*/ {556, 0},
2823 /*h(1024)=42 BASE0=@  ->	FB DEFAULT_SEG=0 value=0x0*/ {1024, 0},
2824 /*h(561)=43 BASE0=XED_REG_R15W EASZ=1  ->	FB DEFAULT_SEG=0 value=0x0*/ {561, 0},
2825 /*empty slot1 */ {0,0},
2826 /*h(1639)=45 BASE0=XED_REG_RIP EASZ=3  ->	nothing*/ {1639, -1},
2827 /*h(1080)=46 BASE0=XED_REG_ESI EASZ=2  ->	FB DEFAULT_SEG=0 value=0x0*/ {1080, 0},
2828 /*h(546)=47 BASE0=XED_REG_AX EASZ=1  ->	FB DEFAULT_SEG=0 value=0x0*/ {546, 0},
2829 /*h(1085)=48 BASE0=XED_REG_R11D EASZ=2  ->	FB DEFAULT_SEG=0 value=0x0*/ {1085, 0},
2830 /*empty slot1 */ {0,0},
2831 /*empty slot1 */ {0,0},
2832 /*h(1604)=51 BASE0=XED_REG_RDX EASZ=3  ->	FB DEFAULT_SEG=0 value=0x0*/ {1604, 0},
2833 /*empty slot1 */ {0,0},
2834 /*h(1609)=53 BASE0=XED_REG_RDI EASZ=3  ->	FB DEFAULT_SEG=0 value=0x0*/ {1609, 0},
2835 /*h(549)=54 BASE0=XED_REG_BX EASZ=1  ->	FB DEFAULT_SEG=0 value=0x0*/ {549, 0},
2836 /*h(1088)=55 BASE0=XED_REG_R14D EASZ=2  ->	FB DEFAULT_SEG=0 value=0x0*/ {1088, 0},
2837 /*h(554)=56 BASE0=XED_REG_R8W EASZ=1  ->	FB DEFAULT_SEG=0 value=0x0*/ {554, 0},
2838 /*empty slot1 */ {0,0},
2839 /*h(1536)=58 BASE0=@  ->	FB DEFAULT_SEG=0 value=0x0*/ {1536, 0},
2840 /*empty slot1 */ {0,0},
2841 /*h(1612)=60 BASE0=XED_REG_R10 EASZ=3  ->	FB DEFAULT_SEG=0 value=0x0*/ {1612, 0},
2842 /*empty slot1 */ {0,0},
2843 /*empty slot1 */ {0,0},
2844 /*h(557)=63 BASE0=XED_REG_R11W EASZ=1  ->	FB DEFAULT_SEG=0 value=0x0*/ {557, 0},
2845 /*empty slot1 */ {0,0},
2846 /*empty slot1 */ {0,0},
2847 /*empty slot1 */ {0,0},
2848 /*empty slot1 */ {0,0},
2849 /*h(1081)=68 BASE0=XED_REG_EDI EASZ=2  ->	FB DEFAULT_SEG=0 value=0x0*/ {1081, 0},
2850 /*empty slot1 */ {0,0},
2851 /*empty slot1 */ {0,0},
2852 /*empty slot1 */ {0,0},
2853 /*empty slot1 */ {0,0},
2854 /*h(1605)=73 BASE0=XED_REG_RBX EASZ=3  ->	FB DEFAULT_SEG=0 value=0x0*/ {1605, 0},
2855 /*empty slot1 */ {0,0},
2856 /*h(512)=75 BASE0=@  ->	FB DEFAULT_SEG=0 value=0x0*/ {512, 0},
2857 /*h(550)=76 BASE0=XED_REG_SP EASZ=1  ->	FB DEFAULT_SEG=1 value=0x1*/ {550, 1},
2858 /*h(1089)=77 BASE0=XED_REG_R15D EASZ=2  ->	FB DEFAULT_SEG=0 value=0x0*/ {1089, 0},
2859 /*empty slot1 */ {0,0},
2860 /*empty slot1 */ {0,0},
2861 /*empty slot1 */ {0,0},
2862 /*h(1074)=81 BASE0=XED_REG_EAX EASZ=2  ->	FB DEFAULT_SEG=0 value=0x0*/ {1074, 0},
2863 /*h(1613)=82 BASE0=XED_REG_R11 EASZ=3  ->	FB DEFAULT_SEG=0 value=0x0*/ {1613, 0},
2864 /*empty slot1 */ {0,0},
2865 /*empty slot1 */ {0,0},
2866 /*h(558)=85 BASE0=XED_REG_R12W EASZ=1  ->	FB DEFAULT_SEG=0 value=0x0*/ {558, 0},
2867 /*empty slot1 */ {0,0},
2868 /*empty slot1 */ {0,0},
2869 /*empty slot1 */ {0,0},
2870 /*empty slot1 */ {0,0},
2871 /*h(1082)=90 BASE0=XED_REG_R8D EASZ=2  ->	FB DEFAULT_SEG=0 value=0x0*/ {1082, 0},
2872 /*empty slot1 */ {0,0},
2873 /*empty slot1 */ {0,0},
2874 /*empty slot1 */ {0,0},
2875 /*empty slot1 */ {0,0},
2876 /*h(1606)=95 BASE0=XED_REG_RSP EASZ=3  ->	FB DEFAULT_SEG=1 value=0x1*/ {1606, 1},
2877 /*empty slot1 */ {0,0},
2878 /*empty slot1 */ {0,0},
2879 /*h(551)=98 BASE0=XED_REG_BP EASZ=1  ->	FB DEFAULT_SEG=1 value=0x1*/ {551, 1},
2880 /*empty slot1 */ {0,0},
2881 /*h(1128)=100 BASE0=XED_REG_EIP EASZ=2  ->	nothing*/ {1128, -1},
2882 /*empty slot1 */ {0,0},
2883 /*empty slot1 */ {0,0},
2884 /*h(1075)=103 BASE0=XED_REG_ECX EASZ=2  ->	FB DEFAULT_SEG=0 value=0x0*/ {1075, 0},
2885 /*h(1614)=104 BASE0=XED_REG_R12 EASZ=3  ->	FB DEFAULT_SEG=0 value=0x0*/ {1614, 0},
2886 /*empty slot1 */ {0,0},
2887 /*empty slot1 */ {0,0},
2888 /*h(559)=107 BASE0=XED_REG_R13W EASZ=1  ->	FB DEFAULT_SEG=0 value=0x0*/ {559, 0}
2889 };
2890 xed_uint64_t key = 0;
2891 xed_uint64_t hidx = 0;
2892 key = xed_enc_lu_BASE0_EASZ(xes);
2893 hidx = ((22*key % 167) % 108);
2894 if(lu_table[hidx].key == key) {
2895     if(lu_table[hidx].default_seg >= 0) xed3_operand_set_default_seg(xes,lu_table[hidx].default_seg);
2896     return 1;
2897 }
2898 else{
2899     return 0;
2900 }
2901 }
xed_encode_nonterminal_NELEM_QUARTERMEM_BIND(xed_encoder_request_t * xes)2902 xed_uint32_t xed_encode_nonterminal_NELEM_QUARTERMEM_BIND(xed_encoder_request_t* xes)
2903 {
2904 return 1;
2905 (void)xes;
2906 return 1;
2907 }
xed_encode_nonterminal_REMOVE_SEGMENT_AGEN1_BIND(xed_encoder_request_t * xes)2908 xed_uint32_t xed_encode_nonterminal_REMOVE_SEGMENT_AGEN1_BIND(xed_encoder_request_t* xes)
2909 {
2910 typedef struct {xed_uint32_t key; xed_int8_t error;} lu_entry_t;
2911 static const lu_entry_t lu_table[12] = {
2912 /*h(0)=0 SEG0=@  ->	nothing*/ {0, -1},
2913 /*h(149)=1 SEG0=XED_REG_ES  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {149, XED_ERROR_GENERAL_ERROR},
2914 /*empty slot1 */ {0,0},
2915 /*h(151)=3 SEG0=XED_REG_FS  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {151, XED_ERROR_GENERAL_ERROR},
2916 /*empty slot1 */ {0,0},
2917 /*h(148)=5 SEG0=XED_REG_DS  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {148, XED_ERROR_GENERAL_ERROR},
2918 /*empty slot1 */ {0,0},
2919 /*empty slot1 */ {0,0},
2920 /*h(150)=8 SEG0=XED_REG_SS  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {150, XED_ERROR_GENERAL_ERROR},
2921 /*empty slot1 */ {0,0},
2922 /*h(147)=10 SEG0=XED_REG_CS  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {147, XED_ERROR_GENERAL_ERROR},
2923 /*h(152)=11 SEG0=XED_REG_GS  ->	FB ERROR=XED_ERROR_GENERAL_ERROR*/ {152, XED_ERROR_GENERAL_ERROR}
2924 };
2925 xed_union64_t t, u;
2926 xed_uint64_t key = 0;
2927 xed_uint64_t hidx = 0;
2928 key = xed_enc_lu_SEG0(xes);
2929 hidx = (t.u64 = 2654435769  * key, u.u64 = t.s.lo32 * 12ULL, u.s.hi32);
2930 if(lu_table[hidx].key == key) {
2931     if(lu_table[hidx].error >= 0) xed3_operand_set_error(xes,lu_table[hidx].error);
2932     return 1;
2933 }
2934 else{
2935     return 0;
2936 }
2937 }
xed_encode_nonterminal_DISP_NT_BIND(xed_encoder_request_t * xes)2938 xed_uint32_t xed_encode_nonterminal_DISP_NT_BIND(xed_encoder_request_t* xes)
2939 {
2940 typedef struct {xed_uint32_t key; xed_uint32_t emit;} lu_entry_t;
2941 static const lu_entry_t lu_table[4] = {
2942 /*h(8)=0 DISP_WIDTH=8 DISP[dddddddd]=*  ->	emit dddddddd emit_type=letters nbits=8*/ {8, 1},
2943 /*h(32)=1 DISP_WIDTH=32 DISP[dddddddddddddddddddddddddddddddd]=*  ->	emit dddddddddddddddddddddddddddddddd emit_type=letters nbits=32*/ {32, 2},
2944 /*h(64)=2 DISP_WIDTH=64 DISP[dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd]=*  ->	emit dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd emit_type=letters nbits=64*/ {64, 3},
2945 /*h(16)=3 DISP_WIDTH=16 DISP[dddddddddddddddd]=*  ->	emit dddddddddddddddd emit_type=letters nbits=16*/ {16, 4}
2946 };
2947 xed_uint64_t key = 0;
2948 xed_uint64_t hidx = 0;
2949 key = xed_enc_lu_DISP_WIDTH(xes);
2950 hidx = ((3*key % 5) % 4);
2951 if(lu_table[hidx].key == key) {
2952     xed_encoder_request_iforms(xes)->x_DISP_NT=lu_table[hidx].emit;
2953     return 1;
2954 }
2955 else{
2956     return 1;
2957 }
2958 }
2959